GE IS215UCVEH2AE VMIVME-017614-132 350-017614-132D RTU设备首先传输
GE IS215UCVEH2AE 用于计算CRC-16的伪代码如下所示。
要发送的数据的预设字节数。
GE IS215UCVEH2AE 将16位余数(CRC)寄存器初始化为全1。
将第一个8位数据字节与16位CRC寄存器的高位字节进行异或。这个
结果是当前的CRC。
INIT SHIFT:将移位计数器初始化为0。
SHIFT:将当前CRC寄存器向右移动1位。
增加班次计数。


向右移位的位(标志)是1还是0?
如果是1,则将生成多项式与当前CRC进行异或。
如果是0,请继续。
移位计数器等于8吗?
如果否,返回SHIFT。
如果是,则增加字节计数。
字节计数是否大于数据长度?
如果否,将下一个8位数据字节与当前CRC进行异或,然后转到INIT SHIFT。
如果是,将当前CRC添加到数据消息的末尾,以便传输和退出。
当发送消息时,接收器对所有数据位执行相同的CRC操作
以及发送的CRC。如果信息接收正确,则得到的余数(接收器
CRC)为0。
CRC-16计算示例
GE IS215UCVEH2AE RTU设备首先传输(寄存器或离散数据的)最右边的字节。的第一位
发送的CRC-16是最高有效位。因此,在该示例中,CRC多项式的MSB为
极右翼。X16项被丢弃,因为它只影响商(被丢弃),并且
而不是剩余部分(CRC字符)。因此生成多项式为1010 0000 0000
0001.余数被初始化为所有的1。
查询:
▪ 不允许0的地址,因为这不能是广播请求。
▪ 功能代码为01。
▪ 起始点号长度为两个字节,可以是小于最高值的任何值
连接的CPU中可用的输出点数。起点编号等于1
小于在对此请求的正常响应中返回的第一个输出点的数量。
▪ 点数值的长度为两个字节。它指定输出点数
在正常响应中返回。起点值与点数之和
值必须小于或等于附件中可用的最高输出点号
CPU。起点编号和点数字段的高位字节作为
第一个字节。低位字节是每个字段中的第二个字节。
回应:
▪ 字节计数是从1到256(0=256)的二进制数。它是正常情况下的字节数
在字节计数之后和错误检查之前的响应。
▪ 正常响应的数据字段是打包的输出状态数据。每个字节包含八个
输出点值。第一个字节的最低有效位(LSB)包含输出的值
其数量等于起点数量加一的点。输出的值
点按数字排序,从数据字段第一个字节的LSB开始,到结束
具有数据字段的最后一个字节的最高有效位(MSB)。如果点数不是
8的倍数,最后一个数据字节在其最高阶比特的一到七个中包含零。