鄭騰飛 王思涵
中國核電工程有限公司 北京 100048
隨著現(xiàn)代大型工業(yè)生產(chǎn)自動化的不斷興起和對控制過程要求的日益復(fù)雜,自動化控制系統(tǒng)在工業(yè)控制中得到了廣泛的應(yīng)用。現(xiàn)代過程控制系統(tǒng)對于過程設(shè)備的開放性和交互性提出了越來越高的要求,目前工業(yè)控制所用PLC種類繁多,很多場合需要同一品牌不同型號PLC之間進(jìn)行通信,或者不同品牌PLC之間也需要進(jìn)行通信,采用Modbus協(xié)議可解決控制系統(tǒng)相互之間、控制器經(jīng)由網(wǎng)絡(luò)和其他設(shè)備之間可以通信。它已成為一種通用的工業(yè)通信標(biāo)準(zhǔn),有了它可以使不同品牌的控制系統(tǒng)組建成統(tǒng)一的工業(yè)網(wǎng)絡(luò),完成對自動化控系統(tǒng)的集中監(jiān)控。
浙江中控JX300XP系統(tǒng)吸收了近年來快速發(fā)展的通信技術(shù)、微電子技術(shù),應(yīng)用最新信號處理技術(shù)、軟件設(shè)計技術(shù)和現(xiàn)場總線技術(shù),采用微處理器和成熟的控制算法,全面提高了自動控制系統(tǒng)的性能,同時實現(xiàn)多種總線兼容和異構(gòu)系統(tǒng)綜合集成,使各種國內(nèi)外品牌的DCS、PLC及現(xiàn)場智能設(shè)備都可以接入到JX-300XP控制系統(tǒng)中,使其能適應(yīng)更廣泛更復(fù)雜的應(yīng)用要求。
Modbus是一種串行通信協(xié)議,是Modicon公司為實現(xiàn)可編程邏輯控制器(PLC)通信而發(fā)表。目前,Modbus已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議的業(yè)界標(biāo)準(zhǔn),并且現(xiàn)在是自動控制系統(tǒng)之間常用的通信方式。Modbus比其他通信協(xié)議使用的更廣泛的主要原因是其更易于部署和維護(hù)且通信距離長。
Modbus允許多個設(shè)備連接在同一個網(wǎng)絡(luò)上進(jìn)行通信,Modbus協(xié)議目前存在用于串口、以太網(wǎng)以及其他支持互聯(lián)網(wǎng)協(xié)議的網(wǎng)絡(luò)的版本。關(guān)于串行連接,有兩種方式的Modbus通信,它們在數(shù)據(jù)格式和協(xié)議細(xì)節(jié)上略有不同。Modbus-RTU通信:在消息中的每個8Bit字節(jié)包含兩個4Bit的十六進(jìn)制字符。這種方式的主要在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù),而Modbus ASCII通信是將消息中的每個8Bit字節(jié)都分為兩個ASCII字符發(fā)送。這種方式的主要優(yōu)點是字符發(fā)送的時間間隔可達(dá)到1秒而不產(chǎn)生錯誤[1]。
基于JX300系統(tǒng)的Modbus通信硬件實現(xiàn)方式有兩種,即通過XP244和XP248通信板卡都可以實現(xiàn)modbus-RTU通信,XP244板卡通信驅(qū)動程序僅支持通過SCX語言編寫實現(xiàn),而XP248可以通過SCControl圖形化語言進(jìn)行通信組態(tài),AdvanTrol-Pro軟件內(nèi)部集成了通信設(shè)置功能塊、Modbus-RTU功能塊、HostLink功能塊等。利用軟件提供的各種運算功能塊,XP248還可以根據(jù)需要將通信回來的數(shù)據(jù)實現(xiàn)復(fù)雜的運算。本文選用XP248卡件來搭建整個通信網(wǎng)絡(luò),XP248多串口通信卡是JX300系統(tǒng)與PLC、變頻器、儀表等智能設(shè)備等通信的接口模塊,其支持4路串口的并發(fā)工作,每路串口可同時掛接設(shè)備數(shù)量最多不超過32個。本文重點介紹系統(tǒng)的通信共包含兩路,一路與西門子S7-200smart通信讀取的數(shù)據(jù),另外一路與現(xiàn)場各路儀表進(jìn)行通信[2]。

