通訊規(guī)約
儀表提供串行異步半雙工RS485 通訊接口,采用MODBUS-RTU協(xié)議,各種數(shù)據(jù)信息均可在通訊線路上傳送。在一條線路上可以同時連接多達32 個網(wǎng)絡(luò)電力儀表,每個網(wǎng)絡(luò)電力儀表均可設(shè)定其通訊地址(Address No.),不同系列儀表的通訊接線端子號碼不同,通訊連接應使用帶有銅網(wǎng)的屏蔽雙絞線,線徑不小于0.5mm2。布線時應使通訊線遠離強電電纜或其他強電場環(huán)境,推薦采用T型網(wǎng)絡(luò)的連接方式,不建議采用星形或其他的連接方式。
MODBUS_RTU通訊協(xié)議:MODBUS 協(xié)議在一根通訊線上采用主從應答方式的通訊連接方式。首先,主計算機的信號尋址到一臺**地址的終端設(shè)備(從機),然后,終端設(shè)備發(fā)出的應答信號以相反的方向傳輸給主機,即:在一根單獨的通訊線上信號沿著相反的兩個方向傳輸所有的通訊數(shù)據(jù)流(半雙工的工作模式)。MODBUS 協(xié)議只允許在主機(PC,PLC 等)和終端設(shè)備之間通訊,而不允許獨立的終端設(shè)備之間的數(shù)據(jù)交換,這樣各終端設(shè)備不會在它們初始化時占據(jù)通訊線路,而**于響應到達本機的查詢信號。
主機查詢:查詢消息幀包括設(shè)備地址碼、功能代碼、數(shù)據(jù)信息碼、校驗碼。地址碼表明要選中的從機設(shè)備;功能代碼告之被選中的從設(shè)備要執(zhí)行何種功能,例如功能代碼03 或04是要求從設(shè)備讀寄存器并返回它們的內(nèi)容;數(shù)據(jù)段包含了從設(shè)備要執(zhí)行功能的其它附加信息,如在讀命令中,數(shù)據(jù)段的附加信息有從何寄存器開始讀及要讀的寄存器數(shù)量;校驗碼用來檢驗一幀信息的正確性,為從設(shè)備提供了一種驗證消息內(nèi)容是否正確的方法,它采用CRC16 的校準規(guī)則。
從機響應:如果從設(shè)備產(chǎn)生一正常的回應,在回應消息中有從機地址碼、功能代碼、數(shù)據(jù)信息碼和CRC16 校驗碼。數(shù)據(jù)信息碼則包括了從設(shè)備收集的數(shù)據(jù):如寄存器值或狀態(tài)。如果有錯誤發(fā)生,我們約定是從機不進行響應。傳輸方式是指一個數(shù)據(jù)幀內(nèi)一系列獨立的數(shù)據(jù)結(jié)構(gòu)以及用于傳輸數(shù)據(jù)的有限規(guī)則,下面定義了與MODBUS 協(xié)議– RTU方式相兼容的傳輸方式。每個字節(jié)的位:1 個起始位、8 個數(shù)據(jù)位、1 個停止位。
數(shù)據(jù)幀的結(jié)構(gòu):即:報文格式。
| 地 址 碼 | 功 能 碼 | 數(shù) 據(jù) 碼 | 效 驗 碼 |
| 1個BYTE | 1個BYTE | N個BYTE | 2個BYTE |
地址碼:在幀的開始部分,由一個字節(jié)(8 位二進制碼)組成,十進制為0~255,在我們的系統(tǒng)中只使用1~247,其它地址保留。這些位標明了用戶指定的終端設(shè)備的地址,該設(shè)備將接收來自與之相連的主機數(shù)據(jù)。每個終端設(shè)備的地址必須是**的,僅僅被尋址到的終端會響應包含了該地址的查詢。當終端發(fā)送回一個響應,響應中的從機地址數(shù)據(jù)便告訴了主機哪臺終端正與之進行通信。
功能碼:告訴了被尋址到的終端執(zhí)行何種功能。下表列出顯示所支持的功能碼,以及它們的意義和功能。
| 代碼 | 意義 |
| 03 | 讀數(shù)據(jù)寄存器值 |
校驗碼:錯誤校驗(CRC)域占用兩個字節(jié),包含了一個16 位的二進制值。CRC 值由傳輸設(shè)備計算出來,然后附加到數(shù)據(jù)幀上,接收設(shè)備在接收數(shù)據(jù)時重新計算CRC 值,然后與接收到的CRC 域中的值進行比較,如果這兩個值不相等,就發(fā)生了錯誤。
生成一個CRC的流程為:
(1) 預置一個16位寄存器為0FFFFH(16進制,全1),稱之為CRC寄存器。
(2) 把數(shù)據(jù)幀中的**個字節(jié)的8位與CRC寄存器中的低字節(jié)進行異或運算,結(jié)果存回寄存器。
(3) 將CRC寄存器向右移一位,*高位填以0,*低位移出并檢測。
(4) 上一步中被移出的那一位如果為0;重復第三步(下一次移位)為1,將CRC寄存器與一個預設(shè)的固定值(0A001H)進行異或運算。
(5) 重復第三步和第四步直到8次移位。這樣處理完了一個字節(jié)的八位。
(6) 重復**步到第五步來處理下一個字節(jié)的八位。直到所有的字節(jié)結(jié)束。
(7) *終CRC寄存器的值就是CRC的值。

