葉虎 郭道萌 劉運大 張洪剛
摘 ?要:ModBus協議是應用層報文傳輸協議,它定義了一個與通信層無關的協議數據單元(PDU),即PDU=功能碼+數據域。沙特扎瓦爾電廠的主控系統DCS T3000和生活污水處理系統分別由Siemens AG和METITO供貨調試,由于雙方的技術人員不熟悉Modbus RTU通信,該系統的通信調試一直未成功,并且各方均堅持問題出在對方。多次聯調失敗后,西門子和Metito均已放棄。最后,經過該公司技術人員的研究處理,成功完成該通信系統投用。
關鍵詞:光轉串口 ?遠程終端單元RTU ?物理層 ?通信協議
中圖分類號:TN915 ? ? ? ? ? ? ? ?文獻標識碼:A 文章編號:1672-3791(2019)12(b)-0013-02
1 ?ModBus協議
ModBus協議能夠應用在不同類型的總線或網絡。對應不同的總線或網絡,ModBus協議引入一些附加域映射成應用數據單元(ADU),即ADU=附加域+PDU。
目前,ModBus有下列3種通信方式:(1)以太網,對應的通信模式是ModBus TCP。(2)異步串行傳輸(各種介質如有線、光纖、無線等),對應的通信模式是ModBus RTU或 ModBus ASCII。ModBus的ASCII、RTU協議規定了消息、數據的結構、命令和應答的方式,數據通信采用Maser/Slave方式。(3)高速令牌傳遞網絡,對應的通信模式是ModBus PLUS。
此系統就采用了ModBus RTU通信模式。
檢查T3000通信模塊與通道間的硬件配置,發現以下幾個問題。
(1)DCS T3000 ModBus通信模塊參數已配置,但顯示通信中斷。
(2)RS232和RS485光轉串口模塊、CP341通信模塊的發送/接收(TD/RD)LED指示燈均異常(不閃爍)。
(3)主備PLC的CP341通信參數的奇偶校驗與DCS均不一致,從機地址有沖突均是1(應為4)。
根據以上問題,查閱RS232和RS485說明書,它們均適用于光纖點對點連接的ModBus RTU通信。并且RS485需根據所需的波特率設置撥碼開關,同時參考CP341的說明書,RS485與CP341搭配使用時,其接口類型需在CP341的傳輸協議內設置,這里,需要注意的是:CP341用于MODBUS協議通信時需有Dongle的支持。在使用前先將Dongl安裝在CP341模塊的背面的Dongle插槽中,并安裝驅動程序。
此時檢查發現,生活污水的CP341和RS85、RS232的發送/接收LED指示燈出現規律閃爍,并且T3000的ModBus通信模塊顯示已鏈接,但無數據傳輸筆者對ModBus通信的通俗理解是“通過網絡,一個控制器使用已確認的公共消息結構和格式,向被訪問設備發送請求,然后接收響應,包括偵測錯誤和記錄,從而實現通信”。簡單地理解是主機發送訪問請求或指令,從機執行,然后反饋給主機。
經檢查從機PLC側發現:
(1)CP341的傳輸協議已經定義了FC3指向的數據塊DB100。
(2)DB100數據塊是空的。
(3)DB100數據塊沒有被任何函數引用,也沒有找到用于從機PLC內數據傳輸的程序塊。
針對以上情況,結合生活污水處理系統的PLC源程序、信號點表、IO接線圖,重新編寫了數據傳輸程序和DB100數據塊程序。
(1)數據傳輸函數示例。
CALL ?"RTD"
IN :=DB40.DBD10 ? ? ? ? ? ? ? ? ? ? ? ? ? ?//液位數值,實數
OUT:="modbusData".a00GRK10CL001 ? ? ? ? ? //轉換后的整數
備注:RTD功能塊實現的功能是將REAL格式的數據轉換為WORD格式。
(2)RTD的數據類型轉換程序如下。
SET
SAVE
= ? ? L ? ? ?0.1
L ? ? #IN
RND
JO ? ?I007
PUSH
AD ? ?DW#16#FFFF8000
JZ ? ?I008
XOD ? DW#16#FFFF8000
JZ ? ?I008
I007: CLR
= ? ? L ? ? ?0.1
I008: TAK
CLR
A ? ? L ? ? ?0.1
SAVE
T ? ? #OUT
SAVE
BE
對于液位報警,閥門和電機狀態的傳輸依然采用Word,將狀態的位直接賦值到DB100 WORD對應的位上,例如:
A ? ? DB80.DBX ? 28.2 ? ? ?//液位報警的狀態
= ? ? DB100.DBX ? 16.0
A ? ? I ? ? ?0.0 ? ? ? ? ? ?//電機和閥門的狀態
= ? ? DB100.DBX ? 16.6
經反復研究發現:T3000 AI08邏輯塊的最大的訪問起始地址N+8-1必須小于等于DB100已定義的最大數據段地址,否則相應的T3000邏輯塊會報錯。
根據該發現,重新修改DB100數據塊程序。該通信正常工作,信號點核對也順利完成,問題被解決。
2 ?結論
該通信問題的解決,充分體現了SEPCOIII作為國際EPC總承包商的技術管理能力和一線技術人員勇于挑戰不服輸的工作作風。同時,也為今后的類似系統的通信工程的技術管理積累了一定的經驗和值得借鑒的范例。對于采用CP341和RS485異步串行傳輸的Modbus RTU通信系統。在采購合同中要明確供貨責任和細節,應加強以下幾方面的管理。
(1)主系統和分系統設計分包商需共同確定類似表1的通信參數。
(2)主分系統分包商共同確認接口類型。
(3)分系統分包商在設計階段提交信號點表給主控系統分包商整理。
(4)分系統分包商除提交信號點表外,還需提交接線圖、PLC程序的PDF邏輯圖。
(5)主控系統分包商負責按照分系統分包商提供的信號點表和系統畫面組態主控系統,并對可能存在的問題及時提出合理技術要求和建議。
參考文獻
[1] 呂國芳,唐海龍,李進,等.基于ModbusRTU的串口調試軟件的實現[J].計算機技術與發展,2009,19(9):236-238.
[2] 謝啟,顧啟民,涂水林,等.基于LabVIEW的ModbusRTU通信協議的實現[J].煤礦機械,2006,27(12):95-97.
[3] 馮向科,鄧瑩.基于MODBUS RTU通信協議下的CRC算法實現[J].電腦知識與技術,2006(8):43.