大家好,欢迎来到IT知识分享网。
❓想玩转西门子 S7-1200 或 S7-1500 系列 PLC 的间接寻址吗?
❓传统指针、数组索引、PEEK/POKE 指令,到底该怎么选?
❗️别纠结!3 分钟时间,带你看一场寻址方法的终极对决!今天,咱们先从传统间接寻址讲起。
对于用过 S7-300/400 系列 PLC 的朋友来说,传统间接寻址肯定不陌生。这种方法适用于 S7-300/400,在 S7-1500 中也能用,不过有条件限制,只能用于非优化的数据块或者 PLC 变量,而且编程语言得是 STL(语句表)。STL 曾经很常用,但现在在 S7-1500 项目里已经不常见了,一般只在移植项目中才会用到。
在传统间接寻址里,指针是个关键概念。我们会用到 6 字节或 4 字节的指针,写法是 “P#…” 。以 6 字节指针为例,它由 Byte0 – Byte5 这六个字节组成。其中,Byte0 和 Byte1 代表 DB 块号,Byte2 表示存储区域,从 Byte3 开始,前面几位固定为 0,接着的 “bbb” 表示地址(精确到字节),最后的 “xxx” 代表位。如果是 4 字节指针,大家看红圈里这部分就行。

存储区域也有讲究,常用的有 “00”“81”“82”“83”“84”“85” 这些编码。“00” 用于 4 字节指针,代表无区域寻址;“81”“82”“83” 分别对应 PLC 变量中的 I(输入)、Q(输出)、M(中间变量);“84” 最常用,指向 DB 块,方便对 DB 块进行间接寻址;“85” 用于第二个 DB 块或者背景数据块。
这里要特别提醒一下,指针指向的是起始位,可不是某个字节对应的位,最后的 “xxx” 就是精确到位的标识,取值范围是 0 – 7 ,也就是从 .0 到.7 。
在实际使用中,4 字节指针可以用 L 指令装载到累加器里;6 字节指针因为长度超过累加器的 4 字节容量,没办法直接装载,不过它可以作为接口实参使用,有一种接口实参类型叫 “Pointer”,在这个实参部分就可以填写 6 字节指针。通过改变指针寻址不同变量,去访问不同的地址。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/189316.html