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