沈林暉
(中石化鎮(zhèn)海煉化分公司,浙江 寧波 315207)
Modbus RTU串口通信技術(shù)成熟可靠、應(yīng)用方便、實用性強(qiáng),可以很容易地實現(xiàn)不同系統(tǒng)之間的數(shù)據(jù)通信,因此在工業(yè)自動化控制系統(tǒng)中被廣泛應(yīng)用,其應(yīng)用特點在于:Modbus RTU串口通信開放透明,幾乎所有的自動化控制系統(tǒng)都支持;Modbus RTU串口通信實現(xiàn)成本很低;使用Modbus RTU串口通信技術(shù),便于設(shè)備專利商設(shè)計可加密保護(hù)的專用控制系統(tǒng),而不受用戶其他系統(tǒng)的限制,這同樣也有利于系統(tǒng)的標(biāo)準(zhǔn)化設(shè)計和集成,能夠減少重復(fù)性勞動;通過Modbus RTU串口通信,可以大幅減少用戶長距離鋪設(shè)模擬信號電纜,降低電纜成本和人工布線成本。采用Modbus RTU通信技術(shù),隨設(shè)備引進(jìn)的控制系統(tǒng)可以很方便地與用戶DCS通信,從而實現(xiàn)用戶所需要的指示、記錄及報警等功能。
筆者在簡要介紹Modbus RTU通信技術(shù)工作原理的基礎(chǔ)上,通過幾個實例來說明幾種控制系統(tǒng)的串口通信基本參數(shù)設(shè)置方法,幾種不同的電氣接口和站間串口通信的接線方式,以及串口通信的軟件編程組態(tài)等。
Modbus RTU通信協(xié)議是以主從(Master-Slave)方式進(jìn)行數(shù)據(jù)傳輸?shù)?,沒有主站的請求從站不會發(fā)送任何數(shù)據(jù)。在主站和從站數(shù)據(jù)傳輸?shù)倪^程中,主站一次只發(fā)送一個請求報文到指定的從站,然后等待從站響應(yīng);從站得到請求報文后檢查并分析數(shù)據(jù)包,然后執(zhí)行報文的請求,之后再返回主站相應(yīng)的響應(yīng)報文;主站接收到響應(yīng)報文檢查數(shù)據(jù)包,無誤之后再對接收的數(shù)據(jù)做相應(yīng)處理,如果檢查有誤則重發(fā)請求報文。Modbus RTU串口通信總線上只允許有一個主站,從站可以有多個,而只有主站沒有站地址。主站和從站之間的數(shù)據(jù)交換是通過功能碼來控制的,不同的功能碼訪問不同的數(shù)據(jù)區(qū),有的功能碼是對狀態(tài)位操作的,有的功能碼是對16位寄存器操作的。功能碼、數(shù)據(jù)區(qū)和用戶級地址(十進(jìn)制)之間的對應(yīng)關(guān)系見表1。
表1 數(shù)據(jù)區(qū)用戶級地址表示法及訪問權(quán)限
用戶只在西門子PLC的編程中用到功能碼,而其余大多系統(tǒng)只需使用用戶級地址就可以了。用戶級地址“1”(00001的簡寫)表示“數(shù)字量輸出地址1”,對應(yīng)的功能碼是FC01/FC05/FC15;用戶級地址“10001”表示“數(shù)字量輸入地址1”,對應(yīng)的功能碼是FC02;用戶級地址“30012”表示“16位整型輸入地址12”,對應(yīng)的功能碼是FC04;用戶級地址“40012”表示“16位整型輸出地址12”,對應(yīng)的功能碼是FC03/FC06/FC16。主站的請求報文包括從站地址、功能碼、數(shù)據(jù)起始地址和數(shù)據(jù)長度;從站的響應(yīng)報文包括功能碼、字節(jié)計數(shù)和寄存器數(shù)據(jù)。
RS485 Modbus RTU串口通信的電纜最長可達(dá)1.2km,電纜的實際允許長度與波特率有關(guān),波特率越大(即傳輸速度越快)允許的電纜長度越短。需要長距離通信時,可以增加中繼器來延長通信距離。
RS485 Modbus RTU串口通信一般采用兩線制接線,可以實現(xiàn)多點雙向通信,并且接線時一般會在總線兩邊的末端安裝終端電阻,例如:Honeywell TPS系統(tǒng)的Modbus RTU串口通信,當(dāng)總線的長度超過305m時要在總線的末端安裝120Ω的終端電阻。
要實現(xiàn)Modbus RTU串口通信,首先要給主站和各從站設(shè)置一致的Modbus RTU串口通信的基本參數(shù);然后由施工人員鋪設(shè)通信電纜總線并連接到各站的電氣接口上;最后由組態(tài)編程工程師對主站或從站進(jìn)行程序編程或軟件組態(tài)。
Modbus RTU串口通信的基本參數(shù)包括:波特率、數(shù)據(jù)位、停止位和奇偶校驗。其中,波特率表示的是傳輸速率,數(shù)據(jù)位一般默認(rèn)為8位,停止位一般設(shè)為1位(也有兩位),奇偶校驗可選擇無奇偶校驗、奇校驗或偶校驗。對于掛在同一條Modbus RTU串口通信總線上的所有節(jié)點來說,這些基本參數(shù)都必須一致。
每個控制系統(tǒng)都有參數(shù)設(shè)置界面,但所需設(shè)置的內(nèi)容卻不盡相同。PLC、TPS、TRICON和PKS的Modbus RTU串口通信基本參數(shù)的設(shè)置界面如圖1~4所示。
圖1 西門子PLC從站Modbus RTU串口通信基本參數(shù)設(shè)置界面
圖2 TPS主站Modbus RTU串口通信基本參數(shù)設(shè)置界面
圖3 TRICON從站Modbus RTU串口通信基本參數(shù)設(shè)置界面
圖4 PKS(Nport5630轉(zhuǎn)換器作主站) Modbus RTU串口通信基本參數(shù)設(shè)置界面
不同控制系統(tǒng)或設(shè)備的Modbus RTU串口通信電氣接口的成套方式也有所不同,有的是集成在系統(tǒng)或設(shè)備中,如西門子的S7-200 PLC及質(zhì)量流量計等;有的是可插拔的通信卡件,如西門子S7-300/400 PLC采用CP341Modbus RTU串口通信卡,Honeywell TPS采用SIModbus RTU串口通信卡,TRICON系統(tǒng)采用TCM4351B通信卡;有的則采用第三方通信轉(zhuǎn)換設(shè)備,如Honeywell新一代PKS系統(tǒng)采用Terminal Server將Modbus RTU串口通信數(shù)據(jù)轉(zhuǎn)換為以太網(wǎng)通信數(shù)據(jù)。這些通信卡件或設(shè)備提供的電氣接口也不盡相同,有的采用端子接線方式,有的采用9針串口,有的采用25針串口,也有的采用RJ45接口,其串口通信電氣接口分別如圖5~8所示。需要注意的是,即便是同樣的電氣接口,不同產(chǎn)品的引腳定義也不盡相同,接線之前一定要查看引腳的詳細(xì)說明;終端電阻的要求也有差別,設(shè)計時必須根據(jù)產(chǎn)品標(biāo)明的距離和阻值計算后再布線或接線;在Modbus RTU串口通信總線上,一個主站一般最多可以接32個從站。
圖5 Honeywell TPS MC-TSIM12卡件串口通信電氣接口
圖6 西門子PLC CP341卡件串口通信電氣接口
圖7 TRICON TCM 4351B卡件串口通信電氣接口
圖8 Honeywell PKS NPort 5630 設(shè)備串口通信電氣接口
RS485 Modbus RTU串口通信一般采用兩線制接線方式,少數(shù)也有四線制接線方式。兩線制接線比較簡單,只要在主站和從站的電氣接口之間將正端和正端相連,負(fù)端和負(fù)端相連就行。如果采用的是四線制接線方式,那么主站的發(fā)送(TxD)端要和從站的接收(RxD)端連接,主站的接收(RxD)端要和從站的發(fā)送(TxD)端連接,并且正端接正端、負(fù)端接負(fù)端。通信設(shè)備正端引腳的符號有Data+、T(B)+、R(B)+、TxD+和RxD+,負(fù)端引腳的符號有Data-、T(A)-、R(A)-、TxD-和RxD-。符號Data+和Data-只用于兩線制接線方式,TxD、T(A)和T(B)是發(fā)送端,RxD、R(A)和R(B)是接收端。兩線制和四線制接線示例如圖9、10所示。
圖9 Honeywell TPS Modbus RTU 串口通信兩線制接線示例
對于用戶而言,大部分設(shè)備或系統(tǒng)要實現(xiàn)Modbus RTU串口通信只需進(jìn)行簡單的參數(shù)設(shè)置和點組態(tài)就可以了,如Honeywell TPS和羅斯門特質(zhì)量流量計的Modbus RTU串口通信組態(tài),流量計上只需使用275或375手操器在COMM菜單下設(shè)置通信協(xié)議(RTU)、波特率、奇偶校驗、停止位(1位)和本站地址即可,其他如流量計的寄存器地址是在流量計出廠前就固化好的(表2),不需要任何操作。在Honeywell TPS 中,只需新建一個Array數(shù)組點,并在該點的參數(shù)AUXDATA3上設(shè)置通信模式(圖2),在參數(shù)AUXDATA4上設(shè)置波特率和奇偶校驗(圖2),并指定要訪問的流量計地址和數(shù)據(jù)首位寄存器地址(如20247)和通信數(shù)據(jù)量(如8)就可以訪問質(zhì)量流量計的數(shù)據(jù)了。又如TRICON Modbus RTU串口通信組態(tài),只要使用TS1131組態(tài)軟件對Modbus RTU串口通信卡設(shè)置Modbus RTU串口通信基本參數(shù)(圖3)即可,無需編寫通信程序,無需定義寄存器地址(寄存器地址已在工程師定義變量申明時自動生成)。TRICON Modbus RTU串口通信的用戶級地址(在TS1131軟件中稱之為Alias地址)的分配規(guī)則見表3。
圖10 西門子PLC Modbus RTU 串口通信四線制接線示例
表2 質(zhì)量流量計數(shù)據(jù)/地址對照
表3 TRICON Modbus RTU串口通信用戶級地址分配規(guī)則
對于西門子PLC這類非面向Modbus RTU串口通信設(shè)計的系統(tǒng)而言,Modbus RTU串口通信的組態(tài)相對復(fù)雜一些。當(dāng)西門子PLC作為從站時,CP341通信卡的硬件組態(tài)中要選擇Modbus Slave協(xié)議,然后在Protocol中設(shè)置Modbus RTU串口通信基本參數(shù),并在功能代碼選項卡中設(shè)置寄存器區(qū)域,最后還要編寫通信程序。在通信程序中,首先是在Blocks中添加發(fā)送程序塊FB8和接收程序塊FB7(供Modbus RTU串口通信時后臺調(diào)用),然后在用戶程序中調(diào)用功能塊FB80,用它調(diào)用后臺程序塊FB7和FB8用于應(yīng)答主站的數(shù)據(jù)請求。當(dāng)西門子PLC作為主站時,CP341通信卡的硬件組態(tài)中要選擇Modbus Master協(xié)議,然后在Protocol中設(shè)置Modbus RTU串口通信基本參數(shù),最后編寫比從站更復(fù)雜的通信程序,包括:一個用于發(fā)送請求的DB數(shù)據(jù)塊,該數(shù)據(jù)塊必須按照標(biāo)準(zhǔn)格式定義主站的請求內(nèi)容;一個用于接收數(shù)據(jù)的DB數(shù)據(jù)塊,該數(shù)據(jù)塊要有有足夠多的地址,使之能夠存放從站返回的所有數(shù)據(jù);程序調(diào)用發(fā)送功能塊FB8,用于發(fā)送請求數(shù)據(jù)和調(diào)用接收功能塊FB7,用于接收從站返回的數(shù)據(jù)。
Modbus RTU串口通信不但技術(shù)成熟可靠、開放透明,而且其應(yīng)用成本很低,組態(tài)及布線等工作量也小,又是不同系統(tǒng)之間實現(xiàn)數(shù)據(jù)交換的理想方式,因此在大煉油和大乙烯裝置以及新舊裝置中的應(yīng)用比比皆是。中石化鎮(zhèn)海煉化分公司從美國引進(jìn)一套最新版的UOP控制系統(tǒng),也采用Modbus RTU串口通信技術(shù),而且還應(yīng)用了兩路RS485 Modbus RTU串口通信:一路用于西門子S7-400與TRICON通信,另一路用于TRICON與橫河DCS通信。可見Modbus RTU串口通信仍然是不同自動化系統(tǒng)實現(xiàn)數(shù)據(jù)交換的首選,未來其應(yīng)用可能還會遍布工業(yè)自動化系統(tǒng)的各個角落。