请问哪位有PLC的crc校验程序

请问哪位有PLC的CRC校验程序啊,就是现代电气控制及PLC应用技术书上的那一个也行,现在时间紧,没时间自己敲。麻烦晓得的大哥大姐帮一个忙。

问题补充:
我QQ605711338,麻烦加我qq发给我嘛。谢谢

最佳答案

方法1:计算法
主程序:OB1
Network 1 

LD     M0.0
EU

CALL   SBR0, AC0                   /
INCB   VB0
INCB   VB0

XMT    发送接收缓冲区, 0

Network 2 
LD     M0.1
EU
CALL   SBR0, AC0
AW<>   AC0, +0
MOVB   1, AC0


SBR_0:SBR0
VAR_OUTPUT
crc:INT;
END_VAR
VAR
count:INT;
ptr:DWORD;
END_VAR
BEGIN
Network 1 
// MOVW   AC0, *#ptr  用于发送,直接将CRC写入发送缓冲区,然后mmodbusBufr加2。
// 
LD     SM0.0
MOVW   16#FFFF, AC0                
BTI    VB0, LW2                   
MOVD   &VB0, LD4                  
INCD   LD4                         

FOR    AC2, +1, LW2                
XORB   *LD4, AC0                  

FOR    AC1, +1, +8                
SRW    AC0, 1                     
LD     SM1.1                       
XORW   16#A001, AC0                
NEXT                               

LD     SM0.0
INCD   LD4                        
NEXT                              

Network 2 
// MOVW   AC0, #crc  用于接收
// 如果程序无须接收,则可删除这一行,删除crc这个OUT参数。
// 
// 
// 
// MOVW   AC0, *#ptr  用于发送
// 直接将CRC写入发送缓冲区,然后mmodbusBufr加2。
// 如果程序无须发送,则可删除这一行。
LD     SM0.0                     
SWAP   AC0                         
MOVW   AC0, LW0                   
MOVW   AC0, *LD4                  

Network 3 // 网络标题
// 网络注释
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
END_INTERRUPT_BLOCK


方法2:查表法
ORGANIZATION_BLOCK 主程序:OB1
TITLE=和方法1不同的是多了个初始化,简化了CRC计算过程,缩短了时间。
// 调用方法和方法1一样
BEGIN
Network 1 // 网络标题
// 初始化CRC表,需要512个字节。VB2256---------VB2767
LD     SM0.1
CALL   SBR0
Network 2 // 网络标题
// 发送
LD     M0.0
EU

CALL   SBR1, AC0                   //AC0在此无用
INCB   VB2000
INCB   VB2000

XMT    发送接收缓冲区, 0

Network 3 
// 接收完成后检查接收的数据对错,如果计算结果为0,则说明传输正确。
LD     M0.1
EU
CALL   SBR1, AC0
AW<>   AC0, +0
MOVB   1, AC0

END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0
TITLE=子程序注释
VAR
index1:INT;
index2:INT;
END_VAR
BEGIN
Network 1 
LD     SM0.0                      
MOVD   &VB2256, AC3                
MOVD   +0, AC2                     

FOR    LW0, +1, +256              
MOVW   AC2, AC0                    
FOR    LW2, +1, +8                
SRW    AC0, 1                     
Network 2 
LD     SM1.1                      
XORW   16#A001, AC0               
Network 3 
NEXT                             
Network 4 
LD     SM0.0                      
MOVW   AC0, *AC3                   
INCW   AC2                      
+I     +2, AC3                    
Network 5 
NEXT                            
Network 6 // 网络标题
// 网络注释
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK SBR_1:SBR1
TITLE=子程序注释
VAR_OUTPUT
crc:INT;
END_VAR
VAR
count:INT;
ptr:DWORD;
END_VAR
BEGIN
Network 1 

LD     SM0.0                      
BTI    VB2000, LW2                
MOVD   &VB2000, LD4              
INCD   LD4                       
XORD   AC0, AC0                    
MOVD   16#FFFF, AC2                

