1 引言
普通的計算機一般都配有并行接口(就是通常用的打印機接口),它是通過25芯的D型接頭連接打印機與計算機的,計算機的并行接口不僅可以向打印機發送數據,還可以從打印機接收數據(打印的工作狀態)。因此,利用計算機的并行接口,你可以去控制外部繼電器的吸合,從而控制外部設備,同樣可以利用它來檢測外部設備的狀態。不需添加任何硬件。從而使一臺普通的計算機具有">

小视频免费在线观看_夜夜b_男女隐私免费视频_国产一级性生活视频_久久综合入口_精品国内视频

技術頻道

VB環境下利用并口實現PLC控制

1 引言
普通的計算機一般都配有并行接口(就是通常用的打印機接口),它是通過25芯的D型接頭連接打印機與計算機的,計算機的并行接口不僅可以向打印機發送數據,還可以從打印機接收數據(打印的工作狀態)。因此,利用計算機的并行接口,你可以去控制外部繼電器的吸合,從而控制外部設備,同樣可以利用它來檢測外部設備的狀態。不需添加任何硬件。從而使一臺普通的計算機具有“PLC”的開關量的功能。
本文分析的系統,把普通并口實現了一個4輸入8輸出數字量的功能,切不需任何投資。們先對打印機的并行口做一下細致的分析。配有一個并口的計算機經系統引導后,初始化過程把并行端口配置成LPT1, 這個端口又分配了數據地址378H, 狀態地址379H。其中378H端口做輸出端口,379H端口做輸入端口。
2 并口數據采集控制原理
(1) 端口378H,378H的管腳見表1。
在計算機通電后的自然狀態,378H端口的每個數據位為1,表1中每個管腳對地(25腳)為高電平5V。即378H地址的內容為FF(十進制是255),當控制378H的內容為1(十進制)二進制碼是00000001時,即2腳對地輸出高電平,其它對地是0電平。如控制378H的內容為2(十進制)二進制碼是00000010,即3腳對地輸出高電平,其它對地是0電平。如控制378H的內容為3(十進制)二進制碼是00000011,即2、3腳對地輸出高電平,其它對地是0電平。依次類推。


當某管腳對地是高電平5V時,由于每條數據線的輸出電流高達20mA,可以接5V的直流繼電器,通過繼電器的觸點在去控制其它的設備,如電磁閥、電機等。圖1是用打印機并行接口實現的繼電器控制電路,此電路稍加修改即可用于其它設備的開關控制。
(2) 端口379H,379H的管腳見表2。


在計算機通電后的自然狀態,379H端口的數據位第7位是0,其余每個數據位為1,即上述每個管腳對地(25腳)為高電平5V。即379H地址的內容為127(十進制)二進制碼是01111111。當只把某管腳(如10腳)通過500Ω的電阻接到25腳,則它所對應的數據位是0,其它的數據位不變,則379H的內容為63(十進制)二進制碼是00111111。當只把某管腳(如12腳)通過500Ω的電阻接到地25腳,則它所對應的數據位是0,其它的數據位不變,則379H的內容為95(十進制)二進制碼是01011111依次類推。
圖2是用打印機并行接口實現的開關檢測控制電路,當K斷開時,379H為127(十進制),當K閉合時,379H為111(十進制)二進制數是01101111,即13腳所連接的第4數據位為0。

3 軟件實現


VB是一種可視化的編程語言,自面世以來,因簡單易用倍受廣大編程人員的青睞,作為一種非常方便的Windows95應用程序開發平臺,可以實現Windows的絕大部分功能。
VB中沒有專門的對并口的操作控件,要實現對并口的讀寫,需要對I/O進行操作,但對硬件進行訪問以及利用各種控制接口板進行數據采集,僅靠VB是無法解決的。解決這樣的問題可以間接使用動態鏈接庫DLL(Dynamic Link Library)來實現。程序人員利用DLL可以實現應用程序共享代碼和資源,DLL與用戶的程序完全分開。
動態鏈接庫(DLL)雖然是一個可執行模塊,但它并不可以直接運行,它只是提供一群函數供Windows應用程序或其它動態鏈接庫調用,以完成其特殊任務。由于動態鏈接庫是在應用程序運行期間被連接起來的,故稱為動態鏈接庫。本設計用VC++設計了一個讀寫IO端口的動態鏈接庫IO.DLL。
筆者利用VC++5.0開發的DLL的完整的程序清單如下:
∥DLL源文件I0.CPP
#include <windows.h>
#include<conio.h>
int FAR PASCAL outport(unsigned)
short sport);
int FAR PASCAL outport(unsigned short port,int databyte);
∥D11EntryPoint函數
BOOL WINAPI D11EntryPoint
(HINSTANCE hD11,
DWORDdwReason,
LPVOID Reserved)

  switch(dwReason)

