您现在的位置是:首页 > 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[..])都可以打开一个数据块。如果地址字为0CPU执行一个空操作。

    可以使用UC FC[..]CC FC[..],或者UC FB[..]CC FB[..]来间接寻址代码块的调用。使用UCCC的调用可以方便地转向其他块,块参数的传送操作或实例数据块的打开操作将不会发生。