徐亮
?
基于MODBUS_RTU總線的遠程I/O模塊的設計*
徐亮
(江蘇信息職業技術學院機電工程學院,江蘇 無錫 214153)
針對目前在工控領域各種品牌遠程I/O模塊形成的技術壟斷現狀,提出了一種基于MODBUS_RTU總線的遠程I/O模塊的設計方案。該模塊以STM32為核心控制器,具備4路開關量輸入與4路開關量輸出,可與目前各種主流PLC配合使用。實踐證明,該模塊具有使用方便、成本低廉、性能穩定、抗干擾強等優點,方案具有一定的推廣價值。
遠程I/O;MODBUS_RTU;STM32;RS-485
遠程I/O模塊是分布式控制系統中較為常見的模塊之一[1],通過遠程I/O模塊,可將PLC的I/O觸點經總線延伸至較遠距離。目前世界上主流的PLC生產廠家都有各自的遠程I/O模塊,文獻[1]介紹了一種由西門子S7-300 PLC與FB遠程I/O模塊構成的用于港口碼頭的橋式起重機控制系統,PLC與遠程I/O模塊之間通過PROFIBUS總線連接;文獻[2]介紹了一種由三菱Q系列PLC及AJ65BTB1遠程I/O模塊構成的自動灌裝生產線,PLC與遠程I/O模塊之間通過CC-Link總線連接;文獻[3]介紹了一種由施耐德Premium系列PLC與Advantys遠程I/O模塊構成的物流滾道控制系統,PLC與遠程I/O模塊之間通過Fipio總線連接;文獻[4]介紹了一種由Rockwell ControlLogix 5000 PLC與其品牌遠程I/O模塊構成的氣力輸煤裝置,PLC與遠程I/O模塊之間通過工業以太網連接。
雖然各PLC生產廠家都有相應的遠程I/O模塊產品,但僅限于與自家生產的PLC配合使用,不具備開放性,形成了技術壟斷。本文將介紹一種以STM32單片機為控制單元,遵循MODBUS_RTU總線協議的通用型遠程I/O模塊(下文簡稱“模塊”)的設計方法,可與任意支持MODBUS_RTU總線協議的PLC配合使用。
模塊電路除了電源及接插件之外,其余部分如圖1所示,由核心控制器(左上)、RS-485電平轉換電路(左下)、4路光耦輸入電路(右上)及4路繼電器輸出電路(右下)四部分構成。
模塊采用工業現場常見的直流24 V作為輸入電壓,穩壓后形成直流3.3 V供模塊各部分工作。單片機采用了基于ARM Cortex-M3內核的STM32F103C6T6A,該單片機采用8 MHz無源晶振,通過內部鎖相環可將系統主頻最高倍頻至72 MHz,單片機快速的處理能力保證了模塊對總線指令執行的高效性[5]。模塊與RS-485總線之間采用了MAX3485進行電平轉換,RS-485總線可以實現PLC與模塊之間的遠距離通信,理論上最遠可達1 200 m。模塊支持4路開關量輸入與4路開關量輸出,分別通過光耦、繼電器將單片機引腳與外電路隔離。

圖1 模塊主體電路
模塊遵循MODBUS_RTU通信協議[6],一個或多個模塊可作為總線從站被主站輪詢。主站通常是指PLC,也可以是計算機,但計算機通常僅對模塊參數設定及測試。
模塊嚴格遵守MODBUS_RTU通信協議,線圈與寄存器地址分別如表1和表2所示。
模塊可解析4條命令并響應:①讀輸入開關量線圈;②寫輸出開關量線圈;③讀寄存器;④寫寄存器。以命令①舉例說明,其命令與響應數據包格式如圖2所示。
表1 線圈地址
只讀線圈只寫線圈 線圈地址對應開關量線圈地址對應開關量 0000HDI10004HDO1 0001HDI20005HDO2 0002HDI30006HDO3 0003HDI40007HDO4
表2 寄存器地址
寄存器地址含義 0000H波特率 0001H校驗方式/站號

圖2 命令①及響應數據包格式
不妨假定從站站號為1,DI1~DI4的狀態分別為ON、OFF、OFF、ON,主站發出的命令數據包為“01 01 00 00 00 04 3D C9”(HEX格式),從站返回的數據包為“01 01 01 09 91 8E”(HEX格式)。
單片機程序流程如圖3所示。

