更新时间: 2023-01-20
CRC校验子程序(SBR0) 英威腾CHV系列矢量变频器内置的MODBUS协议采用RTU传输格式,该格式使用CRC校验方式对每次发出或接收的数据帧进行校验。因此,该子程序使用了多个局部变量,以方便其它子程序调用。 在西门子STEP 7-Micro/Win 编程环境下(如图一),需要在该子程序的局部变量表中预先设定以下局部变量:
(1)输入型局部变量(VAR_INPUT) 1d_0:DWORD; // 待发送数据地址指针变量 lw_4:WORD; // 待发送数据字节个数变量 (2)输出型局部变量(VAR_OUTPUT) lb_6:BYTE; // CRC校验值高位变量 lb_7:BYTE; // CRC校验值低位变量 (3)临时局部变量(VAR) lw_8:WORD; // 待发送数据字节个数计数变量 lw_10:WORD; // 待发送数据每字节8位二进制数计数变量 Network 1 LD SM0.0 MOVW 16#FFFF, LW6 //将16位CRC校验寄存器LW6全置为1 Network 2 LD SM0.0 FOR LW8, +1, LW4 //对待发送数据字节个数(LW4)计数(LW8)循环 Network 3 LD SM0.0 XORB *LD0, LB7 //使待发送数据的**个字节(*LD0)与 //CRC校验寄存器低位字节(LB7)进行异或运算 Network 4 LD SM0.0 INCD LD0 //ld_0指向待发送数据的下一个地址 Network 5 LD SM0.0 FOR LW10, +1, +8 //对每字节8位二进制数计数(LW10)循环 Network 6 LD SM0.0 SRW LW6, 1 //CRC校验寄存器LW6右移一位 Network 7 LD SM1.1 //若移位后的溢出值SM1.1为1 XORW 16#A001, LW6 //则使值16#A001与LW6进行异或运算 Network 8 NEXT //结束每字节8位二进制数计数循环 Network 9 NEXT //结束每数据帧字节个数计数循环
上一篇:381-643065-2模块