張宏波
邯鄲宏大化纖機械有限公司(中國)
在化纖生產過程中,原液經紡絲泵通過噴絲板擠壓出,所得纖維經酸液等環境固化后,再通過牽引機、水洗機、烘干機和卷繞機等設備,根據工藝要求進行牽伸干燥直至最后成型,這往往需要監控很多工藝參數。本文介紹了安川A1000型變頻器運行情況的監控操作過程,采用了西門子S7-1500系列可編程邏輯控制器(PLC),并選擇了廣泛應用的Modbus通信協議進行數據監控。
Modbus是由Modicon(現為施耐德電氣公司的一個品牌)在1979年開發的,是全球第一個真正用于工業現場的總線協議。Modbus網絡是一個工業通信系統,由帶智能終端的可編程序控制器和計算機通過公用線路或局部專用線路連接而成。其系統結構既包括硬件,亦包括軟件。它可應用于各種數據采集和過程監控。Modbus網絡只有一個主機,所有通信都由它發出。其允許多個設備連接在同一個網絡上進行通信,例如,它允許添加一個測量溫度和濕度的裝置,并且將結果發送給計算機。在數據采集與監視控制系統(SCADA)中,Modbus通常用來連接監控計算機和遠程終端控制系統(RTU)。
Modbus從誕生之日起,比其他通信協議使用得更廣泛,主要有以下原因:公開發表并且無版權要求;易于部署和維護;對供應商而言,修改移動本地的比特或字節沒有很多限制。正是因為這些優點,很多廠家都在產品中集成了此通信協議,安川公司也是其中之一。安川公司集成使用的 MEMOBUS/Modbus通信協議,可與S7-1500系列等含有Modbus端口的PLC進行串行通信。
MEMOBUS/Modbus通信由PLC(1個主站)和最多 31臺從站構成。主站和從站的通信(串行通信)通常以主站開始通信、從站響應的方式進行。主站對各個從站預先設定地址編號,并指定該編號進行信號通信。接到主站指令的從站執行指定的功能,對主站作出響應。通信網絡連接如圖1所示。

圖1 MEMOBUS/Modbus通信網絡連接示意圖
MEMOBUS/Modbus通信規格如表1所示。從規格表中可看出,數據長度和停止位是固定的,因此需設置相關參數。波特率為9.6 kbps時,無校驗和變頻器地址的相關參數如表2所示。

表1 MEMOBUS/Modbus通信規格

表2 MEMOBUS/Modbus通信參數設置
MEMOBUS通信采取主站對從站發出指令,從站進行響應的形式。接收發送的信息格式按從站地址、功能碼、數據和錯誤校驗碼順序構成。根據指令(功能)內容的不同,數據部的長度也隨之發生變化,如表3所示。

表3 功能碼數據格式
由于只需要監控實際運行數據,因此本文選擇功能碼03H。需要注意的是,使用功能碼03H(讀取)最多只能讀取16個存儲寄存器的內容,超過16個寄存器會出現通訊不成功的情況。
S7-1500系列PLC可以在主機架或分布式輸入/輸出(I/O)站點(如ET 200MP和ET 200SP站)使用點對點通信模塊實現Modbus-RTU通信,如需在分布式I/O站上實現Modbus-RTU通信,推薦通過Profinet或Profibus的方式擴展ET 200MP或ET 200SP站,在ET200MP或ET 200SP上配置高性能(HF)的點對點通信模塊。無論是安裝在S7-1500主機架的模板,還是分布式I/O站的模板,都可作為Modbus-RTU的主站或從站,通過直接調用Modbus-RTU相關程序塊即可實現Modbus-RTU通信,而無需硬件狗。
根據實際使用通信物理接口的不同,S7-1500主機架和ET 200 MP可使用的模板分CM PtP RS232 HF(通信模塊6ES7 541-1AD00-0AB0)和CM PtP RS 422/485 HF(通信模塊6ES7 541-1AB00-0AB0)兩種。普通的點對點通信模塊(型號BA結尾)無法通過本文檔實現Modbus-RTU通信,而ET 200SP的點對點通信模塊只有一個,即CM PtP(6ES7 137-6AA00-0BA0),該模塊物理接口支持RS-232/422/485。
S7-1500 Modbus-RTU還具有下述特點:無論點對點通信模塊安裝在S7-1500主機架還是分布式I/O站中,也無論分布式I/O站是通過ET 200MP還是ET 200SP實現Modbus-RTU通信,其組態步驟、方法、調用的程序塊及注意事項等均完全相同。
研究選用了含422/485接口的通信模板6ES7 541-1AB00-0AB0。S7-1500 Modbus-RTU支持的Modbus功能代碼如表4和表5所示。

表4 用于讀取數據的功能(讀取分布式I/O)
注:1)表示用于擴展尋址。

表5 用于寫入數據的功能(更改分布式I/O和程序數據)
S7-1500系列PLC實現Modbus-RTU通信功能,需要調用以下指令,如表6所示。

表6 S7-1500系列PLC實現Modbus-RTU通信功能的指令
其中,“Modbus_Comm_Load”指令用于通信模塊的組態;“Modbus_Master”指令和“Modbus_Slave”指令分別實現Modbus 主站通信和Modbus 從站通信。這3條指令是通過“Modbus_Comm_Load”指令的“MB_DB”參數實現關聯的,如圖2所示。

圖2 Modbus通信初始化指令
由于 Modbus 指令讀取或寫入的數據區必須為指針尋址,因此必須是有絕對地址的區域才可訪問,而 S7-1500創建的 DB塊缺省為優化的 DB塊,變量沒有絕對地址,無法直接使用。本例中創建 DB塊,并在該 DB塊內創建一個名為“data”的數組,類型為 WORD,長度為 20,即創建了20個字的存儲空間。然后將該 DB 塊的屬性設置成無“優化的塊訪問”,從而重新編譯并生成新的DB 塊。此時可看到每個變量都有偏移地址了,如圖3所示。

圖3 取消DB塊“優化的塊訪問”選項
在本項目中,共有8臺變頻器需讀取數據,因而采用了輪詢訪問的機制。在“data”數據塊中建立了一個“slave_address”的變量用來確定當前需訪問的變頻器的地址。在讀取到當前變頻器的數據后再開始下一個變頻器數據的訪問。根據項目需求,“Modbus_Master”指令應按表7所示操作進行賦值。實際編程結果如圖4所示。

表7 “Modbus_Master”指令管腳參數設置

圖4 Modbus讀取子站數據結果圖
通過數據監控表或項目中建立的“data”接收數據塊,可以看到通過Modbus通信從從站采集到的數據,這些數據可以顯示在觸摸屏或上位機軟件上,并且可以進行數據歸檔和數據分析,為工藝改進提供幫助。
在使用了Modbus作為通信協議后,相應的參數設置和調試相對簡單,并且這種通信協議的應用相當廣泛,可靠性高,可實現大量數據的傳輸工作。由PLC讀取的變頻器參數實時傳輸到上位機,供工藝人員查詢和參考,從而為工藝改進提供幫助。