OPN DB 300
L P#0.0
LAR1
L 5
_001: T MB 2000
L DBD [AR1,P#0.0]
T DB301.DBD 0
A M 100.0
+AR1 P#4.0
L MB 2000
LOOP _001
这个程序是我照阿鸣大师修改的,在DB300中建立100个数据,通过指针每当A100.0成立时候,就把数据传送到DB301.DBD0中,DB301已经建立好了,但是没成功,程序有啥错误?
问题补充:
这个程序运行了,就把DB300.DBD0的值传递给DB301.DBD0了,然后A100.0再成立就始终是DB300.DBD0的值,DB块中应该按顺序DB300.DBD4、DB300.DBD8、DB300.DBD12...往下走吧?按顺序把值赋值给DB301.DBD0才对呢
最佳答案
感觉用循环来做的话,很难把循环中断,M100.0的条件不好加进去,不烦用下面程序试试看;
OPN DB 300
LAR1 MD 160 //初始化,地址寄存器1,
A M 100.0 //启动的条件
FP M 100.1 //这里做上升沿的目的就是一个周期值计算一次
JCN A001
L DBD [AR1,P#0.0]
T DB301.DBD0
TAR1
L 3168
<D //比较是否有超过规定的100的实数,因为从0开始的所以是3200-32=3168
JCN A002
+AR1 P#4.0 //地址寄存器自加4个字节,这样就能往下移动了
TAR1 MD 160 //MD160用来存放指针地址
JU A003
A002: L 0
T MD 160 //如果超过了100个数,就从头开始
A001: NOP 0
A003: NOP 0
以上程序经过测试,可行的;
提问者对于答案的评价:
非常棒,受益匪浅,谢谢大家了
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc221150.html