技術支持
電磁流量計系統軟件是如何設計的
發布時間:2022-01-12 08:10:50
電磁流量計采用的通信協議是Modbus協議,它是一種串行通信協議,使用雙絞線作為傳輸的物理介質。流量計內部有多個參數可以進行設置,如波特率、設備地址、流量單位等。電磁流量計的瞬時流量和累積流量值通過雙絞線-→防雷裝置+RS485/RS232協議轉換-+.上位計算機完成數據傳送,在上位計算機應用軟件的管理下,完成流量數據的顯示與統計。
1.通信過程
通信開始后,主機向總線上發送一幀消息,電磁流量計偵測總線狀態并接收主機送來的消息。如果消息中的地址與本站設備(即電磁流量計)地址相符,而且計算所得的16位CRC校驗碼也正確,就將收到的消息存儲在緩沖區內,接著執行主機的命令,并根據處理結果返回一幀正確的消息作為對主機的響應,其通信流程如圖2所示。
在本系統中,主要使用Modbus協議中的“03”功能碼,它的含義是連續讀取設備數據寄存器中的內容(每個寄存器占2B)。
通過設置給電磁流量計分配的地址是0FH,為了讀取流量計的瞬時流量,主機應該發出一-幀(0F0300000002C525)消息(十六進制),此幀消息中含有如下信息:
①0F:從站設備地址(流量計地址);
②03:功能碼(讀寄存器內容);
③0000:待讀寄存器首地址(瞬時流量);
④0002:讀2個連續的數據寄存器(因為數據類型是浮點);
⑤C525:CRC校驗碼(低字節在前高字節在后)。如果流量計正確收到.上面信息,就立即返回與涵管當前瞬時流量對應的消息作為對主機的響應:
0F030441B142A720F2
在這幀消息中,0F03的意義同前,04指4個字節的瞬時流量,數據內容是41B142A7,流量計發出的CRC校驗碼是20F2。
同理,為了讀取電磁流量計的累積流量,主機應發:
0F0300130004B4E2
如果流量計接收正確,就返回下列數據串:
0F0308ADDD003B4D6F3F61757F
其中當前累積流量數據為8個字節,ADDD003B4D6F3F61,CRC校驗碼是757F。
2.數據解析
由于電磁流量計中的數據是以字的形式存儲在寄存器組中的,而且數據的低位字在前,高位字在后,所以在解析流量數據之前,必須先要交換它們的順序才能得到正確結果。對于瞬時流量的4個字節(41B1)(42A7),交換順序后成為(42A7)(41B1),它是一個符合IEEE754規范的32位浮點數值,將其還原成十進制數值,結果得到涵管當前瞬時流量值83.6263m³/h。
對于累積流量,它的數據格式為:整數部分是長整型,而小數部分是32位浮點型,所以應分段交換順序。整數部分交換順序后是(003B)(ADDD),它對應十進制3911133,而小數部分交換順序后是(3F61)(4D6F),按IEEE754浮點數規范,經過轉換,其對應的十進制小數為0.8801,所以涵管當前累積流量是3911133.88m³。
3.關于CRC檢驗算法
在Modbus標準通信中,對于即將被傳輸消息中的字符串必須進行CRC校驗,目的是發現數據傳輸過程中可能出現的錯誤。常用的校驗多項式有CCITT和CRC-16,本系統采用CRC-16,其多項式為G(x)=xl6+xI5+x2+1,實際應用時取其反序。
具體來說,對于瞬時流量,是從地址字節一直校驗到數據的最后-一個字節。以流量計返回的瞬時流量數據串為例,共須校驗0F030441B142A7七個字節,所以得到的16位CRC校驗碼為F220。下面給出用VB6.0語言實現的CRC校驗程序,代碼如下:
版權所有:Copyright @ 江蘇恒大儀表有限公司 2021-2025