報文指令格式
讀取數(shù)據(jù)寄存器指令0x03
| 主機請求指令 | 從機響應 |
| 從機地址 | 1Byte | 1~247 | 從機地址 | 1Byte | |
| 功能碼 | 1Byte | 0x03/0x04 | 功能碼 | 1Byte | |
| 起始寄存器地址 | 2Bytes | | 寄存器字節(jié) 數(shù) | 1Byte | |
| 寄存器個數(shù) | 2Bytes | | 寄存器值 | N Bytes | |
| CRC校驗碼 | 2Bytes | | CRC校驗碼 | 2Bytes | |
通訊報文舉例:1.讀數(shù)據(jù)(功能碼:03):這個功能可使用戶獲得終端設(shè)備采集、記錄的數(shù)據(jù),以及系統(tǒng)參數(shù)。主機一次請求采集的數(shù)據(jù)個數(shù)沒有限制,但不能超出定義的地址范圍。下面的例子是從終端設(shè)備地址為12(0CH)的從機上,讀取3 個數(shù)據(jù)Ia、Ib、Ic (數(shù)據(jù)幀中數(shù)據(jù)每個地址占用2 個字節(jié),Ia 的開始地址為 43(2BH)開始,數(shù)據(jù)長度為3(03H)個字。)
查詢數(shù)據(jù)幀(主機)
| 地址 | 命令 | 起始寄存器地址 (高位) | 起始寄存器地址 (低位) | 寄存器個數(shù) (高位) | 寄存器個數(shù) (低位) | CRC16 (低位) | CRC16 (高位) |
| 0CH | 03H | 00H | 2BH | 00H | 03H | 74H | DEH |
響應數(shù)據(jù)幀(從機),表明I=1380H(4.992)。
| 地址 | 命令 | 數(shù)據(jù)長度 | 數(shù)據(jù)1 2 3 4 5 6 | CRC16 (低位) | CRC16 (高位) |
| 0CH | 03H | 06H | 13H 80H | 72H | E5H |
MODBUS 地址信息表:
| 地址 | 項目 | 描述 | 字節(jié)地址 | 說明 |
| 設(shè) 置 信 息 |
| 0 | MM | 編程設(shè)置密碼 | 0,1 | 2 字節(jié)1~9999 |
| 1 | DZ | 儀表地址 | 2 | 1 字節(jié),1~254 |
| 4 | CT | 電流倍率 | 8,9 | CT=電流1 次測/2 次測(1~9999) |
| 運 行 信 息 |
| 33 | DIO/Info | 開關(guān)信息 | 66,67 | 0斷,1通 |
| 35 | DCT | 電流小數(shù)點位置 | 71 | |
| 電 量 信 息 |
| 43 | I | 電流 | 86 87 | 數(shù)據(jù)計算: 電流 I=(Rx /10000) * (10^DCT) |