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