【问答】西门子s7-300寄存器间接寻址问题

作者:老电工时间:2020-02-21 09:30:31

有关西门子s7-300寄存器间接寻址问题,《S7-300/400 PLC应用技术》第3版书上第163页的FC1程序中,第4条指令L W [AR1,P#0.0],后面注释是取指针第1个字内的数据块编号。

西门子s7-300寄存器的间接寻址问题

问题:《S7-300/400 PLC应用技术》第3版书上第163页的FC1程序中,第4条指令L W [AR1,P#0.0],后面注释是取指针第1个字内的数据块编号,第9条指令L D [AR1,P#2.0],后面的注释是取指针内数据区的起始地址。这2条指令格式一样,怎么一个是取地址内的内容(数据块编号),一个是取起始地址?

回答:

下图是参数类型Pointer的结构:

西门子s7-300寄存器间接寻址问题

书中的程序:

西门子s7-300寄存器间接寻址问题2

参数类型为Pointer的输入参数Start_Addr占6个字节,P##Start_Addr是第1个字节的地址。

执行第二条指令后,AR1中是输入参数Start_Addr(指针)的首地址,第4条指令装入累加器的是指针第1个字内的数据块编号,第9条指令“L  D [AR1,P#2.0]”装入的是指针第2个字节开始的双字,即指针内数据区的起始地址。

如果Start_Addr的实参为DB2.DBX4.0,第9条指令装入的就是DBX4.0的地址(即DB4的地址)。

本站仅提供信息发布平台,文章仅代表作者个人观点。

猜你喜欢

首页 > plc > 西门子plc