<ruby id="5bvl9"><sub id="5bvl9"></sub></ruby>

            <menuitem id="5bvl9"><dfn id="5bvl9"></dfn></menuitem>

                  <track id="5bvl9"></track>

                      余姚精創系列溫度儀表MODBUS-RTU通信協議

                      2016/11/18

                      一.向儀表讀取測量值:

                      1.單回路(單通道系列儀表)指令詳解:
                      發送指令: 010310010001D10A【8Bytes】
                      指令詳解: 01(儀表地址)03(功能碼)1001(寄存器地址)0001(讀取字數WORD)D10A(CRC16-ModBus RTU校驗)【8Bytes】
                      儀表返回: 01030200FD79C5【7Bytes】
                      指令詳解: 01(儀表地址) 03(功能碼) 02(返回字節數BYTE) 00 FD(返回的測量值) 79 C5 (CRC16-ModBus RTU校驗)【7Bytes】
                      解析返回值: 儀表返回值:00FD(H)=>253(十進制)也就是測量值為253
                      2.多回路儀表(如:四路溫控儀,16路巡檢儀)
                      A單讀指令: 01(儀表地址)03(功能碼)1001(寄存器地址)0001(讀取字數WORD)D10A(CRC16-ModBus RTU校驗)【8Bytes】
                      A儀表返回: 01(儀表地址) 03(功能碼) 02(返回字節數BYTE) 00 FE(返回的測量值) 79 C5 (CRC16-ModBus RTU校驗)【7Bytes】
                      A解析返回值: 00FE(H)=>254(十進制)也就是測量值為254
                      B多讀指令: 01(儀表地址)03(功能碼)1001(寄存器地址)0004(讀取字數WORD)D10A(CRC16-ModBus RTU校驗)【8Bytes】
                      B儀表返回: 01(儀表地址) 03(功能碼) 08(返回字節數BYTE) 00 FD 00 FA 00 FC 00 FE(返回的測值量) 20 BC (CRC16-ModBus RTU校驗)【13Bytes】
                      B解析返回值: 00FD(H)=>253(十進制)通道1=253,00FA(H)=>250(十進制)通道2=250,00FC(H)=>252(十進制)通道3=252,00FE(H)=>254(十進制)通道4=254

                      二.向儀表寫入設定值:

                      1.向儀表寄存器0000寫入數值250
                      發送指令: 01(儀表地址) 06(功能碼) 00 00(寄存器地址) 00 FA(寫入設定值) 09 89(CRC16-ModBus RTU校驗)【8Bytes】
                      儀表返回: 原樣返回:0106000000FA0989【8Bytes】
                      解析返回值: 向寄存器0000寫入數值250
                      2.向儀表寄存器0001寫入數值-128
                      發送指令: 01(儀表地址) 06(功能碼) 00 01(寄存器地址) FF 80(寫入數值) 98 5A(CRC16-ModBus RTU校驗)【8Bytes】
                      儀表返回: 原樣返回:01 06 00 01 FF 80 98 5A【8Bytes】
                      解析返回值: 向寄存器0001寫入數值-128

                      三.CRC16-ModBus RTU校驗算法:

                      void CRC16_S(byte[] data, int len)
                      ??????? {
                      ??????????? byte CRC16Lo;
                      ??????????? byte CRC16Hi;?? //CRC寄存器
                      ??????????? byte CL; byte CH;?????? //多項式碼&HA001
                      ??????????? byte SaveHi; byte SaveLo; ?
                      ??????????? int Flag;
                      ??????????? CRC16Lo = 0xFF;
                      ??????????? CRC16Hi = 0xFF;
                      ??????????? CL = 0x01;
                      ??????????? CH = 0xA0;????????? ?
                      ??????????? for (int i = 0; i < len; i++)
                      ??????????? {
                      ??????????????? CRC16Lo = (byte)(CRC16Lo ^ data[i]); //每一個數據與CRC寄存器進行異或
                      ??????????????? for (Flag = 0; Flag <= 7; Flag++)
                      ??????????????? {
                      ??????????????????? SaveHi = CRC16Hi;
                      ??????????????????? SaveLo = CRC16Lo;
                      ??????????????????? CRC16Hi = (byte)(CRC16Hi >> 1);????? //高位右移一位
                      ??????????????????? CRC16Lo = (byte)(CRC16Lo >> 1);????? //低位右移一位
                      ??????????????????? if ((SaveHi & 0x01) == 0x01) //如果高位字節最后一位為1
                      ??????????????????? {
                      ??????????????????????? CRC16Lo = (byte)(CRC16Lo | 0x80);?? //則低位字節右移后前面補1
                      ??????????????????? }???????????? //否則自動補0
                      ??????????????????? if ((SaveLo & 0x01) == 0x01) //如果LSB為1,則與多項式碼進行異或
                      ??????????????????? {
                      ??????????????????????? CRC16Hi = (byte)(CRC16Hi ^ CH);
                      ??????????????????????? CRC16Lo = (byte)(CRC16Lo ^ CL);
                      ??????????????????? }
                      ??????????????? }
                      ??????????? }
                      ??????????? //如果是modbus協議的話,應該是第一位是低位,第二位是高位
                      ??????????? data[len++] = CRC16Lo;?????? //CRC低位
                      ??????????? data[len] = CRC16Hi;?????? //CRC 高位
                      ??????? }

                      四.儀表部份寄存器地址列表:

                      儀表部份寄存器地址具體地址參看儀表隨機說明書
                      寄存器地址 名稱
                      0X0000 儀表設定值
                      0X0001 報警上限值
                      0X000A 小數點位數
                      0X0016 通訊地址
                      0X0017 通訊波特率
                      0X1001 儀表測量值
                      0X1101 控制輸出百分比
                      0X1200 報警輸出

                      五.精創儀表和西門子PLC通信圖例:

                      六.同其它品牌內嵌MODBUS-RTU人機界面通信:

                      請向在線客服索取通信示例,目前的例程支持:wincc(西門子),三菱,松下,歐姆龍,AB,組態王,亞控,MCGS(昆侖通態) 。不斷更新中。。。。
                      人善交vide欧美,国产主播免费福利视频,国产丰满熟妇性视频,免费能直接看黄的视频