I/O 設備

用VB6.0來實現(xiàn)PC對多個PLC的監(jiān)控

ainet.cn   2008年10月06日
1 引言

隨著計算機通訊技術的日益成熟及企業(yè)對工業(yè)自動化程度要求的提高,自動控制系統(tǒng)從傳統(tǒng)的集中式控制向多級分布式控制方向發(fā)展,構成控制系統(tǒng)的PLC也就必須具備通信聯(lián)網(wǎng)功能。在具體應用過程中,若要監(jiān)視PLC內部的數(shù)據(jù)與運行狀況,選用市場上的人機界面或組態(tài)軟件,雖然功能豐富,但大都價格昂貴,尤其在一些中小規(guī)模的生產場合。所以許多企業(yè)希望能自己用高級語言開發(fā)一個簡易實用的通信程序,通過面向對象的可視化編程語言VB6.0很容易地實現(xiàn)分布式監(jiān)控。PLC等下位機控制生產過程,本地計算機進行實時監(jiān)測或參與控制生產現(xiàn)場的參數(shù)。本文通過對OMRON的CPM1A小型機與上位計算機通信原理和通信方法的研究,介紹了如何用VB6.0實現(xiàn)上位計算機對PLC的實時監(jiān)控,并取得了良好的效果。

2 監(jiān)控原理

2.1 通信方法

上位機作為主站要能夠通過PLC監(jiān)控下層設備的狀態(tài),首先要實現(xiàn)上位機與PLC間的通信。由于串行通信具有線路簡單、應用靈活、可靠性高等優(yōu)點,并且普通計算機均帶有串行口,所以PC與PLC間通常采用串行通信方式。串行通信可以通過Windows的API函數(shù)實現(xiàn),也可以串行通信控件實現(xiàn),但后者較容易,本文采用VB的通信控件。如果只實現(xiàn)對一臺CPM1APLC的監(jiān)控,需要CPM1-CIFO1(OMRON提供的專用的RS232適配器)形成RS232C口與上位機通信;如果是實現(xiàn)對多臺PLC的監(jiān)控,則需用RS232—RS422/RS485轉換器ADAM-4520和CPM1-CIF11(OMRON提供的專用RS422適配器)與上位機通信,最多可連接32臺PLC,連接方式如圖1所示。



圖1 系統(tǒng)通信原理


在通信過程中上位機始終處于主動方,PLC則處于從動方,所有的數(shù)據(jù)交換只能在主站和從站之間進行,從站之間不能直接交換數(shù)據(jù),如果從站之間需要交換數(shù)據(jù),必須通過主站中轉1。首先上位機向PLC發(fā)送指令幀,PLC接收了上位機的指令后,先進行FCS校驗,看其是否正確,如果正確,則接收并向上位機傳送響應幀(包含首尾校驗字節(jié)),否則,PLC拒絕向上位機傳送數(shù)據(jù)。需要說明的是,整個通信過程中因PLC中配有通信機制,一般不需要對PLC進行編程。上位機接收到PLC傳送的數(shù)據(jù),也要判斷正確與否,如果正確,則接收,完成一次正常通信,否則,通信需重新開始。

2.2 通訊協(xié)議

(1)通訊條件設計。要使上位機與下位機正確地交換數(shù)據(jù),必須確保以下幾點:

● 雙方在初始化時要使波特率、數(shù)據(jù)位數(shù)、停止位數(shù)、奇偶校驗均保持一致;
● 要嚴格按照PLC的通信協(xié)議的規(guī)定及幀格式編寫PC的通信程序。

(2)通訊的命令幀設計。OMRON公司的CPMIA小型PLC的傳輸協(xié)議的一般格式為:


(3)通訊的響應幀設計



其中,@為前導字符,表示開始;設備號為00-31(本例限設到10),共可設置32個站號,用來識別所連接的PLC,可通過PLC的DM6653的低8位來設定,默認站號為00;命令碼為CPMIA小型PLC規(guī)定的對其操作的命令代碼;正文為需要讀或寫的數(shù)據(jù)地址以及數(shù)據(jù);FCS為幀校驗代碼,用于及時發(fā)現(xiàn)通信過程中的錯誤,以備處理;*和CR表示命令結束[2>。

命令幀為PC機傳向PLC的幀格式,響應幀為PLC傳向PC機的幀格式,其命令幀與響應幀中的各個部分除數(shù)據(jù)區(qū)不同外,其他部分的含義是相同的。

2.3 MSComm控件介紹

VB中的MSComm控件具有功能完善的串口數(shù)據(jù)發(fā)送和接收功能。 MSComm控件具有兩種通信方式:事件驅動方式和查詢方式[3>。因為查詢方式占用CPU時間太多,我們采用事件驅動方式。要完成通信,必需正確設置MSComm控件的相關屬性,本設計在窗體中對其進行初始化,主要包括端口設置,波特率設置,奇偶設置等。主要屬性如表1所示。

表1 MSComm控件屬性

2 通信程序設計

本系統(tǒng)以PC對基于PLC的交通燈控制系統(tǒng)的監(jiān)控為例,在上位機與PLC正常通信的前提下,設計如下界面。窗體的內容主要包括,四大區(qū):端口、站號選擇區(qū),設定時間輸入?yún)^(qū),監(jiān)控顯示區(qū),控制按紐區(qū)。從站號選擇區(qū)選擇不同站號即不同PLC,實現(xiàn)對多個PLC的實時監(jiān)控。

3.1 串口初始化程序

If en <> True Then
en=True
End If
gs=“9600,E,7,2”
en=0
erCount=0
ode=comInputModeText
aking=comNone

3.2 計算機與PLC通信的VB程序

Public Function ReadData(ByVal InputStr As String, ByVal Num1 As Integer, ByVal Num2 As Integer) As String


Dim OutputStr As String
Dim InString As String
Dim ReturnStr As String
Dim EndString As String
Dim FCSString As String
Dim ReturnFCSString As String
erCount=0
OutputStr=InputStr+FCS(InputStr)+“*”
If en=True Then
=OutputStr+Chr$(13)’按照PLC幀格式輸出
End If
Do
DoEvents
Loop Until erCount >=Num2’返回幀的長度
InString=
EndString=Mid$(InString,6,2)’取返回幀的響應碼
If EndString <> “00”Then
ReadData=“Error”
Exit Function
End If
EndString=Mid$(InString,1,Len(InString)-4)
ReturnFCSString=Mid$(InString, Len(InString) -3,2)’取返回幀校驗碼
FCSString=FCS(EndString)
If FCSString <> ReturnFCSString Then
ReadData=“Error”
Exit Function
End If
If Len(InString)>=Num2 Then
ReturnStr=Mid$(InString, Len(InString)-Num1-3, Num1)’取返回幀的數(shù)據(jù),其度為Num1
ReadData = ReturnStr
End If
End Function

4 結束語

本文給出了利用VB中的MSCOMM控件實現(xiàn)上位機與多個PLC之間的通信方法,實現(xiàn)了上位機對多個PLC的實時監(jiān)控。對于分布是控制系統(tǒng)大幅度地減小了通訊成本,具有一定的推廣價值。

(轉載)

標簽:VB6.0 實現(xiàn) PC 多個PLC 監(jiān)控 我要反饋 
泰科電子ECK、ECP系列高壓直流接觸器白皮書下載
優(yōu)傲機器人下載中心
億萬克
專題報道