欧姆龙PLC_CP1H_CRC校验
1.简介
欧姆龙CP1H PLC的CRC校验。CP1H没有CRC校验指令或者功能块,在串口自由协议通信中,如果涉及到CRC校验,需要手动计算CRC值,本程序是一个输入数据,自动计算CRC校验码的程序。
Mov #xx D100 #号表示16进制数据
Mov &xx D100 &号表示10进制数据
2.关键指令
2.1 MOVD_数据传送
以位(4 位)单位进行传送,具体用法请查询CP1H编程手册,此处不做具体描述,仅举例说明。
例: D200=#AABB(16进制)
D201=#0000
D202=#0000
MOVD D200 #0010 D201
MOVD D200 #0212 D202
执行后 D201=#00AA
D202=#BB00
2.2ASR_右移
数据右移一位,相当于原数据除以2. 具体用法请查询CP1H编程手册,此处不做具体描述,仅举例说明。
例:D200=#0003(二进制:0000 0000 0000 0011)
ASR D200
执行结果:D200=#0001(二进制:0000 0000 0000 0001)
2.3XORW_字异或运算
异或运算。字的异或运算。既位与位不同=1.
例:D200=#0001(二进制:0000 0000 0000 0001)
D201=#0003(二进制:0000 0000 0000 0011)
XORW D200 D201 D202
执行后D202=#0002(0000 0000 0000 0010)
2.4ANDW_字与运算
字内的位进行与运算,既两个位都为1则结过=1.
例:D200=#0001(二进制:0000 0000 0000 0001)
D201=#0003(二进制:0000 0000 0000 0011)
ANDW D200 D201 D202
执行后:D202=#0001(二进制:0000 0000 0000 0001)
2.5指针
此处严格来说,不应该叫指针,但是功能与指针类似,姑且称之为‘指针’。
此处指针仅针对D区域。
例如:MOV &1122 D100
MOV &100 D200
此时,D200中数值为100.
MOV @D200 D300
执行后,D300的值应为&1122而不是&100。因为@D200表示是将D200中的数据作为地址编号,把该地址里的内容传送给D300。相当于间接寻址。
这样的话有个优势,我仅对D200进行运算,就可对相应的数据区进行间接操作,在对地址是连续的数据处理非常方便。
2.6FOR…NEXT_循环指令
循环处理指令。具体用法不做阐述,仅以示例说明。
例:
MOV #0 D100
FOR 6
++ D100
NEXT
执行后D100=6.
需要注意的是,在循环指令未执行完前,一般FOR循环体外面的指令将不会执行(此处不严谨,仅仅是个人测试出来的)。
2.7 全局子程序
CRC校验程序放在全局子程序里,值得注意的是,全局子程序需要放在中断任务0里。如图2-1所示

图2-1 中断程序设置
3.程序简解

图3-1
GSBN 10:全局子程入口 编号10
W500.0:校验开始
D7000:开始指针。如数据从D200开始,则:MOV &200 D7000
D7002:结束指针。如数据在D205结束,则:MOV &205 D7002
D7005:CRC寄存器。
使用示例:

图3-2 字节校验示例
下面用调试软件验证下,校验是否正确