FOR    AC1, +1, LW2                
MOVB   *LD4, AC0                 
XORW   AC2, AC0                   
ANDW   16#FF, AC0                
SLW    AC0, 1                      
MOVD   &VB2256, AC3                
+I     AC0, AC3                   
SWAP   AC2                        
ANDW   16#FF, AC2                  
XORW   *AC3, AC2                   
INCD   LD4                       
Network 2 
NEXT                              
Network 3 
LD     SM0.0                       
SWAP   AC2                         
MOVW   AC2, LW0                    
MOVW   AC2, *LD4                  
Network 4 // 网络标题
// 网络注释
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
END_INTERRUPT_BLOCK

提问者对于答案的评价:
谢谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc314311.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日
下一篇 2020年11月1日

相关推荐

  • EM253位控模块控制台达B2伺服

    EM253位控模块控制台达B2伺服,我想用差分方式输出,但B2伺服差分输入信号需要5V的电压。EM253模块有+5V的电源,我是不是把EM253的+5V和TI短接就可以了。 最佳答…

    SIMATIC S7-200 2020年10月31日
  • 条形码用什么进行比较

    plc200自由口接条形码扫描仪,想与预设的条形码比较,确定控制伺服电机的位置,想问的是;比较的原始资料通过什么软件放在什么位置,也就是说从smb30传送到哪里进行比较 最佳答案 …

    SIMATIC S7-200 2020年11月1日
  • 无线通讯方案

    把六个换热站的8个模拟量和6个开关量直接从二次仪表通过无线设备把这些传到上位机,方案是什么,都需要什么设备,谢谢解答 问题补充:主从站通讯距离大约12公里 最佳答案 你可以用MD7…

    SIMATIC S7-200 2021年7月5日
  • 关于PLC与上位机无线通讯问题

    用200PLC与上位机进行局域网无线通讯,手册13页说用CP243-1 IT连接无线路由,实现无线通讯,想问一下路由器选型与设置问题。谢谢 问题补充:普通路由器可以吗? …

    SIMATIC S7-200 2017年8月18日
  • 200PLC高速计数

    使用200PLC的高速计数接流量计,流量计发出的信号是N型的,能直接使用吗? 问题补充:高速脉冲接I0.6,I0.0~0.5接了按钮(源型) 最佳答案 224xp输入性能:支持特高…

    SIMATIC S7-200 2021年7月5日
  • 求S7-200编程电缆6se7902的驱动。

    是不是在安装s7-200时就已安装,是即插即用型的话,就不用安装了呢?若需另外安装,大家有谁能给一个。 最佳答案 无需安装,插上就能用,如果是usb口的,记得要到Set …

    SIMATIC S7-200 2021年7月5日
  • RS485中继器 6ES7-972-0AA02-0XA0的DP指示灯不亮,收不到数据

    226的CPU设置PORT1自由口通信,把PORT1连到中继器的PG OP口,中继器的A2 B2连接485转串口模块并且接到电脑上开串口助手,中继器的S1&nb…

    2021年7月5日
  • S7200PLC如何写程序计算模拟量平均值

    S7200PLC如何写程序计算模拟量平均值? 最佳答案 以前有过此问题。现场问了去除扰动,取平均值不一定是最佳选择。 有个算法是中值滤波,亿万或google一下可以找到。…

    SIMATIC S7-200 2021年7月5日
  • s7-200远程控制

    以太网的选者方法和主意问题 问题补充:我这里使用以太网模块仅仅是远程控制,就是控制室上位机与PLC中间经过路邮器远距离控制,这样243-1里都需设置那些参数 最佳答案 S7-200…

    SIMATIC S7-200 2021年7月5日
  • 模拟量输入跳动厉害?

    模拟量输入跳动厉害? 最佳答案 1. 可能正在使用一个自供电的传感器,或使用两个独立的电源分别用于CPU的扩展模拟量输入模块和传感器。两个电源的地之间没有互相连接。这就导…

    SIMATIC S7-200 2020年10月31日