徐亮
?
基于MODBUS_RTU總線的遠(yuǎn)程I/O模塊的設(shè)計(jì)*
徐亮
(江蘇信息職業(yè)技術(shù)學(xué)院機(jī)電工程學(xué)院,江蘇 無(wú)錫 214153)
針對(duì)目前在工控領(lǐng)域各種品牌遠(yuǎn)程I/O模塊形成的技術(shù)壟斷現(xiàn)狀,提出了一種基于MODBUS_RTU總線的遠(yuǎn)程I/O模塊的設(shè)計(jì)方案。該模塊以STM32為核心控制器,具備4路開(kāi)關(guān)量輸入與4路開(kāi)關(guān)量輸出,可與目前各種主流PLC配合使用。實(shí)踐證明,該模塊具有使用方便、成本低廉、性能穩(wěn)定、抗干擾強(qiáng)等優(yōu)點(diǎn),方案具有一定的推廣價(jià)值。
遠(yuǎn)程I/O;MODBUS_RTU;STM32;RS-485
遠(yuǎn)程I/O模塊是分布式控制系統(tǒng)中較為常見(jiàn)的模塊之一[1],通過(guò)遠(yuǎn)程I/O模塊,可將PLC的I/O觸點(diǎn)經(jīng)總線延伸至較遠(yuǎn)距離。目前世界上主流的PLC生產(chǎn)廠家都有各自的遠(yuǎn)程I/O模塊,文獻(xiàn)[1]介紹了一種由西門(mén)子S7-300 PLC與FB遠(yuǎn)程I/O模塊構(gòu)成的用于港口碼頭的橋式起重機(jī)控制系統(tǒng),PLC與遠(yuǎn)程I/O模塊之間通過(guò)PROFIBUS總線連接;文獻(xiàn)[2]介紹了一種由三菱Q系列PLC及AJ65BTB1遠(yuǎn)程I/O模塊構(gòu)成的自動(dòng)灌裝生產(chǎn)線,PLC與遠(yuǎn)程I/O模塊之間通過(guò)CC-Link總線連接;文獻(xiàn)[3]介紹了一種由施耐德Premium系列PLC與Advantys遠(yuǎn)程I/O模塊構(gòu)成的物流滾道控制系統(tǒng),PLC與遠(yuǎn)程I/O模塊之間通過(guò)Fipio總線連接;文獻(xiàn)[4]介紹了一種由Rockwell ControlLogix 5000 PLC與其品牌遠(yuǎn)程I/O模塊構(gòu)成的氣力輸煤裝置,PLC與遠(yuǎn)程I/O模塊之間通過(guò)工業(yè)以太網(wǎng)連接。
雖然各PLC生產(chǎn)廠家都有相應(yīng)的遠(yuǎn)程I/O模塊產(chǎn)品,但僅限于與自家生產(chǎn)的PLC配合使用,不具備開(kāi)放性,形成了技術(shù)壟斷。本文將介紹一種以STM32單片機(jī)為控制單元,遵循MODBUS_RTU總線協(xié)議的通用型遠(yuǎn)程I/O模塊(下文簡(jiǎn)稱“模塊”)的設(shè)計(jì)方法,可與任意支持MODBUS_RTU總線協(xié)議的PLC配合使用。
模塊電路除了電源及接插件之外,其余部分如圖1所示,由核心控制器(左上)、RS-485電平轉(zhuǎn)換電路(左下)、4路光耦輸入電路(右上)及4路繼電器輸出電路(右下)四部分構(gòu)成。
模塊采用工業(yè)現(xiàn)場(chǎng)常見(jiàn)的直流24 V作為輸入電壓,穩(wěn)壓后形成直流3.3 V供模塊各部分工作。單片機(jī)采用了基于ARM Cortex-M3內(nèi)核的STM32F103C6T6A,該單片機(jī)采用8 MHz無(wú)源晶振,通過(guò)內(nèi)部鎖相環(huán)可將系統(tǒng)主頻最高倍頻至72 MHz,單片機(jī)快速的處理能力保證了模塊對(duì)總線指令執(zhí)行的高效性[5]。模塊與RS-485總線之間采用了MAX3485進(jìn)行電平轉(zhuǎn)換,RS-485總線可以實(shí)現(xiàn)PLC與模塊之間的遠(yuǎn)距離通信,理論上最遠(yuǎn)可達(dá)1 200 m。模塊支持4路開(kāi)關(guān)量輸入與4路開(kāi)關(guān)量輸出,分別通過(guò)光耦、繼電器將單片機(jī)引腳與外電路隔離。
圖1 模塊主體電路
模塊遵循MODBUS_RTU通信協(xié)議[6],一個(gè)或多個(gè)模塊可作為總線從站被主站輪詢。主站通常是指PLC,也可以是計(jì)算機(jī),但計(jì)算機(jī)通常僅對(duì)模塊參數(shù)設(shè)定及測(cè)試。
模塊嚴(yán)格遵守MODBUS_RTU通信協(xié)議,線圈與寄存器地址分別如表1和表2所示。
模塊可解析4條命令并響應(yīng):①讀輸入開(kāi)關(guān)量線圈;②寫(xiě)輸出開(kāi)關(guān)量線圈;③讀寄存器;④寫(xiě)寄存器。以命令①舉例說(shuō)明,其命令與響應(yīng)數(shù)據(jù)包格式如圖2所示。
表1 線圈地址
只讀線圈只寫(xiě)線圈 線圈地址對(duì)應(yīng)開(kāi)關(guān)量線圈地址對(duì)應(yīng)開(kāi)關(guān)量 0000HDI10004HDO1 0001HDI20005HDO2 0002HDI30006HDO3 0003HDI40007HDO4
表2 寄存器地址
寄存器地址含義 0000H波特率 0001H校驗(yàn)方式/站號(hào)
圖2 命令①及響應(yīng)數(shù)據(jù)包格式
不妨假定從站站號(hào)為1,DI1~DI4的狀態(tài)分別為ON、OFF、OFF、ON,主站發(fā)出的命令數(shù)據(jù)包為“01 01 00 00 00 04 3D C9”(HEX格式),從站返回的數(shù)據(jù)包為“01 01 01 09 91 8E”(HEX格式)。
單片機(jī)程序流程如圖3所示。
圖3 單片機(jī)程序流程
波特率、校驗(yàn)方式與站號(hào)這三項(xiàng)通信參數(shù)被保存在單片機(jī)的FLASH中,在單片機(jī)上電初始化之時(shí)從FLASH讀取并更新相應(yīng)的MODBUS_RTU寄存器,之后便進(jìn)入無(wú)限循環(huán)狀態(tài)。在每一次循環(huán)時(shí),單片機(jī)首先讀取模塊的4路輸入開(kāi)關(guān)量,并更新相應(yīng)的MODBUS_RTU線圈值,接著根據(jù)通過(guò)串口讀取來(lái)自總線的命令并解析。若為命令①或命令③,則返回相應(yīng)的線圈或寄存器值;若為命令②,則完成相應(yīng)的線圈值更新以及輸出驅(qū)動(dòng)繼電器動(dòng)作后返回響應(yīng)數(shù)據(jù)包;若為命令④,則完成相應(yīng)的寄存器值更新以及將參數(shù)寫(xiě)入FLASH后返回響應(yīng)數(shù)據(jù)包。
模塊配置與測(cè)試程序如圖4所示。
圖4 模塊配置與測(cè)試程序界面
模塊配置與測(cè)試程序由C#2013開(kāi)發(fā)而成,具有模塊通信參數(shù)設(shè)定與模塊I/O功能測(cè)試的作用。在使用該程序時(shí),要求將計(jì)算機(jī)僅與一個(gè)模塊通過(guò)RS-485總線連接在一起。在I/O測(cè)試過(guò)程中,若圖4中DI-或DO-(=1,2,3,4)對(duì)應(yīng)的方框顯示為綠色,表示為狀態(tài)ON,若為紅色,表示為狀態(tài)OFF,若全部為灰色,表示為通信出錯(cuò)。
功能測(cè)試電路如圖5所示,由1臺(tái)信捷XC3-14 PLC與2只I/O模塊構(gòu)成,將PLC作為RS-485總線主站,模塊作為從站。
圖5 功能測(cè)試電路
功能測(cè)試的內(nèi)容為通過(guò)模塊1上的按鈕SB點(diǎn)動(dòng)連接在模塊2上的指示燈L,將兩只模塊的通信參數(shù)均設(shè)為波特率19 200 bps、校驗(yàn)方式偶校驗(yàn),以上為信捷PLC默認(rèn)通信參數(shù),站號(hào)分別為1,2;編寫(xiě)PLC程序,進(jìn)行通電測(cè)試;PLC程序分為通信程序與點(diǎn)動(dòng)程序兩部分。通信程序的功能為周期性輪詢兩只I/O模塊,讀取模塊的線圈0~3的值存入PLC映射輔助繼電器,將PLC映射輔助繼電器值寫(xiě)入線圈4~7,例如可建立如表3所示映射關(guān)系。
表3 模塊線圈與PLC輔助繼電器映射表
PLC輔助繼電器模塊1線圈PLC輔助繼電器模塊2線圈 M10000M10080 M10011M10091 M10022M10102 M10033M10113 M10044M10124 M10055M10135 M10066M10146 M10077M10157
測(cè)試證實(shí),按鈕SB可點(diǎn)動(dòng)指示燈L,但明顯存在延遲,延遲的時(shí)間與PLC輪詢周期有關(guān),總體測(cè)試成功。
遠(yuǎn)程I/O模塊是PLC技術(shù)發(fā)展過(guò)程中出現(xiàn)的重要產(chǎn)物,模塊在使用中不需要編程,只需要簡(jiǎn)單配置參數(shù)即可工作,使用方便,成本比PLC低,很適合用于一些控制對(duì)象分散的現(xiàn)場(chǎng)。本文介紹的遠(yuǎn)程I/O模塊,由于采用了開(kāi)放的MODBUS_RTU總線協(xié)議,開(kāi)放了內(nèi)部線圈和寄存器地址,可與目前各種主流PLC配合使用,使得使用成本進(jìn)一步降低。而且經(jīng)反復(fù)測(cè)試,該模塊具有較好的穩(wěn)定性及較強(qiáng)的抗干擾能力,因此本設(shè)計(jì)方案具有較好的市場(chǎng)前景以及一定的推廣價(jià)值。
[1]顧正歡.港口橋式起重機(jī)電氣控制系統(tǒng)遠(yuǎn)程IO系統(tǒng)應(yīng)用探析[J].中國(guó)設(shè)備工程,2017(12):143-144.
[2]王濤,鄺銳彬.基于CC-Link網(wǎng)絡(luò)的自動(dòng)灌裝生產(chǎn)線控制系統(tǒng)設(shè)計(jì)[J].電氣自動(dòng)化,2017,39(06):94-95,98.
[3]張春慶.施耐德自動(dòng)化控制系統(tǒng)在缸體加工線物流滾道上的應(yīng)用[J].中國(guó)高新技術(shù)企業(yè),2015(22):50-51.
[4]唐修冬,朱虹,姜文妹.遠(yuǎn)程I/O控制系統(tǒng)在氣力輸煤裝置中的應(yīng)用[J].儀器儀表用戶,2012,19(05):44-46.
[5]朱瑞昌,林勇.面向電力設(shè)備的一體化智能監(jiān)控系統(tǒng)[J].儀表技術(shù)與傳感器,2018(03):67-70,121.
[6]印松.基于Labview的動(dòng)力電池密封性測(cè)試系統(tǒng)[J].儀表技術(shù)與傳感器,2018(04):72-75.
徐亮(1981—),男,江蘇無(wú)錫人,講師,碩士,研究方向?yàn)榭刂乒こ?、自?dòng)化網(wǎng)絡(luò)通信。
江蘇省高校自然科學(xué)研究項(xiàng)目(編號(hào):17KJB510019)
2095-6835(2018)24-0040-03
TP212
A
10.15913/j.cnki.kjycx.2018.24.040
〔編輯:張思楠〕