圖1 系統(tǒng)架構(gòu)圖
本系統(tǒng)軟件程序是基于浙江中控組態(tài)軟件AdvanTrol-Pro2.80版本編寫的。AdvanTrol-Pro是一款支持多種實現(xiàn)方式的圖形編程軟件,是專門為SUPCON系列產(chǎn)品提供的一套組態(tài)工具,依據(jù)IEC61131-3標(biāo)準(zhǔn),為用戶提供高效的組態(tài)環(huán)境,與系統(tǒng)組態(tài)軟件聯(lián)合完成對系統(tǒng)的組態(tài),是SUPCON控制系統(tǒng)軟件的重要組成部分。
所選用的XP248與主控制卡都掛載在SCnet網(wǎng)絡(luò)上,故XP248卡件需要占用SCnet網(wǎng)絡(luò)的兩個IP地址。XP248的組態(tài)方法與主控制卡相同,通過撥碼開關(guān)設(shè)置卡件的通信地址、控制周期默認(rèn)為500ms。卡件冗余方式由用戶選擇。
在XP248下創(chuàng)建通信變量表,用于存放所有掛載設(shè)備讀出或要寫入下掛設(shè)備的數(shù)據(jù),創(chuàng)建方式與主控點表的創(chuàng)建方式一致,變量分為1字節(jié)變量、2字節(jié)變量、4字節(jié)變量、8字節(jié)變量,分別用于存放開關(guān)量、半浮點型(JX300特有)、浮點型、累積量數(shù)據(jù)。XP248通過這些變量與控制系統(tǒng)的服務(wù)器進(jìn)行數(shù)據(jù)交互。

圖2 通信點表組態(tài)
通信程序編寫分為四個部分,首先是確定各個通信站點的站號,站號可以選擇0-254內(nèi)的任一值作為站號,本項目共包含5個通信站,其中JX300XP下的XP248設(shè)定為主站,站號為6,與之通信的s7-200samrtPLC以及3塊智能儀表設(shè)置為從站,站號分別為2、3、4、5。
其次是通過組態(tài)軟件提供的GW_SETCOM模塊對通信參數(shù)進(jìn)行設(shè)置,將與s7-200smart通信的波特率9600、數(shù)據(jù)位8位、停止位1位,校驗方式選擇為偶校驗、端口號為0號端口,而與另外三塊儀表的通信的端口號選擇1號端口,其他參數(shù)與PLC通信的參數(shù)設(shè)置方法一致,但參數(shù)的設(shè)置要與從站的相關(guān)參數(shù)設(shè)定相匹配;理論上可以將本項目的PLC與三個儀表掛接在一個485總線上,綜合考慮以往的項目經(jīng)驗,不同類型設(shè)備掛接在同一總線由于高電平的誤差會導(dǎo)致較多的通信故障產(chǎn)生,由于XP248模塊配備了4個總線接口,有足夠的余量,故將從站PLC和三塊儀表分別掛在不同的總線下,這樣將有效的減小調(diào)試問題發(fā)生的概率。

圖3 通信程序
通過GW_MODBUS_RTU主站模塊調(diào)用ModBus協(xié)議,建立從站數(shù)據(jù)與主站中的自定義變量間的映射關(guān)系,所設(shè)定的參數(shù)包括從站地址Slave、超時時間AckTim、功能號Func、數(shù)據(jù)起始編號Start及操作的寄存器個數(shù)等。該模塊支持的Modbus功能包括:讀線圈狀態(tài)、讀輸入狀態(tài)、讀保持寄存器、讀輸入寄存器、強迫設(shè)置一個線圈、預(yù)置單個寄存器、強迫設(shè)置多個線圈、預(yù)置多個寄存器等8個類別。
最后使用GW_GETMORE功能塊將執(zhí)行后Modbus-RTU命令緩沖區(qū)的數(shù)據(jù)寫入到新創(chuàng)建的變量表中,寫入變量表是按照從命令緩沖區(qū)讀取的順序進(jìn)行寫入的。在此需要設(shè)置讀命令緩沖區(qū)的讀取順序Serial、所要寫入的自定義變量類型DataType、自定義變量的起始ID號VarId(自定義量表中的No.號)以及連續(xù)存取數(shù)量的個數(shù)。
該部分組態(tài)需嚴(yán)格按照先定義串口的通信參數(shù),然后讀取數(shù)據(jù)到命令緩沖區(qū),最后組取數(shù)或置數(shù)模塊的順序進(jìn)行。為方便調(diào)試,SCControl軟件還提供了豐富的串口命令診斷函數(shù),通過這些功能塊可以軟件調(diào)試環(huán)境中,獲取串口的收、發(fā)次數(shù),命令的收、發(fā)次數(shù),命令的通信質(zhì)量碼等信息。
采用本文的方法編寫的modbus-RTU通信方式,使用戶可以通過功能塊的方式實現(xiàn)與智能儀表及PLC的通信,這種方式使通信程序更加簡潔易讀,在調(diào)試過程中更加易于查找問題。在多個項目中應(yīng)用該方法編制的通信程序穩(wěn)定可靠,提高了現(xiàn)場調(diào)試人員排除故障的效率。