首页 理论教育 寻址方式及指针常数在STEP7中的应用

寻址方式及指针常数在STEP7中的应用

时间:2023-06-23 理论教育 版权反馈
【摘要】:中国GB标准合金工具钢的钢号与化学成分[GB/T 1299—2000]表4-5 合金工具钢的钢号与化学成分(%)STEP7中有两种格式的寄存器间接寻址方式,分别是区域内的间接寻址和区域间的间接寻址。当31位为0时,为区域内的间接寻址;当31位为1时,为区域间的间接寻址。在某一存储区内寻址。第24~26位应为0。指针常数#P5.0对应的二进制数为2#0000 0000 0000 0000 0000 0000 0010 1000。因为地址指针P#M6.0中已经包含有区域信息,使用间接寻址的指令TW[AR1,P#50]中没有必要再用地址标识符M。

寻址方式及指针常数在STEP7中的应用

1.绝对寻址

要访问一个变量,必须要找到它在存储空间的位置,这个过程就是寻址(Addressing)。在STEP7中,使用地址如I/O信号、位内存、计数器、定时器、数据块和功能块都可以通过绝对寻址和符号寻址来访问。

绝对地址是由一个关键字和一个地址数据组成的。STEP 7中常用的绝对地址关键字见表4-4。

4-4 绝对地址关键字

978-7-111-58358-5-Chapter04-8.jpg

关键点MD0由MB0、MB1、MB2和MB3四个字节组成,MB0是高字节,而MB3是低字节,字节、字和双字的起始地址如图4-3所示。

978-7-111-58358-5-Chapter04-9.jpg

图4-3 字节、字和双字的起始地址

【例4-2】如果MD0=16#1F,那么,MB0、MB1、MB2、MB3、M0.0和M3.0的数值是多少?

根据图4-3,MB0=0;MB1=0;MB2=0;MB3=16#1F;M0.0=0;M3.0=1。这点不同于三菱PLC,读者要注意区分。如不理解此知识点,在编写通信程序时,如DCS与S7-300/400PLC交换数据时,容易出错。

【例4-3】如图4-4所示的梯形图,是某初学者编写的,请查看有无错误

978-7-111-58358-5-Chapter04-10.jpg

图4-4 梯形图

这个程序的逻辑是正确的,但这个程序在实际运行时,并不能采集数据。网路1是起停控制,当M0.0常开触头闭合后开始采集数据,而且A-D转换的结果存放在MW0中,MW0包含两个字节MB0和MB1,而MB0包含8个位,即M0.0~M0.7。只要采集的数据经过A-D转换,造成M0.0位为0,整个数据采集过程自动停止。初学者很容易犯类似的错误。读者可将M0.0改为M2.0即可,只要避开MW0中包含的16个位(M0.0~M0.7和M1.0~M1.7)都可行。

2.符号寻址

为变量指定符号名可以简化程序的编写和调试,增加程序的可读性。STEP7可以自动将符号地址转化成所需的绝对地址。访问ARRAY、STRUCT、数据块、本地数据、逻辑块以及用户数据类型(UDT)时,优先选用符号寻址。使用符号寻址前,必须先将符号分配给绝对地址,才能以符号的形式应用它们。

STEP7中的符号分为全局符号和局域符号。全局符号是在整个STEP7中可以使用的符号,而局域符号是在某个块中可以使用的符号。全局符号和局域符号的对比见表4-5。

4-5 全局符号和局域符号的对比

978-7-111-58358-5-Chapter04-11.jpg

【例4-4】将如图4-5所示的绝对寻址的起停控制梯形图换成符号寻址梯形图。

978-7-111-58358-5-Chapter04-12.jpg

图4-5 绝对寻址的梯形图

打开STEP 7的SIMATIC管理器,先选中“S7程序(1)”,再双击“符号”,如图4-6所示,弹出符号编辑器界面,输入如图4-7所示的信息,最后单击工具栏的“保存”按钮978-7-111-58358-5-Chapter04-13.jpg,将输入的符号分配给相应的地址,例如“起动”分配给地址“I124.0”。再打开程序编辑器,符号寻址的梯形图如图4-8所示。

