首先声明:我在程序中新建了DB1,DB2,DB3的全局数据块,里面分别定义了100个INT类型的变量并对他们一一赋了初值。
如下:我想实现的是把DB1.DBW(0->20)的数值与DB2.DBW(0->20)相加并送到DB3.DBW(0->20)中,就编写如下程序,按理来说,这个间接寻址的索引也没有越界,不知问题出在哪里?
L 0
T MD 0 //把间接寻址的地址刚开始赋为零,表示从零索引号开始
L 20 //循环次数为20次
T MB 100//存储循环次数的变量
M1: OPN DB 1 //先打开DB1并截入指针索引的变量至累加器1
L DBW [MD 0]
OPN DB 2 //打开DB2并截入指针索引的变量至累加器1
L DBW [MD 0]
+I
OPN DB 3//打开DB3并存入前面两个数相加的值
T DBW [MD 0]
L MD 0
INC 1
T MD 0
L MB 100
LOOP M1
最佳答案
LAR1 P#0.0 //指针赋零
L 11
M1: T MB 0 //写入循环次数
OPN DB 1 //打开DB1
L DBW [AR1,P#0.0] //装载DB1的数据
OPN DB 2 //打开DB2
L DBW [AR1,P#0.0] //装载DB2的数据
+I
OPN DB 3 //打开DB3
T DBW [AR1,P#0.0] //将相加结果送入DB3
+AR1 P#2.0 //指针偏移2
L MB 0 //写入循环次数
LOOP M1
通过仿真运行能达到你的要求.
提问者对于答案的评价:
谢谢
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc231055.html