圖3 單片機程序流程
波特率、校驗方式與站號這三項通信參數被保存在單片機的FLASH中,在單片機上電初始化之時從FLASH讀取并更新相應的MODBUS_RTU寄存器,之后便進入無限循環狀態。在每一次循環時,單片機首先讀取模塊的4路輸入開關量,并更新相應的MODBUS_RTU線圈值,接著根據通過串口讀取來自總線的命令并解析。若為命令①或命令③,則返回相應的線圈或寄存器值;若為命令②,則完成相應的線圈值更新以及輸出驅動繼電器動作后返回響應數據包;若為命令④,則完成相應的寄存器值更新以及將參數寫入FLASH后返回響應數據包。
模塊配置與測試程序如圖4所示。

圖4 模塊配置與測試程序界面
模塊配置與測試程序由C#2013開發而成,具有模塊通信參數設定與模塊I/O功能測試的作用。在使用該程序時,要求將計算機僅與一個模塊通過RS-485總線連接在一起。在I/O測試過程中,若圖4中DI-或DO-(=1,2,3,4)對應的方框顯示為綠色,表示為狀態ON,若為紅色,表示為狀態OFF,若全部為灰色,表示為通信出錯。
功能測試電路如圖5所示,由1臺信捷XC3-14 PLC與2只I/O模塊構成,將PLC作為RS-485總線主站,模塊作為從站。

圖5 功能測試電路
功能測試的內容為通過模塊1上的按鈕SB點動連接在模塊2上的指示燈L,將兩只模塊的通信參數均設為波特率19 200 bps、校驗方式偶校驗,以上為信捷PLC默認通信參數,站號分別為1,2;編寫PLC程序,進行通電測試;PLC程序分為通信程序與點動程序兩部分。通信程序的功能為周期性輪詢兩只I/O模塊,讀取模塊的線圈0~3的值存入PLC映射輔助繼電器,將PLC映射輔助繼電器值寫入線圈4~7,例如可建立如表3所示映射關系。
表3 模塊線圈與PLC輔助繼電器映射表
PLC輔助繼電器模塊1線圈PLC輔助繼電器模塊2線圈 M10000M10080 M10011M10091 M10022M10102 M10033M10113 M10044M10124 M10055M10135 M10066M10146 M10077M10157
測試證實,按鈕SB可點動指示燈L,但明顯存在延遲,延遲的時間與PLC輪詢周期有關,總體測試成功。
遠程I/O模塊是PLC技術發展過程中出現的重要產物,模塊在使用中不需要編程,只需要簡單配置參數即可工作,使用方便,成本比PLC低,很適合用于一些控制對象分散的現場。本文介紹的遠程I/O模塊,由于采用了開放的MODBUS_RTU總線協議,開放了內部線圈和寄存器地址,可與目前各種主流PLC配合使用,使得使用成本進一步降低。而且經反復測試,該模塊具有較好的穩定性及較強的抗干擾能力,因此本設計方案具有較好的市場前景以及一定的推廣價值。
[1]顧正歡.港口橋式起重機電氣控制系統遠程IO系統應用探析[J].中國設備工程,2017(12):143-144.
[2]王濤,鄺銳彬.基于CC-Link網絡的自動灌裝生產線控制系統設計[J].電氣自動化,2017,39(06):94-95,98.
[3]張春慶.施耐德自動化控制系統在缸體加工線物流滾道上的應用[J].中國高新技術企業,2015(22):50-51.
[4]唐修冬,朱虹,姜文妹.遠程I/O控制系統在氣力輸煤裝置中的應用[J].儀器儀表用戶,2012,19(05):44-46.
[5]朱瑞昌,林勇.面向電力設備的一體化智能監控系統[J].儀表技術與傳感器,2018(03):67-70,121.
[6]印松.基于Labview的動力電池密封性測試系統[J].儀表技術與傳感器,2018(04):72-75.
徐亮(1981—),男,江蘇無錫人,講師,碩士,研究方向為控制工程、自動化網絡通信。
江蘇省高校自然科學研究項目(編號:17KJB510019)
2095-6835(2018)24-0040-03
TP212
A
10.15913/j.cnki.kjycx.2018.24.040
〔編輯:張思楠〕