978-7-111-58358-5-Chapter04-14.jpg

图4-6 SIMATIC管理器界面

978-7-111-58358-5-Chapter04-15.jpg

图4-7 符号编辑器界面(全局符号)

978-7-111-58358-5-Chapter04-16.jpg

图4-8 符号寻址的梯形图

如图4-9所示,功能块的IN(输入引脚)上的“Sw_On”和“Sw_Off”数据类型为BOOL,是局域符号其有效范围仅在FB1功能块中。(www.xing528.com)

978-7-111-58358-5-Chapter04-17.jpg

图4-9 局域符号

3.间接寻址

(1)存储器间接寻址

在存储器间接寻址指令中,给出一个地址指针的存储器,该存储器的内容是操作数所在存储单元的地址。在循环程序中经常用到存储器间接寻址。

地址指针可以是字或双字,定时器(T)、计数器(C)、数据块(DB)、功能块(FB)和功能(FC)的编号范围小于65535,使用字指针就可以。其他地址则要使用双字指针,如果要用双字格式的指针访问一个字、字节或双字存储器,必须保证指针的位编号为0,例如P#Q20.0。

存储器间接寻址的双字指针格式如图4-10所示,其中0~2位为被寻址地址中的位编号,3~18位为寻址字节编号。只有M、L、DB、PI存储区域的双字节才能作地址指针。

978-7-111-58358-5-Chapter04-18.jpg

图4-10 存储器间接寻址的双字指针格式

存储器间接寻址应用如下:

LQB[DBD10]//将输出字节装入累加器1,输出字节的地址指针在数据双字DBD10中,如果DBD10的值为2#0000 0000 0000 0000 0000 0000 0010 0000,装入的是QB4

AM[LD4]//对存储器位作“与”运算,地址指针在数据双字LD4中,如果LD4的值为2#0000 0000 0000 0000 0000 0000 0010 0011,则是对M4.3进行操作

(2)寄存器间接寻址

地址寄存器AR1和AR2,它们中的内容加上偏移量形成地址指针,指向数值所在的存储单元。寄存器间接寻址中双字指针格式如图4-11所示。

978-7-111-58358-5-Chapter04-19.jpg

图4-11 寄存器间接寻址的双字指针格式

其中第0~2位(xxx)为被寻址地址中位的编号(0~7),第3~18位为被寻址地址的字节的编号(0~65535),第24~26位(rrr)为被寻址地址的区域标识号,第31位x=0为区域内的间接寻址,第31位x=1为区域间的间接寻址。寄存器间接寻址的区域标识位见表4-6。

4-6 寄存器间接寻址的区域标识位

978-7-111-58358-5-Chapter04-20.jpg

STEP7中有两种格式的寄存器间接寻址方式,分别是区域内的间接寻址和区域间的间接寻址。当31位为0时,为区域内的间接寻址;当31位为1时,为区域间的间接寻址。

第一种地址指针格式存储区的类型在指令中给出,例如LDBB[AR1,P#6.0]。在某一存储区内寻址。第24~26位(rrr)应为0。

第二种地址指针格式的第24~26位还包含存储区域标识符rrr,区域间寄存器间接寻址。

如果要用寄存器指针访问一个字节、字或双字,必须保证指针中的位地址编号为0。

指针常数#P5.0对应的二进制数为2#0000 0000 0000 0000 0000 0000 0010 1000。

下面是区内间接寻址的例子:

978-7-111-58358-5-Chapter04-21.jpg

下面是区域间间接寻址的例子:

978-7-111-58358-5-Chapter04-22.jpg

P#M6.0对应的二进制数为2#1000 0011 0000 0000 0000 0000 0011 0000。因为地址指针P#M6.0中已经包含有区域信息,使用间接寻址的指令TW[AR1,P#50]中没有必要再用地址标识符M。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