crc校验计算子程序
郑志武
发布于2012-12-24 00:20
570
0
标签:
用cp340做modbus通讯,请问s7-300库里有crc校验计算的子程序吗?是哪个,各位大侠那个有能发个给我参考下,谢谢。还有就是如果用cp341来做是否就不要这个crc了,知道的大侠能详细说下,次接触cp340、cp341,谢谢!
佳答案
300库中没有crc库,需要自己编写
我曾经写过一个,一直用在项目中,我做成了文档放在百度文库上,楼主可参考:
https://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=
lw#16#ffff;
t#crc_reg;//预置crc寄存器
l#db_no;
t#db_no_temp;
opndb[#db_no_temp];
l#dbb_start;//读入校验起始字节
sld3;
lar1;
l#dbb_counts;//读入校验字节数量
_a:t#byteschecked;//字节处理循环
ldbb[ar1,p#0.0];
llb1;
xow;
tlb1;
l8;
_b:t#bitschecked;//位处理循环
l#crc_reg;
srw1;
t#crc_reg;
jz_c;//检验移出位是否为1
l#crc_reg;
lw#16#a001;
xow;
t#crc_reg;
_c:l#bitschecked;//校验下个位
loop_b;
+ar1p#1.0;//校验下个字节
l#byteschecked;
loop_a;
llb1;//输出校验码
t#crc_h;
llb0;
t#crc_l;
end_function
建议你采用cp340+crc来实现,既提高自己编程能力,又能节省成本,何乐而不为呢