技术论坛

S7-1200用SCL语言写CRC检验码

作者 主题
游士

经验值: 240
发帖数: 8
精华帖: 0
主题:【求助】S7-1200用SCL语言写CRC检验码


只看楼主 楼主 2018-11-13 21:13:38

怎么用S7-1200用SCL语言写CRC检验码


 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1517404&b_id=50&s_id=0&num=6

至圣

经验值: 24889
发帖数: 4534
精华帖: 10
回复:S7-1200用SCL语言写CRC检验码
推荐帖


只看楼主 1楼 2018-11-14 07:47:37

之前论坛一个大师写的,名字不记得了,今天分享给你:

FUNCTION FC16 : WORD


// ModBus CRC16算法


CONST

    ARRAY_COUNT := 32;

END_CONST


VAR_INPUT

    Byte_Array : ARRAY[0..ARRAY_COUNT-1] OF BYTE;

    Count : INT;

END_VAR


VAR_TEMP

    CRC16Lo, CRC16Hi, CL, CH, UseHi, UseLo: WORD;     

    i, index: INT;

END_VAR

    CRC16Lo := 16#FF; //CRC16Lo为CRC寄存器低8位     

    CRC16Hi := 16#FF; //CRC16Hi为CRC寄存器高8位     

    CL := 16#01;     

    CH := 16#A0; //  A001 H 是CRC-16多项式代码     

    FOR i := 0 TO Count-1 DO     

        CRC16Lo := CRC16Lo XOR Byte_Array[i]; //每一个数据与CRC寄存器异或     

        FOR index := 0 TO 7 DO     

            UseHi := CRC16Hi;     

            UseLo := CRC16Lo;     

            CRC16Hi := SHR (IN:=CRC16Hi, N:=1);     

            CRC16Lo := SHR (IN:=CRC16Lo, N:=1); //右移一位     

            IF ((UseHi AND 16#1) = 16#1) THEN //如果高位字节最后一位是1的话     

                CRC16Lo := CRC16Lo OR 16#80; //低位字节右移后前面补1     

            END_IF;

            

            IF ((UseLo AND 16#1) = 16#1) THEN //如果LSB 为1,则与多项式进行异或     

                CRC16Hi := CRC16Hi XOR CH;     

                CRC16Lo := CRC16Lo XOR CL;     

            END_IF;     

        END_FOR;     

    END_FOR;     

    FC16 := SHL(IN:=CRC16Lo, N:=8) OR CRC16Hi;

END_FUNCTION





别人在休息的时候,我往前走。
以下网友喜欢您的帖子:

  
至圣

经验值: 13749
发帖数: 2032
精华帖: 16
回复:S7-1200用SCL语言写CRC检验码


只看楼主 2楼 2018-11-15 08:44:06

LGF里面有现成的校验方法。


工控毁我青春!
以下网友喜欢您的帖子:

  
游士

经验值: 240
发帖数: 8
精华帖: 0
回复:S7-1200用SCL语言写CRC检验码


只看楼主 楼主 3楼 2018-11-17 20:48:22

谢谢!已解决


 
以下网友喜欢您的帖子:

  
游士

经验值: 168
发帖数: 1
精华帖: 0
回复:S7-1200用SCL语言写CRC检验码


只看楼主 4楼 2019-02-12 16:44:50

http://blog.sina.com.cn/s/blog_556b9e3c0102ynda.html

用记事本保存为XXX.scl,按照上述网站方案,添加外部文件,生成块后调用就可以,非常感谢!技术大伽们!


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 2625
发帖数: 734
精华帖: 3
回复:S7-1200用SCL语言写CRC检验码


只看楼主 5楼 2019-02-14 08:46:26

查表法是不是会更快点


 
以下网友喜欢您的帖子:

  
新手

经验值: 33
发帖数: 2
精华帖: 0
回复:S7-1200用SCL语言写CRC检验码


只看楼主 6楼 2019-07-11 16:13:09
以下是引用kenshinguo在2019-02-14 08:46:26的发言 >5楼

查表法是不是会更快点

查表法怎么弄呢?



 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
S7-1200用SCL语言写CRC检验码
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。