西门子300/400/1500程序中用到SLW3指令,这个指令的作用是什么?如何去理解?
案例学习:
L #AD_I
SLW 3
LAR1
L IB [ AR1 , P#0.0 ]
T %DIB13
L IB [ AR1 , P#1.0 ]
T %DIB12
L IW [ AR1 , P#2.0 ]
T #IF1.OutRamp
首先通过西门子官方手册,先了解下数据类型pointer地址指针的结构,如图下
那么地址指针AR的数据格式如何?AR为32位
AR结构如下,与pointer参数结构一致:
0000 0000 0000 0BBB BBBB BBBB BBBB BXXX
其中0-2bit为指定bit位,3-18bit为指定Byte位,其余位固定为0
例如:当AR=D4(HEX)=0000 0000 0000 0000 0000 0000 1101 0100(二进制),实际换算成地址值就是26.4
故SLW3的目的是将一般数据变成地址类型并形成地址的Bit位,便于偏移量的运算。
下面进一步说明上面的案例,案例为西门子G120变频器状态读取的写法,下图为G120功能块的声明部分,通讯方式采用Profinet IO通讯,报文1,I Q起始地址定义为420
L #AD_I //装载变频器输入起始地址420至累加器1
SLW 3 //累加器1中16-31位保持不变,0-15向左移动3位
LAR1 //此时AR1的值为420.0
L IB [ AR1 , P#0.0 ] //读取变频器状态字IB420的值
T %DIB13 //写入到背景数据块DIB13
L IB [ AR1 , P#1.0 ] //读取变频器状态IB421
T %DIB12 //写入到背景数据块DIB12 目的16位地址高低互换
L IW [ AR1 , P#2.0 ] //读取变频器转速
T #IF1.OutRamp
页面更新:2024-04-19
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号