沈夢夢 姜英 王亦誠


摘要
利用LabVIEW中的VISA技術(shù),實(shí)現(xiàn)了SNP協(xié)議下LabVIEW與GE90系列PLC的串口通訊。實(shí)際應(yīng)用結(jié)果表明,該系統(tǒng)具有良好的實(shí)時(shí)性和可靠性。
【關(guān)鍵詞】SNP協(xié)議 PLC LabVIEW 串口通訊
LabVIEW是一種圖形化的編程語言和開發(fā)環(huán)境,是美國國家儀器公司開發(fā)的虛擬儀器開發(fā)平臺軟件。其圖形化編程語言環(huán)境,簡單直觀,極大節(jié)省程序開發(fā)時(shí)間,可以完成各種編程任務(wù)。
PLC在自動(dòng)化監(jiān)控系統(tǒng)中主要用于數(shù)據(jù)采集、控制和調(diào)節(jié),對控制系統(tǒng)有舉足輕重的作用,而如何實(shí)現(xiàn)PLC與上位PC機(jī)之間的數(shù)據(jù)通訊也至關(guān)重要。
本文詳細(xì)介紹GE 90系列PLC與上位機(jī)通過SNP (Series 90 Protocol)串口協(xié)議通訊的具體實(shí)現(xiàn)過程,實(shí)際運(yùn)行結(jié)果表明,此方法穩(wěn)定可靠,節(jié)約成本,經(jīng)濟(jì)性強(qiáng),有較強(qiáng)的應(yīng)用價(jià)值。
1SNPt議
1.1 SNP通訊方式
SNP使用RS485(RS422為增強(qiáng)型)接口的半雙工通訊模式,為了支持多種應(yīng)用,SNP提供多種不同的波特率、奇偶校驗(yàn)、停止位。在數(shù)據(jù)連接上可以通過點(diǎn)對點(diǎn)(point-to-point)模式設(shè)置單個(gè)PLC,也可以通過多點(diǎn)下傳( multi-drop)模式設(shè)置多個(gè)PLC。
由于上位機(jī)通常配備RS232串口,所以在上位機(jī)與PLC之間的通訊連接上需增加一個(gè)RS-232/RS-485 (RS422)轉(zhuǎn)換器。配備RS485 (RS422)通訊接口的上位機(jī)可以直接通過一根數(shù)據(jù)線連接至PLC電源模塊上,無需任何轉(zhuǎn)換設(shè)備。允許多個(gè)90系列PLC連接至一個(gè)上位機(jī),只需要配備一個(gè)多串口轉(zhuǎn)換設(shè)備。
1.2 SNP消息幀
SNP數(shù)據(jù)消息包含三個(gè)部分:頭部、尾部、頭部和尾部之間的數(shù)據(jù)。
頭部由兩個(gè)字節(jié)組成,第1個(gè)字節(jié)均為lbh(十六進(jìn)制),第2個(gè)字節(jié)及其代表的真實(shí)意義為:41h建立連接消息;52h建立連接響應(yīng)消息;4Dh郵箱消息;54h文本緩沖消息;54h文本緩沖消息;42h塊傳輸消息;43h連接數(shù)據(jù)消息;55h更新實(shí)時(shí)連接消息;49h查詢消息。
尾部由六個(gè)字節(jié)組成,第1個(gè)字節(jié)均為17h,第2個(gè)字節(jié)定義下一個(gè)消息類型,第3、4個(gè)字節(jié)定義下一個(gè)消息長度,第5個(gè)字節(jié)代表狀態(tài)位,第6個(gè)字節(jié)定義BBC校驗(yàn)碼。
頭部和尾部之間的數(shù)據(jù)內(nèi)容依賴于被頭部定義的消息類型。
l.3 SNP數(shù)據(jù)報(bào)服務(wù)請求
數(shù)據(jù)報(bào)服務(wù)請求允許用戶通過服務(wù)請求獲得一組或多組PLC的參數(shù)數(shù)據(jù)。PLC中一個(gè)區(qū)域的內(nèi)存數(shù)據(jù)定義為一個(gè)數(shù)據(jù)報(bào)連接區(qū),在通訊之前,數(shù)據(jù)報(bào)連接區(qū)需要被建立和定義。PLC中數(shù)據(jù)報(bào)連接區(qū)由幾個(gè)部分構(gòu)成:固定12個(gè)字節(jié)長度的頭部、監(jiān)測參數(shù)格式列表(每組監(jiān)測的參數(shù)格式由4個(gè)字節(jié)組成)、數(shù)據(jù)區(qū)域。每個(gè)數(shù)據(jù)報(bào)最大可以定義256種數(shù)據(jù)格式,每組參數(shù)格式包含三個(gè)部分:數(shù)據(jù)類型、偏移量、長度。
在一個(gè)完整的串口通訊協(xié)議周期中包含下面四種PLC數(shù)據(jù)報(bào)服務(wù)請求:
(1)建立連接數(shù)據(jù)報(bào)請求;
(2)寫入數(shù)據(jù)報(bào)請求;
(3)更新數(shù)據(jù)報(bào)請求;
(4)取消數(shù)據(jù)報(bào)請求。
當(dāng)上位機(jī)需要使用數(shù)據(jù)報(bào)連接時(shí),需要按照上述前三個(gè)數(shù)據(jù)報(bào)請求順序讀取PLC中數(shù)據(jù),當(dāng)不再需要讀取數(shù)據(jù)時(shí)取消數(shù)據(jù)報(bào)請求。上述四個(gè)數(shù)據(jù)報(bào)請求基本上包含以下過程:上位機(jī)發(fā)送請求初始化、PLC發(fā)送確認(rèn)、PLC發(fā)送響應(yīng)完成確認(rèn)、上位機(jī)發(fā)送請求數(shù)據(jù)、PLC發(fā)送數(shù)據(jù)、上位機(jī)發(fā)送確認(rèn)。
一個(gè)典型的建立連接數(shù)據(jù)報(bào)初始化請求幀如表1所示。
2程序?qū)崿F(xiàn)
(1)即設(shè)定上位機(jī)的串口COM1與PLC通訊,波特率設(shè)為19200bits/s,數(shù)據(jù)位為8位,停止位1位,奇偶校驗(yàn)設(shè)置為偶校驗(yàn)。
(2)幀校驗(yàn),采用BCC異或校驗(yàn)方式,將要發(fā)送的數(shù)據(jù)進(jìn)行異或后加在發(fā)送數(shù)據(jù)的尾端。
(3)讀寫端口,將命令通過串口COM1發(fā)送給PLC,并接受來自PLC的響應(yīng)信息,將所得數(shù)據(jù)進(jìn)行解包,并進(jìn)行顯示、計(jì)算、分析、存儲(chǔ)等后續(xù)處理。圖l為LabVIEW讀串口的實(shí)現(xiàn)程序。
3結(jié)束語
本文在LabVIEW軟件開發(fā)平臺上,利用VISA技術(shù),成功開發(fā)基于SNP協(xié)議的串口通訊模塊,可以方便地實(shí)現(xiàn)上位PC機(jī)與下位機(jī)PLC的主從式串行通訊。該模塊可以不加任何修改用于其它虛擬儀器的開發(fā),操作簡單方便,運(yùn)行可靠,該模塊已經(jīng)成功應(yīng)用于某型號發(fā)動(dòng)機(jī)過程控制系統(tǒng),運(yùn)行良好可靠。
參考文獻(xiàn)
[1]阮奇楨,我和LabVIEW [M].北京:北京航空航天大學(xué)出版社,2009.
[2]袁雪,陳斌,魯中巍,管國強(qiáng).基于LabVIEW的Modbus串口通訊協(xié)議的實(shí)現(xiàn)[J].現(xiàn)代儀器,2008,22 (02): 31-33.