西门子G120变频状态字读取SLW3指令学习

西门子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

功能块声明部分

声明静态结构变量

Profinet通讯接收部分


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-05-13

标签:累加器   状态   变频器   指针   指令   声明   案例   结构   通讯   地址   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top