流速儀通訊協議
一協議說明
1、本機采用主從握手模式
波特率 9600 數據 8位 無校驗 停止位 1
主機采集液位數據格式如下:
01 03 00 00 00 02 xx xx
從機地址 功能碼 寄存器起始地址 讀取寄存器個數 CRC
從機回碼數據格式如下:
01 03 04 9D B2 3E 0F xx xx
從機地址 功能碼 字節數 數據 CRC
從機地址——默認 01 十六進制 支持主機修改
如:9D B2 3E 0F ——對應十進制為0.140米
2、寄存器表
寄存器地址 | 寄存器個數 | 變量名稱 | 單位 | 數據類型 |
01 02 | 02 | 液位 | 米 | IEEE754標準單精度浮點數 |
03 04 | 02 | 流速 | 米 | IEEE754標準單精度浮點數 |
05 06 | 02 | 流量 | 立方米/秒 | IEEE754標準單精度浮點數 |
連續讀取6個寄存器
01 03 00 00 00 06 C5 C8
01 03 0C E1 00 40 C0 C1 01 44 00 00 00 00 00 6C 84
液位 流速 流量
3、數據格式
IEEE754標準單精度浮點數由1位符號位+8位階碼+23位尾數組成,用四位十六進制數表示。如124.75用十六進制表示為42 F9 80 00。計算方法是:
124.75換算成二進制:1111100.11
用科學計數法表示為:1.11110011*2^6
階碼6+127=133,并用0表示正,1表示負。因此124.75的二進制數為:
0 10000101 11110011000000000000000B=42F98000H
4、CRC循環冗余校驗
循環冗余校驗CRC區為2字節,含一個16位二進制數據。由發送設備計算CRC值,并把計算值附在信息中,接收設備在接收信息時,重新計算CRC值,并把計算值與接收的在CRC區中實際值進行比較,若兩者不相同,則產生一個錯誤。
CRC開始時先把寄存器的16位全部置成“1”,然后把相鄰2個8位字節的數據放入當前寄存器中,只有每個字符的8位數據用作產生CRC,起始位,停止位和奇偶校驗位不加到CRC中。
產生CRC期間,每8位數據與寄存器中值進行異或運算,其結果向右移一位(向LSB方向),并用“0”填入MSB,檢測LSB,若LSB為“1”則與預置的固定值異或,若LSB為“0”則不作異或運算。
重復上述處過程,直至移位8次,完成第8次移位后,下一個8位數據,與該寄存器的當前值異或,在所有信息處理完后,寄存器中的Z終值為CRC值。產生CRC的過程:
1、把16位CRC寄存器置成FFFFH.
2、*個8位數據與CRC寄存器低8位進行異或運算,把結果放入CRC寄存器。
3、CRC寄存器向右移一位,MSB填零,檢查LSB.
4、(若LSB為0):重復3,再右移一位。
(若LSB為1):CRC寄存器與Aool H 進行異或運算
5、重復3和4直至完成8次移位,完成8位字節的處理。
6、重復2至5步,處理下一個8位數據,直至全部字節處理完畢。
7、CRC寄存器的Z終值為CRC值。
8、把CRC值放入信息時,高8位和低8位應分開放置。
發送信息中的16 位CRC值時,先送低8位,后送高8位。