s7-300 modbus RTU CRC校验程序如何编写?
VAR_INPUTDB_NO : INT ; DBB_Start : INT ; DBB_Counts : INT ;END_VAR VAR_OUTPUTCRC_H : BYTE ; CRC_L : BYTE ;END_VAR VAR_TEMPCRC_REG : WORD ; DB_NO_TEMP : INT ; BytesChecked : INT ; BitsChecked : INT ;END_VAR BEGIN NETWORK TITLE = L W#16#FFFF; T #CRC_REG; //预置CRC寄存器 L #DB_NO; T #DB_NO_TEMP; OPN DB [#DB_NO_TEMP]; L #DBB_Start; //读入校验起始字节 SLD 3; LAR1; L #DBB_Counts; //读入校验字节数量 _A:T #BytesChecked; //字节处理循环 L DBB ; L LB 1; XOW ; T LB 1; L 8;_B:T #BitsChecked; //位处理循环 L #CRC_REG; SRW 1; T #CRC_REG; JZ _C; //检验移出位是否为1 L #CRC_REG; L W#16#A001; XOW ; T #CRC_REG;_C:L #BitsChecked; //校验下个位 LOOP_B; +AR1P#1.0; //校验下个字节 L #BytesChecked; LOOP_A; L LB 1; //输出校验码 T #CRC_H; L LB 0; T #CRC_L;END_FUNCTION
页:
[1]