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