用CP340做modbus通讯,请问s7-300库里有CRC校验计算的子程序吗?是哪个,各位大侠那个有能发个给我参考下,谢谢。还有就是如果用CP341来做是否就不要这个CRC了,知道的大侠能详细说下,第一次接触cp340、cp341,谢谢!
最佳答案
300库中没有CRC库,需要自己编写
我曾经写过一个,一直用在项目中,我做成了文档放在百度文库上,楼主可参考:
http://wenku.baidu.com/view/d087590d7cd184254b353596.htm
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; //读入校验起始字节
SLD 3;
LAR1 ;
L #DBB_Counts; //读入校验字节数量
_A: T #BytesChecked; //字节处理循环
L DBB [AR1,P#0.0];
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;
+AR1 P#1.0; //校验下个字节
L #BytesChecked;
LOOP _A;
L LB 1; //输出校验码
T #CRC_H;
L LB 0;
T #CRC_L;
END_FUNCTION
建议你采用CP340+CRC来实现,既提高自己编程能力,又能节省成本,何乐而不为呢
提问者对于答案的评价:
谢谢。
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc245169.html