回复:怎样用SCL编写crc16校验程序

勿为

西门子1847工业学习平台

  • 帖子

    5
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2014-05-16

普通 普通 如何晋级?

发布于 2014-12-26 13:22:58

2楼

FUNCTION FC16 : WORD
//
// ModBus CRC16算法
// www.tansoo.cn
CONST
// Constants
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;
CRC16Hi := 16#FF;
CL := 16#01;
CH := 16#A0;
FOR i := 0 TO Count-1 DO
CRC16Lo := CRC16Lo XOR Byte_Array[i];
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
CRC16Lo := CRC16Lo OR 16#80;
END_IF;

IF ((UseLo AND 16#1) = 16#1) THEN
CRC16Hi := CRC16Hi XOR CH;
CRC16Lo := CRC16Lo XOR CL;
END_IF;
END_FOR;
END_FOR;
FC016 := SHL(IN:=CRC16Lo, N:=8) OR CRC16Hi;
END_FUNCTION
个人博客 www.tansoo.cn
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54715条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。