CAN現場總線的計算機與PLC通信
MSComm 控件提供了一種有效的處理串*互作用的方法:事件驅動法。該方法利用OnComm 事件捕獲并處理通信及其錯誤,當CommEvent 屬性發生變化時,就產生事件并等待相應處理。每個MSComm 控件都有一個串口相對應。
Visual Basic 6.0(以下簡稱VB) 是一種功能強大、簡單易學的程序設計語言,利用ActiveX 控件MSComm能十分方便地開發出使用計算機串口的計算機通信程序。本文在VB中使用MSComm控件實現上位機與PLC的串行通信。
VB 程序由串口初始化、數據發送、數據接收等幾大部分組成。主要的程序段如下所示。
Rem 程序加載時進行串口初始化
以上給出了計算機與PLC 通信的主要程序段。需要注意的是,如果傳送的數據大于132 個字符,可以將數據分成起始幀、若干中間幀、結束幀進行傳送。起始幀必須包含設備號, 命令碼等, 否則通信的過程中將會有錯誤發生。上位機每發送完一幀時,在收到PLC 返回的分界符(即“↙”)后再發送下一幀,只有當結束幀數據發送完畢時才返回響應代碼。
6 結束語
本文基于VB 利用MSComm 控件實現了上位機與歐姆龍PLC的串行通信,充分發揮了CAN 總線實時、可靠、高速、遠距離、易維護的特點。計算機能夠深入地配合PLC 廠商提供的各種軟件,從而實現更多強大的功能, 比如系統配置、人機界面、組態開發等。
通常,計算機與PLC 通過串口連接,實現各種通信功能。但串口的通信距離、節點數量都受到了串口本身的性能限制。比如,RS-232 標準只可以實現1:1 通信,RS-422/485 標準能夠實現32 個節點以內的通信,通信距離、抗干擾能力都比較弱,并不能夠滿足實際工業現場多臺PLC 聯網應用的需求。即使借助RS232/RS485-CAN 適配器也很難突破串行通信本身的功能限制[5]。
針對這一情況,可以采用計算機內置PC-CAN 接口卡,可以建立起1 條或者多條CAN 總線網絡,并通過連接在CAN 總線網絡中的RS232/RS485-CAN 適配器,借助于CAN 總線網絡配套的虛擬串口軟件,建立多達2047 個標準的串行通信端口,從而連接多達2047 條串行網絡[6]。也就是說,可以在同1 條普通雙絞線上連接多達2047 臺PLC 設備,工控PC 訪問連接在這條CAN總線網絡上的PLC 設備,也與操作標準串口完全一致。
這種方式可以充分發揮工控PC 的作用,通信效率比較高,應用靈活,是一般PLC 網絡建設的主流方向。
評論