您现在的位置是:首页 > PLC技术 > PLC技术
STL中存储器间接寻址
来源:艾特贸易2018-04-28
简介对于存储器间接寻址,地址值包含在另一个地址中。如果通过区指针,则这个地址具有双字宽度;如果通过一个数字使用间接寻址,则具有一个字的宽度。 地址可能属于下列地址区:
对于存储器间接寻址,地址值包含在另一个地址中。如果通过区指针,则这个地址具有双字宽度;如果通过一个数字使用间接寻址,则具有一个字的宽度。
地址可能属于下列地址区:
●位存储器
作为绝对地址或符号寻址的变量。
●L栈(暂态局部数据)
作为绝对地址或符号寻址的变量。
●全局数据块
作为绝对地址。
当使用全局数据地址时,请确认对应的数据块已经通过DB寄存器打开了。比如,
如果通过全局数据双字间接地寻址了一个全局数据地址,两个操作必须定位在同
一个数据块中。
●实例数据块
作为绝对地址或符号寻址的变量。
把实例数据块作为地址使用时有严格的限制,见下文。
如果在功能中使用实例数据块作为地址,需要严格按照和全局数据地址一样的存取方式。只使用DI寄存器代替DB寄存器。此种情况下不允许使用符号寻址。仅当实例数据块编译为CODE_VIRTION1块时,才可以在功能块中把实例数据块作为地址使用(无多实例能力)。
1.使用区指针的间接寻址
存储器间接寻址中使用的区指针通常为区内指针,就是说,它由字节地址和位地址组成。如果要寻址一个数字地址,就需要把位地址定义为0。
比如,存储器双字MD 10中包含了指针P#30.0。语句A M[MD 10]存取一个存储器位,位地址包含在存储器双字MD 10中,同时检验存储器位M 30.0(如图1所示)。而使用语句L MW[MD 10],可以把存储器字MW 30加载到累加器。
对于与二进制逻辑运算和存储器功能一起使用的所有二进制地址,以及与加载和传送功能一起使用的所有数字地址,都可以使用存储器间接寻址。
2.使用数字的间接寻址
用于定时器、计数器和块间接寻址的数字具有16位的宽度。具有一个字宽度的地址可用以保存它。
比如,存储器字MW 20包含了数字133。语句OPN DB[MW20]用于打开一个全局数据块,数据块的地址包含在存储器字MW 20中。而使用语句SP T[MW 20]将把定时器T 133作为脉冲源启动。
间接寻址时可以使用所有的定时器和计数器操作。通过DB寄存器(OPN DB[..])或通过DI寄存器(OPN DI[..])都可以打开一个数据块。如果地址字为0,CPU执行一个空操作。
可以使用UC FC[..]和CC FC[..],或者UC FB[..]和CC FB[..]来间接寻址代码块的调用。使用UC或CC的调用可以方便地转向其他块,块参数的传送操作或实例数据块的打开操作将不会发生。
点击排行