图3-3 调试软件校验
从调试软件看,似乎PLC程序计算出来的校验码5C86和调试软件计算出来的校验码865C不一致,没关系,如果需要CRC高低位互换,可以使用已经高低位互换过的值它保存在D7018中。
4.字校验
字校验和字节校验一样,只不过把高8位和低位拆分出来分别计算而已。具体不做详述,请参照示例程序。
示例程序链接:https://pan.baidu.com/s/1_k3Ar6SwFT4Lb78i6MxpIQ
能力有限,部分解释的不是很清楚,还有可能有一些错误之处,欢迎大家指出。
有什么疑惑的地方,可留言交流。
欧姆龙PLC_CP1H_CRC校验的更多相关文章
- 欧姆龙PLC HostLink协议整理
欧姆龙PLC HostLink协议整理 1.常用的存储器功能区 CIO: 输入继电器 272 点(17 CH) 0.00-16.15 输出继电器 272 点(17 CH) 100.00-116.1 ...
- 欧姆龙plc通讯协议格式
欧姆龙CPM1A型plc与上位计算机通信的顺序是上位机先发出命令信息给PLC,PLC返回响应信息给上位 机.每次通信发送/接受的一组数据称为一"帧".帧由少于131个字符的数据构成 ...
- StringMVC 中如何做数据校验
步骤一:引入四个jar包 步骤二:注册类型转换器 <context:component-scan base-package="cn.happy.controller"> ...
- 登录(ajax提交数据和后台校验)
1.前台ajax数据提交 <form id="login_form" action="" method="POST"> < ...
- Struts2数据校验
Struts2数据校验 1.常见数据校验方法 表单数据的校验方式: 表单中的数据必须被效验以后才能够被使用,常用的效验方式分为两种: 前台校验:也称之为客户端效验,主要是通过JS编程的方式进行表单数据 ...
- Spring MVC数据校验
在web应用程序中,为了防止客户端传来的数据引发程序异常,常常需要对 数据进行验证.输入验证分为客户端验证与服务器端验证.客户端验证主要通过JavaScript脚本进行,而服务器端验证则主要通过Jav ...
- spring mvc 数据校验
1.需要导入的jar包: slf4j-api-1.7.21.jar validation-api-1.0.0.GA.jar hibernate-validator-4.0.1.GA.jar 2.访问页 ...
- SpringMvc中的数据校验
SpringMvc中的数据校验 Hibernate校验框架中提供了很多注解的校验,如下: 注解 运行时检查 @AssertFalse 被注解的元素必须为false @AssertTrue 被注解的元素 ...
- .net使用正则表达式校验、匹配字符工具类
开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...
随机推荐
- 1-STM32物联网开发WIFI+GPRS(Wi-Fi入门篇)_简介
这期的教程为公开教程将用这块开发板学习WIFI(SDK) 实现哪些功能呢!无非就是那写网络功能...但是涉及的挺多 最近一直在忙方案篇的内容,所以公开版的例程耽误了,现在开始补上 我准备改变一下提供资 ...
- Codevs 2185【模板】最长公共上升子序列
题目描述 Description 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序列了.小沐沐说,对于 ...
- IntelliJ IDEA 2017 MySQL5 绿色版 Spring 4 Mybatis 3 配置步骤详解(二)
前言 继续上一篇安装教程 首先是MySQL绿色版安装之后其他组件安装,如果篇幅较长会分为多篇深入讲解,随笔属于学习笔记诸多错误还望指出 共同学习. MySQL 5.7 绿色版 我本地安装的是 ...
- python生成词云
上代码: # -*- coding: utf-8 -*- # @Time : 19-1-10 上午10:27 # @Author : Felix Wang import jieba # pip ins ...
- 像素迷踪,当Unity的Frame Debugger力不从心时
http://www.manew.com/thread-92382-1-1.html 从版本5开始,Unity包含了一个全新的可视化帧调试工具,Frame Debugger.该工具能帮你解决很多图形方 ...
- LOJ#2983. 「WC2019」数树 排列组合,生成函数,多项式,FFT
原文链接www.cnblogs.com/zhouzhendong/p/LOJ2983.html 前言 我怎么什么都不会?贺忙指导博客才会做. 题解 我们分三个子问题考虑. 子问题0 将红蓝共有的边连接 ...
- 1.xml解析
public static void main(String[] args) throws DocumentException { SAXReader saxReader = new ...
- 06 、指令跳转:原来if...else就是goto
写好的代码编译成指令之后,一般正常流程是一条一条的顺序执行的.但是在程序中总会用到if...else这样的条件判断语句.while和for循环语句,还有函数或者过程调用,所以遇到这些程序编译的指令时是 ...
- [转]MATLAB 2018b 中文版下载与安装教程
MATLAB R2018b_win64.iso 压缩包一个 MATLAB R2018b Win64 Crack 压缩包一个 一.下载与安装 1 下载中文原程序安装包和破解文件,链接: https: ...
- OGC定义的几何要素
OGC定义了两种描述几何对象的格式,分别是WKB(Well-Known Binary)和WKT(Well-Known Text). 在SQL语句中,用以下的方式可以使用WKT格式定义几何对象:几何类型 ...