广告招募

余姚精创系列温度仪表MODBUS-RTU通信协议

2025年06月18日 09:06:38      来源:余姚精创仪表有限公司 >> 进入该公司展台      阅读量:22

分享:

一.向仪表读取测量值:

1.单回路(单通道系列仪表)指令详解:
发送指令: D10A【8Bytes】
指令详解: 01(仪表地址)03(功能码)1001(寄存器地址)0001(读取字数WORD)D10A(CRC16-ModBus RTU校验)【8Bytes】
仪表返回: FD79C5【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】
仪表返回: 原样返回:FA0989【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(昆仑通态) 。不断更新中。。。。
版权与免责声明:
1.凡本网注明"来源:全球供应商网"的所有作品,版权均属于全球供应商网,转载请必须注明全球供应商网。违反者本网将追究相关法律责任。
2.企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
3.本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。 4.如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系。