签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
以前的项目都是用1517,不过最近1517不太好买到,就用了319来代替。
没搞过300,所以在编程中遇到了一些小问题,比如LAD块不能添加SCL程序段,用1517都是混合编程,相当于得重新翻译,翻译的时候就遇到了一些问题,今天想和大家探讨一下用STL实现SCL_For循环,下面是我自己写的,有什么不对的地方或者有什么更好的方法希望大家不吝赐教~
我的目的是在一个执行条件后,DATA数组内的数据同步移动一次,比如DATA2=10,那么在条件执行后,DATA2=0,DATA3=10,再下一次,DATA3=0,DATA4=10,这个不知道有没有专业名词就说明这种移动。
这个是STL版本的
这个是SCL版本的。
DATA1是用来清这个数组的
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1749155&b_id=66&s_id=0&num=3
利用指针间接寻址和循环指令就能实现了,如下程序是,从DB1.DBW0开始的19个数据,进行向后移动赋值;
LAR1 P#0.0
A M 200.0 //执行的条件
JCN A001
OPN DB 1
L 18 //19个数据就18次的移动
A002: T MW 202
L DBW [AR1,P#0.0]
T DBW [AR1,P#2.0] //第i个数复制到第i+1个
+AR1 P#2.0
L MW 202
LOOP A002 //循环指令
A001: NOP 0
回复:艾星落尘
您这个方法从P#0.0开始向后移动,会把后面所有数据等同于P#0.0的值,要实现我这个,应该是P#98.0至P#100.0,P#96.0至P#98.0,这样就是同步移动了
下面这个是我改过的,您看下,有什么问题您指出,我再改进~这个我做了两个数据移动
A 执行条件
JCN MYLABEL_1
//同步移动1
OPN #同步1使用DB块_1
L #ARRAY1循环次数
NEXT_1 : T #TEMP2
L #指针地址1上限
L P#2.0
-D
T #指针地址1上限
LAR1 #指针地址1上限
L DBW [ AR1 , P#0.0 ]
T DBW [ AR1 , P#2.0 ]
L #TEMP2
LOOP NEXT_1
//同步移动2
OPN #同步2使用DB块_1
L #ARRAY2循环次数
NEXT_2 : T #TEMP3
L #指针地址2上限
T #指针地址2上限
LAR1 #指针地址2上限
L #TEMP3
LOOP NEXT_2
MYLABEL_1 : NOP 0
以上,如果有-AR1这个指令,那就更好了
319可以用源文件编程,源文件时scl格式的,然后编译后生成实际的程序块。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录