RS485即Modbus RTU協議,是一種主從式點對點的通訊協議,允許一臺主機和多臺從機之間進行數據通信。NB模塊為主機,電磁水表為從機。通信方式為NB模塊提出命令請求,電磁水表響應接收數據后作數據分析,如果滿足Modbus通信規(guī)約,則作數據響應。NB模塊通過RS485 數字接口來實現對電磁水表的數據采集,包括瞬時流量、瞬時流速、正向總量、反向總量、累計總量、流量百分比、電流、頻率、報警等數據。
RS485通信的每一幀數據包含從機地址、命令字、信息字、校驗字,NB模塊命令請求報文為地址、命令、數據地址、數據長度、校驗碼,電磁水表數據響應報文為地址、命令、數據長度、數據信息、校驗碼。以讀取電磁水表的瞬時流速為例,電磁水表通信地址為1,讀取命令字為03H,瞬時流速的寄存器地址為0,數據類型是浮點型,即4個字節(jié)2個寄存器。NB模塊向電磁水表發(fā)送命令請求:01H 03H 00H 00H 00H 02H C4H 0BH,表示讀取通信地址為1,寄存器地址從0開始的4個字節(jié)數據,即電磁水表的瞬時流速,命令請求的校驗碼為C4H 0BH。電磁水表響應數據為:01H 03H 04H 00H 00H C1H 48HABH 95H,04H表示4個字節(jié),則 00H 00H C1H 48H 表示瞬時流速,將高、低位寄存器位置交換后,通過 IEEE- 754 標準計算可得知瞬時流速為-12.5。當讀取更多數據或其他數據時,依據實際情況修改命令請求。