s7-300 modbus RTU CRC校驗程序如何編寫
VAR_INPUT
DB_NO : INT ;
DBB_Start : INT ;
DBB_Counts : INT ;
END_VAR
VAR_OUTPUT
CRC_H : BYTE ;
CRC_L : BYTE ;
END_VAR
VAR_TEMP
CRC_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; //讀入校驗起始字節(jié)
SLD 3;
LAR1 ;
L #DBB_Counts; //讀入校驗字節(jié)數(shù)量
_A: T #BytesChecked; //字節(jié)處理循環(huán)
L DBB [AR1,P#0.0];
L LB 1;
XOW ;
T LB 1;
L 8;
_B: T #BitsChecked; //位處理循環(huán)
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;
+AR1 P#1.0; //校驗下個字節(jié)
L #BytesChecked;
LOOP _A;
L LB 1; //輸出校驗碼
T #CRC_H;
L LB 0;
T #CRC_L;
END_FUNCTION
聯(lián)系我們
上海翰粵自動化系統(tǒng)有限公司 公司地址:上海市松江區(qū)思賢路2399弄137號 技術支持:化工儀器網(wǎng)掃一掃 更多精彩
微信二維碼
網(wǎng)站二維碼