关于同步传值
来源:互联网 发布:反ps软件叫什么 编辑:程序博客网 时间:2024/06/05 09:56
关于同步传值
关于同步传值,其实就等同于SFC20的BLKMOVE指令,但是因为是自己写的指令所以各个方面均灵活一些,便于自己使用。
- 关于同步传值
- 概要信息
- 具体方法
- 错误方法
- 代码块
- 问题解析
- 解决方法一
- 代码块
- 解法说明
- 解决方法2
- 解法说明
- 错误方法
概要信息
- 具体信息可以查看西门子的SFC20指令
- 代码采用STL编写
具体方法
错误方法
- 因需要将一块数据传送到另一个地方,想到将其中的一个地址加1,另一个地址因为不变所以就可以一直使用下去,发现不成功
代码块
L P#0.0 T MD 1000 L P#514.0 L DBW 512 *D T MD 1004 L 0 T MW 800LL0: NOP 0 L MD 1000 L MD 1004 +D T MD 1004 L DBB [MD 1000] T DBB [MD 1004] L MD 1000 L P#1.0 +D T MD 1000 L MW 800 L 1 +I T MW 800 L MW 800 L MW 802 <I JC LL0
问题解析
- 在此段代码中,本来打算是采用利用MD1000的值自加1,这样地址就自动移动到下一个字节,因为MD1000的地址加1,所以MD1004的地址也跟着加1,这个想法自然是没有问题的,但是PLC在执行起来的时候就出现问题了。因为,第一次的时候MD1004肯定是跟着MD1000一起加1。但是,到了第二次,因为MD1004的时候在第一次的时候就已经加了1,第二次MD1000加1,那么MD1004是MD1000和MD1004的和。这样,相当于MD1004第二次 就是加的2。如此循环下去,以后的每次的加的数值就越来越大。这便是问题的所在,解决这种问题有两种办法。
解决方法一
- 在这种解决方法中,将MD1004的初始赋值,放在循环中。这样,每次MD1004的累加初值便会恒定为某一个数,MD1004在程序中后来起作用的值,就会跟着MD1000的值加1而自加1 。
代码块
L P#0.0 T MD 1000 L P#514.0 L DBW 512 *D T MD 1004 L 0 T MW 800LL0: NOP 0 L P#514.0 L DBW 512 *D T MD 1004 L MD 1000 L MD 1004 +D T MD 1004 L P#514.0 L DBW 512 *D T MD 1004 L DBB [MD 1000] T DBB [MD 1004] L MD 1000 L P#1.0 +D T MD 1000 L MW 800 L 1 +I T MW 800 L MW 800 L MW 802 <I JC LL0
解法说明
- 通过将MD1004的赋值代码放入循环中,使得给MD1000+MD1004=MD1004的加法运算中只有了一个自变量,即MD1000。
解决方法2
- 先看代码
L P#0.0 T MD 1000 L P#514.0 L DBW 512 *D T MD 1004 L 0 T MW 800LL0: NOP 0// L MD 1000// L MD 1004// +D // T MD 1004 L P#514.0 L DBW 512 *D T MD 1004 L DBB [MD 1000] T DBB [MD 1004] L MD 1000 L P#1.0 +D T MD 1000 L MD 1004 L P#1.0 +D T MD 1004 L MW 800 L 1 +I T MW 800 L MW 800 L MW 802 <I JC LL0
解法说明
- 不用MD1000与MD1004的相加方案,而采用MD1000和MD1004分别自加1的方式进行自加1运算。使用此种方法也可以得到想要的结果。
阅读全文
0 0
- 关于同步传值
- 关于同步 数据同步|数据库同步|SQL同步|
- 关于sybase Mobilink同步
- 关于MSSQL数据库同步
- 关于线程同步
- 关于文档同步软件
- 关于线程同步问题
- 关于线程同步 PulseEvent()
- 关于数据库同步
- 关于线程同步(Lock)
- 关于JAVA多线程同步
- 关于数据同步
- 关于JAVA多线程同步
- 关于JAVA多线程同步
- 关于多线程同步问题
- 关于Win32同步锁
- java 关于线程同步
- 关于同步和异步
- HDU 2923 Einbahnstrasse
- 6 配置ssh 免密码登陆
- linux每天一命令 : 用户增删
- 传输层TCP和UDP的区别分析与应用场景
- python爬虫 利用cookie登录人人网
- 关于同步传值
- 数据处理——白化whitening
- C++隐式的类类型转换,explicit关键字介绍。
- Web前端:自适应居中方法总结
- python学习笔记(三)--类进阶
- TEZ 0.8.5与Hadoop2.7.3的guava兼容性问题
- [BZOJ2186][SDOI2008]沙拉公主的困惑(数论)
- git命令使用
- CentOS升级Python2.6到Python2.7并安装pip