基于博图TIA中SCL语言编写CRC校验功能块

在这里直接体现源码,感兴趣的可以提出修改建议,以及自己的一些想法。

最后附 块生成源 的  免费(0积分)  文件下载链接,新人不易,望海量

接口配置:

块:

测试结果:

 

源码:

#CRC寄存器 := 16#FFFF;

FOR #for_counter_4 := #起始字节 TO #起始字节+#字节数量 DO
    #字节数组[#int_2] := PEEK(area := 16#84, dbNumber := #DB号, byteOffset := #for_counter_4);
    #int_2 := #int_2 + 1;
END_FOR;
#int_2 := 0;
FOR #for_counter_1 := 0 TO #字节数量-1 DO
    #CRC寄存器 :=#字节数组[#for_counter_1] XOR #CRC寄存器;
    FOR #for_counter_2 := 1 TO 8 DO
        #temp := SHR(IN := #CRC寄存器, N := 1);
        IF #CRC寄存器.%X0 =1 THEN
            #CRC寄存器 := #temp XOR 16#A001;
        ELSE
            #CRC寄存器 := #temp;
        END_IF;
    END_FOR;
END_FOR;

FOR #for_counter_3 := #校验后起始字节 TO #校验后起始字节+#字节数量 DO
    
    POKE(area:=16#84,
         dbNumber:= #校验后DB号,
         byteOffset:=#for_counter_3,
         value:=#字节数组[#int_1]);
    #int_1:= #int_1 + 1;
END_FOR;
#int_1 := 0;
POKE(area := 16#84,
     dbNumber := #校验后DB号,
     byteOffset := #校验后起始字节 + #字节数量,
     value := #CRC寄存器.%B1);
POKE(area := 16#84,
     dbNumber := #校验后DB号,
     byteOffset := #校验后起始字节+#字节数量 + 1,
     value := #CRC寄存器.%B0);

下载链接:https://download.csdn.net/download/qq_43673223/87854712

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值