step7程序解读,谢谢了

发布网友

我来回答

2个回答

热心网友

OPN #DB_NR //打开数据块
L #DB_ADR //装入地址基地址
SLD 8 //左移8位,为何要左移?因为模拟量模块地址默认从256开始。
LAR1 //将模拟量模块的首地址装入地址寄存器
L #AI_COUNT //装入计数器
lp1: T #anzahl_loop //将计数器作为循环变量
L DBW [AR1,P#2.0] 每次移动2,也就是这次256,下次258,260
T #zs_pew

你应该还有LOOP指令没有贴出来。

每次移动3位,是因为要构成32位地址指针,在STL中,地址指针分为16位与32位,16位用于寻址诸如计数器,定时器以及数据块编号,而32位指针用于对具体的地址进行寻址。

比如 DBW【MD0】 这种情况,需要将MD0中的数据左移3位,构成32位指针,用于寻址。
而你的程序中DBW [AR1,P#2.0],因为使用了地址寄存器,而地址寄存器中的都是指针。这句相当于 DBW【AR1=AR1+2.0】追问您好,是的,我现在想知道的是DBW?的具体的计算过程,如果我的DB_ADR=1,则#zs_pew=dbw多少,这个数值,比如是DBW66还是多少?
我的QQ是2392605300,希望能加我为好友,我想把这段程序弄明白,万分感谢

追答没看解释啊
L DBW [AR1,P#2.0] 每次移动2,也就是这次256,下次258,260

写的那么清楚:256,第一次,下一个循环 258
那么就是DBW256,DBW258……

无需知道我的QQ,因为我从不加网友。

热心网友

不行啊追问什么意思,那你能逐个解释一下,把你认为行的数代替进来给我解释一下,谢谢

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com