西门子EM231CN卡件
取数据方法与C语言中的应用相似,其过程如下所述。
(1)建立地址指针
使用间接寻址对某个存储器单元读、写时,首先要建立地址指针。地址指针为双字长,是所要访问的存储器单元的32位的物理地址。可作为地址指针存储区的有:变量存储器(V)、局部变量存储器(L)和累加器(AC1、AC2、AC3)。必须采用双字传送指令(MOVD)将存储器所要访问存储器单元的地址传送给用来作为地址指针的存储器单元或寄存器,注意,这里传送的是地址而不是数据本身。例如:
MOVD&VBl00,VD204
MOVD&VBl0,AC2
MOVD&C2,LDl6
其中,“&”为地址符号,它与单元编号结合表示所对应单元的32位物理地址;VBl00、VBl0、C2只是一个直接地址编号,并不是它的物理地址;指令中的第二个地址数据长度必须是双字长,如VD、AC和LD。
(2)间接存取间接寻址是指数据存放在存储器或寄存器,在指令中只出现所需数据所在单元的内存地址。存储单元地址的地址又称为地址指针。这种间接寻址方式与计算机的间接寻址方式相同。间接寻址在处理内存连续地址中的数据时非常方便,而且可以缩短程序所生成的代码长度,使编程更加灵活。
可以用地址指针进行间接寻址的存储器有:输入继电器(I)、输出继电器(Q)、通用辅助继电器(M)、变量存储器(V)、顺序控制继电器(S)、定时器(T)和计数器(C)。其中,对T和C的当前值可以进行间接寻址,而对独立的位值和模拟量不能进行间接寻址。
LD、LDN、“=”指令的使用说明如下所述。
1)LD、LDN指令用于与输入公共线(输入母线)相连的触点,也可以与后述的OLD、ALD指令配合使用于分支回路的开头。
2)“=”指令用于输出继电器、辅助继电器、定时器及计数器等,但不能用于输入继电器。
3)并联的“=”指令可以连续使用任意次,但是,当操作时一般不能重复使用,例如,在程序中多次出现"=Q0.0"。
4)LD、LDN的操作数包括:I、Q、M、SM、T、C、V和S。“=”的操作数包括:Q、M、SM、T、C和S。
2.触点串联指令A(And)、AN(And Not)为真,则Q0.0为ON。
ALD指令的使用说明如下所述。
面电路串联连接时,使用ALD指令。分支的起始点用LD(LDN)指令,并联电路块结束,使用ALD指令与前面电路串联。
2)如果有多个并联电路块串联,顺次以ALD指令与前面支路连接,支路数量没有限制。
3)ALD指令无操作数。
3.载入栈指令LDS、逻辑入栈指令LPS、逻辑读栈指令LRD、逻辑出栈指令LPP
LDS(Load Stack):载入栈指令,它的功能是复制栈中的第n个值到栈顶,而栈底丢失。LDS指令的格式:LDS n(n为0~8的整数)。
LPS(Logic Push):逻辑入栈指令(分支电路开始指令)。在梯形图的分支结构中,可以形象地看出,它用于生成一条新的母线,其左侧为原来的主逻辑块,右侧为新的从逻辑块。因此可以直接编程。从栈使用上来讲,LPS指令的作用是复制栈顶部的数值,并将此数值压入栈中。栈底为真,则Q0.0为ON。
1)当分支电路(并联电路块)与前面电路