Modbus協(xié)議在金屬管浮子流量計(jì)中的應(yīng)用
隨著通信技術(shù)、集成電路技術(shù)的發(fā)展,傳統(tǒng)的現(xiàn)場檢測儀器的智能化和數(shù)字化程度在逐漸提升。現(xiàn)場總線作為開放化、數(shù)字化、多點(diǎn)通訊的底層控制網(wǎng)絡(luò),成為了近代工業(yè)控制系統(tǒng)的熱門研究項(xiàng)目。將Modbus通訊協(xié)議移植到金屬管浮子流量計(jì),使得檢測儀表更具智能化和網(wǎng)絡(luò)化,同時(shí)為實(shí)現(xiàn)數(shù)字化組網(wǎng)提供了可行接口。經(jīng)過調(diào)試表明移植后的Modbus通訊協(xié)議可以實(shí)現(xiàn)基本功能,取得了預(yù)期的效果。
浮子流量計(jì)是一種經(jīng)典的變面積式流量計(jì),具有結(jié)構(gòu)簡單、直觀、壓損小、測量范圍大、運(yùn)行可靠、可測中小流量及低雷諾數(shù)流量、維護(hù)方便、壽命長,對儀表前后直管段長度要求不高等優(yōu)點(diǎn)。 金屬管浮子流量計(jì)可以適應(yīng)高溫、高壓、強(qiáng)腐蝕、劇毒等多種苛刻環(huán)境,較少的可動(dòng)部件、便于維護(hù),解決了生產(chǎn)中的許多難題。
基于 Modbus 協(xié)議的金屬管浮子流量計(jì),通過選擇低功耗的微處理器和通訊芯片,將具有開放協(xié)議的 Modbus 協(xié)議移植到傳統(tǒng)的金屬管浮子流量計(jì)中,使得儀表具有現(xiàn)場總線組網(wǎng)功能。
1.金屬管浮子流量計(jì)整體結(jié)構(gòu)設(shè)計(jì)
圖1是金屬管浮子流量計(jì)整體結(jié)構(gòu)圖。 流量測量過程可概括為: 磁阻傳感器將浮子位移信號(hào)轉(zhuǎn)化為電信號(hào)送給信號(hào)處理電路, 經(jīng)過信號(hào)處理電路進(jìn)行放大濾波后再經(jīng)由 AD 采樣模塊采樣,***后送給微處理器處理,微處理器經(jīng)過一系列處理后得到當(dāng)前流量信息, 送給液晶模塊顯示或者通過 Modbus 模塊將信號(hào)遠(yuǎn)傳給其他設(shè)備使用。
2.Modbus 模塊硬件電路設(shè)計(jì)
Modbus 通信協(xié)議有兩種串行傳輸模式:ASCII 模式和 RTU(遠(yuǎn)程終端單元)模式,與這兩種模式對應(yīng)的幀格式是ASCII 幀格式和 RTU 幀格式。 本文采用 RTU 幀格式,其數(shù)據(jù)幀格式為如表 1 所示。
一次發(fā)送的數(shù)據(jù)幀必須是作為一個(gè)連續(xù)的數(shù)據(jù)流進(jìn)行傳輸。Modbus 的 RTU 模式規(guī)定不同數(shù)據(jù)幀之間的間隔是 3.5 個(gè)字節(jié)通信時(shí)間以上(即起始位和結(jié)束符 T1-T2-T3-T4)。
CRC 校驗(yàn)是為了防止傳送過程中傳輸錯(cuò)誤,將自己計(jì)算的校驗(yàn)碼與接收的校驗(yàn)碼進(jìn)行對比, 相同則確認(rèn)接收正確繼續(xù)解析報(bào)文,否則接收到的是誤碼并停止解析報(bào)文。
Modbus 通訊模塊硬件電路比較簡單 ,采用 MAXIM(美信 )公司的 Max3072 芯片將數(shù)字信號(hào)轉(zhuǎn)換為差壓信號(hào)傳輸,圖 2 為Modbus 通訊模塊硬件設(shè)計(jì)圖, 通過 USART 與 CPU 進(jìn)行數(shù)據(jù)交互。
Modbus 模塊通過兩根串口線 RX_485 和 TX_485 與 CPU相連,經(jīng)過 MAX3072 后轉(zhuǎn)化為差壓信號(hào)在 485 總線上傳輸,差壓信號(hào)幅值在 200mV 左右。
3.Modbus 模塊軟件設(shè)計(jì)
Modbus 通訊模塊功能是實(shí)現(xiàn)流量儀表與主機(jī)或其他設(shè)備的數(shù)據(jù)交互,Modbus 模塊的信號(hào)是通過 RS485 總線進(jìn)行傳輸,其狀態(tài)轉(zhuǎn)換圖如圖 3 所示。
程序初始化結(jié)束后, 首先進(jìn)入初始狀態(tài)。 由于 Modbus 協(xié)議規(guī)定兩次幀數(shù)據(jù)傳輸?shù)臅r(shí)間間隔不能小于 30μs,因此在進(jìn)入初始狀態(tài)后會(huì)開啟定時(shí)器,30μs 以后進(jìn)入就緒狀態(tài)。 有數(shù)據(jù)傳輸時(shí),進(jìn)入接收狀態(tài),幀數(shù)據(jù)接收完成后進(jìn)入幀解析封裝狀態(tài),若接收數(shù)據(jù)出錯(cuò)則進(jìn)入錯(cuò)誤狀態(tài),封裝后再進(jìn)入發(fā)送狀態(tài), 若數(shù)據(jù)正確則直接完成封裝進(jìn)入發(fā)送狀態(tài),數(shù)據(jù)發(fā)送完成后則再次進(jìn)入初始狀態(tài)。 Modbus 模塊軟件設(shè)計(jì)流程圖如圖 4 所示。
4.系統(tǒng)調(diào)試
Modbus 通訊模塊驗(yàn)證實(shí)驗(yàn)的目的是驗(yàn)證流量儀表能否通過 485 總線實(shí)現(xiàn)流量信息與控制臺(tái)的信息交互。 本文應(yīng)用Modbus 調(diào)試助手軟件模擬控制臺(tái)與 Modbus 模塊進(jìn)行通信 ,驗(yàn)證 Modbus 模塊能否實(shí)現(xiàn)正常通訊。 圖 5 是 Modbus 模塊與控制臺(tái)通信的電路連接圖。
為驗(yàn)證 Modbus 模塊通訊的正確性, 本文通過 Modbus 調(diào)試助手往 Modbus 模塊下發(fā)數(shù)據(jù),若能返回正確數(shù)據(jù),則證明通訊成功。 圖 6 為通過 Modbus 調(diào)試助手與 Modbus 模塊通訊圖。
03(0x03)命令為例進(jìn)行調(diào)試的測試結(jié)果圖 ,03 命令的能是讀取特定寄存器的值。 串口調(diào)試助手下發(fā)的數(shù)據(jù)為 “01 03 00 00 00 01 84 0A”, 其中 01 為設(shè)備地址,03 為命令碼,00 00 為起始地址 ,00 01 為寄存器數(shù)量 ,84 0A 為 CRC 校驗(yàn)碼。 Modbus 回發(fā)數(shù)據(jù)為 “01 03 02 08 10 BE 48”,其中 01為設(shè)備地址,03 為命令碼,02 為字節(jié)數(shù),08 10 為寄存的值,BE 48 為 CRC 校驗(yàn)碼。 測試結(jié)果表明,Modbus 模塊能正常工作。
5.結(jié)束語
選擇低功耗的微處理器和通訊芯片, 將具有開放協(xié)議的Modbus 協(xié)議移植到傳統(tǒng)的金屬管浮子流量計(jì)中,實(shí)現(xiàn)了硬件平臺(tái)設(shè)計(jì)和軟件平臺(tái)設(shè)計(jì),調(diào)試結(jié)果表明,移植后的 Modbus 協(xié)議能夠與控制臺(tái)實(shí)現(xiàn)實(shí)時(shí)通信,使得儀表具有現(xiàn)場總線組網(wǎng)功能。