摘 要:西門子 sitrans fus 超聲波流量的表頭支持 4-20ma 電流信號輸出和 rs232 文本日志輸出,都無法與門采 用 modbus 協(xié)議的取水監(jiān)測設(shè)備進(jìn)行通信。針對此問題,本文自主設(shè)計(jì)并實(shí)現(xiàn)了一種支持modbus 協(xié)議的通訊模塊,能夠?qū)崟r解析 流量計(jì)表頭 232 端口輸出的文本信息,并將其轉(zhuǎn)換成 modbus 協(xié)議報(bào)文,與取水監(jiān)測設(shè)備進(jìn)行通信。該通訊模塊具有結(jié)構(gòu)簡單、可 拓展性強(qiáng)、成本低的優(yōu)點(diǎn)。
1 概述
西門子 sitrans fus 外夾式蒸汽流量計(jì)的標(biāo)準(zhǔn)表頭支 持 4- 20ma 電流信號輸出,而門的取水監(jiān)測設(shè)備應(yīng)用層 采用的是 modbus 協(xié)議,物理層采用的是 rs485 標(biāo)準(zhǔn),無法與sitrans fus 流量計(jì)的表頭通信。針對這一問題,本文自主設(shè) 計(jì)并實(shí)現(xiàn)了一種支持 modbus 協(xié)議的通信模塊,使得超聲波流 量計(jì)表頭與取水監(jiān)測設(shè)備可以以 modbus 協(xié)議進(jìn)行通訊。
2 系統(tǒng)架構(gòu)
圖 1 為本文設(shè)計(jì)的 modbus 通訊模塊與取水流量監(jiān)測設(shè)備、 蒸汽流量計(jì)表頭組成的系統(tǒng)架構(gòu)示意圖。該模塊通過sitrans fus 蒸汽流量計(jì)表頭的 232 接口與流量計(jì)表頭通 信;通過 485 接口,以 modbus 協(xié)議與門的取水監(jiān)測設(shè)備 通信。通訊模塊將蒸汽流量計(jì)的信息解析并封裝成 modbus報(bào)文,提供給取水監(jiān)測設(shè)備讀取。硬件方面,采用成熟的stm32f407 開發(fā)板,帶有 232 接口和 485 接口,本文主要實(shí)現(xiàn)軟件部分的功能。
3 軟件設(shè)計(jì)
3.1 軟件架構(gòu)
modbus 通訊模塊的軟件架構(gòu)如圖 2 所示,分為硬件層、硬 件抽象層,中間層和應(yīng)用層。中間層包括一個實(shí)時操作系統(tǒng)freertos 和一個針對嵌入式環(huán)境開發(fā)的輕量級 modbus 協(xié)議庫freemodbus。在應(yīng)用層,主要創(chuàng)建了三個任務(wù),232_task 負(fù)責(zé)讀 取和解析流量計(jì)表頭輸出的文本信息,modbus_task 負(fù)責(zé)存儲 解析后的流量計(jì)數(shù)據(jù)到 modbus 寄存器表,以及以 modbus 協(xié)議 與取水監(jiān)測設(shè)備通信,led_task 是一個輔助任務(wù),主要用來提示程序運(yùn)行狀態(tài)。
3.2 軟件流程圖
圖 3 為 modbus 通訊模塊的軟件流程圖,創(chuàng)建的三個任務(wù)都是以 freertos 系統(tǒng)的消息(message)來驅(qū)動。
4 測試與通訊聯(lián)調(diào)
modbus 通訊模塊如圖 4 所示。為保證供電穩(wěn)定,使用了電源 切換裝置給主板供電,共有主副兩路 5v 電源。
在 pc 上使用工具測試軟件 modbus poll,作為 modbus主機(jī)對通訊模塊進(jìn)行測試。通訊模塊作為 modbus 從機(jī)響應(yīng)modbus poll 軟件發(fā)出的請求。通訊模塊內(nèi)部使用modbus 的輸入寄存器(input register)存儲流量計(jì)數(shù)據(jù)。modbus poll 發(fā)送的測試命令字節(jié)流為:01 04 00 00 0014 f0 05。其中 0x01 為 modbus 從機(jī)地址,0x04 功能碼為讀取 輸入寄存器命令,0x0000 為讀取寄存器的起始地址,0x0014(20)為讀取寄存器的個數(shù),0xf0 0x05 為 crc 校驗(yàn)碼。
modbus poll 通訊測試結(jié)果如圖 5 所示:tx = 24140,err =0,id = 1,f = 04,sr = 1000ms,log = on。 其 中 ,tx 為modbus poll 發(fā)送命令次數(shù),也就是說在測試期間 modbus poll軟件共發(fā)送讀輸入寄存器命令 24140 次(發(fā)送間隔為 1s,測試 時間為 6.7 小時);err 為通訊錯誤數(shù),err = 0 表明 modbus 通訊模塊正確響應(yīng)次數(shù)為 24140 次(錯誤數(shù)為 0)。
5 結(jié)論
本文針對 fus 蒸汽流量計(jì)無 modbus 通訊接口,無法與取 水監(jiān)測設(shè)備通訊的問題,自主設(shè)計(jì)并實(shí)現(xiàn)了一種基于微處理器stm32f407 的低成本 modbus 通訊模塊。在通訊模塊的主控芯 片 上 移 植 了 開 源 代 碼 庫 freemodbus 和 開 源 操 作 系 統(tǒng)freertos,實(shí)現(xiàn)了對流量計(jì)表頭輸出文本的解析,以及與modbus 主機(jī)的通訊,從而實(shí)現(xiàn)了給 fus 蒸汽流量計(jì)表頭增加modbus 通訊的功能。測試結(jié)果表明,該通訊模塊工作穩(wěn)定可靠,具備了在較高通訊頻率下正確響應(yīng) modbus 主機(jī)請求的能力,達(dá)到了實(shí)用要求。該通訊模塊也具備一定的可拓展性,可應(yīng)用 在公司其它 fus 蒸汽流量計(jì)上,并且很容易通過 485 總線與dcs 系統(tǒng)或 plc 進(jìn)行通訊。
相關(guān)推薦:磁翻板液位計(jì)、流量計(jì)、電磁流量計(jì)、防腐磁浮子液位計(jì)、雷達(dá)液位計(jì)、熱電偶、上海自動化儀表有限公司、電磁流量計(jì)、液位傳感器