case DLL_PROCESS_ATTACH:
  {
    break;
 ?。?BR>case DLL_PROCESS_DETACH:
 ?。?BR>    break;
  }

return TRUE;

∥兩個功能函數
int FAR PASCAL inport(unsigned short port)

  reture(_inp(prot);
)
int FAR PASCAL outport(unsigned short port,int databyte)

int a;
a=_outp(port,databyte);
return a;

∥模塊定義文件I0.DEF
CODE PRELOAD MOVEABLE DISCARDABLE
DATA PRELOAD SINGLE
EXPORTS
inport
outport
動態鏈接庫只有在別的模塊中調用了它的某個函數以后,該動態鏈接庫才發生作用。DLL函數或過程必須在全局模塊(*.BAS)中正確說明才有效。VB是用Declare語句把一個DLL函數引入VB中的,它告訴VB在哪里找到DLL函數,并且讓VB知道DLL需要哪種類型的參數,同時返回哪種類型的值。當某個DLL函數用Declare語句正確聲明以后,就可以像使用其它函數一樣使用這個DLL函數。
在VB應用程序的全局模塊中聲明I0.DLL并將其放入Windows\system目錄下,這樣就可以向使用Windows API一樣使用I0中的inport(輸入)和outport(輸出)函數了。
Declare Function inport Lib"io.d11"
  (ByVal prot As Integer)As Long
Declare Function outport Lib"io.d11"
  (ByVal port As Integer,ByVal
  databyte As Long)As Long
下面的程序對圖1和圖2的例子進行設計。(只列出輸入輸出的讀寫操作程序)
  Private Sub 輸入_Click
  X=inport(&H379)
  Print x
  End Sub
  Private Sub輸出_Click
  y=outport(&H378,1)
  End Sub

4 結束語
并口25管腳中,作輸出用的是2~9共8個管腳,作輸入用的10、12、13、15共4個管腳,25腳地,利用并口可方便的實現了4入8出的開關量控制。
在上位機中采用VB等語言編程,利用計算機的并口,巧妙地實現PLC的開關量功能,而且可利用VB等語言的界面設計的功能,使系統做到監控一體。且系統不需額外的投資,使用靈活簡單,可靠性高。


文章版權歸西部工控xbgk所有,未經許可不得轉載。

主站蜘蛛池模板: 一区福利| 中文字幕视频一区 | 精品999久久久 | 国产精品国产三级国产专播精品人 | 久久久久久久久久久国产 | 欧美激情小视频 | 在线麻豆视频 | 久久福利网 | 成人在线免费观看 | 自拍视频网站 | 国产一区高清 | 综合伊人 | 日韩区欧美久久久无人区 | 视频国产精品 | 国产欧美精品一区 | 国产精品久久久久久久久久免费看 | 日本免费高清一区二区 | 日本久久91 | av电影日韩 | 国产精品久久久久久久久久妞妞 | 国产精品 欧美激情 | 日韩欧美一区二区三区在线视频 | 久久一 | 久久精品国产99国产 | 亚洲一级二级三级 | 中文字幕免费在线观看 | 亚洲精品91 | 黄色小视频在线观看 | 一级黄色大片 | 精品视频在线一区 | 国产亚洲精品美女 | 在线日韩一区 | 簧片av| 99国内精品 | 91新网址 | 国产精品视频播放 | 日韩成人免费电影 | 性感美女一级毛片 | 国户精品久久久久久久久久久不卡 | 久久国产精品视频免费看 | 色网站观看 |