基于VB的分布式監控系統通信設計
|
摘 要:本文介紹了利用VB的多種通信手段實現分布式監控系統的多種通信功能,對每一種通信手段給出其原理和應用實例。
關鍵詞: VB 通信 串行口 控件 DDE API
1. 概論
分布式監控系統已在工業領域得到廣泛應用,許多企業對于中小規模的設備,如中小型熱電廠和水電站,出于硬件軟件投資利潤率和性能價格比的考慮,常常是自行開發或參與開發本企業的監控系統。而許多企業在成套引進大型DCS系統后,也常因實際情況而需要自行開發或改進其監控系統。
分布式監控系統以微機為基礎,用數據通信將微機連在一起實現數據共享,從而對工業過程進行集中監視管理和分散控制。因此,分布式監控系統中通信的設計與實現是至關重要的環節。Visual Basic開發語言具有簡潔明了、編程效率高、開發周期短的特點,利用VB中的多種通信手段,可實現分布式監控系統的多種通信功能。
2. 與下位機的通信
分布式監控系統的數據采集站可直接與現場帶有標準RS-232C接口的智能儀表、PLC和單片機等鏈接,并可通過擴展控制卡形成一個數據采集子網,以高速準確地獲取數據。VB的MSCOMM通信控件具有完善的串口數據發送和接受功能,利用它可以屏蔽對硬件的操作,簡易快捷地進行串行通信編程。
本文的實例為上位機與OMRON 200HG系列PLC的1:N鏈接通信。帶有RS-485接口通信板的PLC直接掛在RS-485總線上,上位機通過RS-232C /RS-485轉換器與總線相連,這樣即構成數據采集子網,甚至可以是一個獨立的小型分布式監控系統。其它儀器儀表設備,只要是標準串口都可以類似方式直接或間接與上位機鏈接。
關于VB的MSCOMM控件可參考相關資料。本例通信程序摘要如下:
(1) 初始化程序
| Mscomm1.Commport=2 ' 選擇COM2 Mscomm1.Settings="9600,N,8,2" ' 設置通信參數 Mscomm1.Inputlen=0 ' 讀入接收緩沖區全部字符 Mscomm1.OutbufferSize=256 ' 設置發送緩沖區大小 Mscomm1.InbufferSize=512 ' 設置接收緩沖區大小 Mscomm1.PortOpen=True '打開COM2 |
(2) 發送命令程序
比如讀取節點號03的PLC中IR000到IR009的內容,并放到tag1字符串變量中,此時有:
| Dim Command, node, begin, number as string Dim Answerlen as integer node="03" '節點號 Command="RR" '命令為讀IR區 begin="0000" '從IR000開始 number=10 '讀取長度 Answerlen=51 '計算接收字符串長度 |
進行命令發送和接收應答處理:
| Dim FCS, I as integer Dim s ,f as string s="@"+node+Commad+begin+number FCS=0 For i=1 to Len(s) FCS=FCS xor Asc(Mid$(s,i,1) ) '幀校驗碼FCS Next i f=Hex$(FCS) If Len(f)=1 Then f="0"+f Commfrm.MSComm1.Output=s + f + "*" + CHR$(13) '命令幀發送 Do Dummy=DoEvents() Loop Untill Commfrm.MSComm1.InbufferCount >= Answerlen '等待應答幀 Do tag1= Commfrm.MSComm1.Input Loop Untill Commfrm.MSComm1.InbufferCount=0 '讀完應答幀 |
上述程序具有相當的通用性,對于其它設備不同的只是各自的數據幀格式,因而只需做相應少量修改即可。