西门子PLC指针类型与间接寻址教程

发布者:创意旅程最新更新时间:2023-10-24 来源: elecfans关键字:西门子  PLC  指针类型  间接寻址 手机看文章 扫描二维码
随时随地手机看文章

在西门子S7-300和S7-400的编程中经常需要调用一些系统功能或功能块,在输入参数时经常碰到有指针类型的参数,那么你对指针类型了解吗?我第一次接触指针一词是在学习C语言的时候,指针和链表是C语言中的一个重点难点。在C语言中,指针即存储器地址,在西门子PLC中的指针也是指地址。下面看看西门子POINTER类型的结构:

参数类型POINTER存储下列信息:

·DB编号(或0,如果数据没有存储在DB中)

·CPU中的存储区域(下表给出了参数类型POINTER存储器区的十六进制代码)

十六进制代码存储区描述
81号公路输入区域
八十二年Q输出区域
第八十三章字母M位存储区域
八十四年达布数据块
85号公路背景数据块
第86名L本地的数据(L堆栈)
第87名字母V先前的本地数据

PART01 数据的地址(格式为字节位)

STEP 7提供指针格式:p#memory_area byte.bit_address. (如果形式参数被声明为参数类型POINTER,只需要指出存储区域和地址。STEP 7将自动地重定输入指针的格式。) 下面的实例说明如何为以M50.0开始的数据输入参数类型POINTER:P#M50.0

PART02 存储器间接寻址

使用存储器间接寻址的程序语句包含一条指令,后面跟有[地址]标识符,最后是一个(地址必须括在方括号内)。根据所用的地址标识符,该指令会将存储于指定地址的数据解释为字或双字指针。完整的数据地址由地址标识符和指针构成,如下例所示。间接寻址的优点是能在程序执行期间动态修改指令的数据地址。

PART03 存储器间接寻址使用以下两部分地址:

1. 地址标识符

对于由位逻辑运算寻址的位,可分配地址标识符I、Q、M、L、DIX或DBX。

对于由装载指令寻址的字节、字和双字,可使用存储区I、Q、M、L、D和PI,分配IB、IW、ID、DBB、DBW、DBD、DIB、DIW、DID、PIB、PIW、PID等形式的地址标识符。

对于由传送指令寻址的字节、字和双字,可使用存储区I、Q、M、L、DB、DI和PQ,分配IB、IW、ID、DBB、DBW、DBD、DIB、DIW、DID、PQB、PQW、PQD等形式的地址标识符。

要寻址定时器、计数器或块,可使用T、C、DB、DI、FB、FC形式的区域标识符。

2. 括在方括号"[ ]"内的字或双字指针的地址

字指针 - 含有定时器(T)、计数器(C)、数据块(DB、DI)或逻辑块(FC、FB)的标识号的字。字指针是十进制整数。

双字指针 - 指含有位、字节、字或双字的确切位置的双字。双字指针的格式为:P#字节.位。指针必须存储在下列区域之一,才能进行存储器间接寻址:

M - 位存储器

L - 本地数据

D - 数据块(DB或DI)

STAT 静态数据(不是用于具有多重实例能力的块的静态数据)

注意如果要寻址使用存储器间接寻址的字节、字或双字,请确保指针的位号为双字格式0。

PART04 字指针实例

L 5 //将指针值载入ACCU 1。T MW2 //将指针传送到MW2中。L T[MW2] //将5号定时器的当前时间值载入ACCU 1。

L C[MW2] //将5号计数器的当前计数值载入ACCU 1。

OPN DB[MW2] //将数据块DB5作为共享数据块打开。

OPN DI[MW2] //将数据块DB5作为背景数据块打开。

PART05 双字指针实例

L P#8.7 //将指针值载入ACCU 1。T MD2 //将指针传送到MD2中。A I [MD2] //扫描输入位8.7的状态,并将其= Q [MD2] //信号状态分配给输出位Q 8.7。

区域内寄存器间接寻址:

使用区域内寄存器间接寻址的程序语句包含一条指令和以下组成部分:地址标识符[地址寄存器标识符,地址]。区域内寄存器间接寻址使用以下两部分地址:

1. 地址标识符

对于由位逻辑运算寻址的位,可以分配地址标识符I、Q、M、L、DIX或DBX。

对于由装载指令寻址的字节、字和双字,可使用存储区I、Q、M、L、D和PI,分配IB、IW、ID、DBB、DBW、DBD、DIB、DIW、DID、PIB、PIW、PID等形式的地址标识符。

对于由传送指令寻址的字节、字和双字,可使用存储区I、Q、M、L、DB、DI和PQ,分配IB、IW、ID、DBB、DBW、DBD、DIB、DIW、DID、PQB、PQW、PQD等形式的地址标识符。

2. 方括号"[ ]"中的内容包括地址寄存器引用(AR1或AR2)、逗号分隔符","以及双字指针。

双字指针 - 指包含位、字节、字或双字的部分地址的双字。双字指针的格式为:P#字节.位。

注意请记住您现在使用的是两个格式为"P#字节.位"的指针。一个指针已被精确表示出来。另一个指针通过对地址寄存器AR1或AR2的引用来确定。如果要寻址字节、字或双字,请确保指针的位号为0。使用寄存器间接寻址的语句不更改地址寄存器的内容。

指针实例:

L P#8.7 //将指针值载入ACCU 1。LAR1 //用ACCU 1中的指针装载AR1。A I [AR1, P#0.0] //检查输入位I 8.7并将有符号的状态分配给Q 10.0。= Q [AR1, P#1.1] //确切地址8.7在AR1中。偏移量不对其产生影响。确切位置10.0由8.7 (AR1)加上1.1 (偏移量)得出,结果是10.0而不是9.8。

区域内寄存器间接寻址实例:

A I [AR1,P#4.3] 对其位置是由AR1中的内容加上4个字节,再加上3个位计算得出的输入位,执行逻辑与运算。= DIX [AR2, P#0.0] 将RLO位状态分配给位于AR2中的实例数据位。L IB [AR1, P#10.0] 将输入字节载入ACCU 1中。地址由AR1的内容加上十个字节计算得出。T LD [AR2,P#53.0] 将ACCU 1中的内容传送到本地双字中(该双字的位置由AR2的内容加上53个字节计算得出)。

区域内寄存器间接寻址的特点是:地址标示符在方括号前确定,方括号中的指针均为不含存储区信息(如[AR1,P#4.3]中AR1=P#8.7,两个指针都不含有存储区信息),否则将会与方括号前的地址标示符表示的存储区冲突。

PART06 跨区域寄存器间接寻址

使用跨区域寄存器间接寻址的程序语句包含一条指令和以下组成部分:地址标识符[地址寄存器标识符,地址]。

跨区域寄存器间接寻址使用以下两部分地址:

1. 对已寻址的数据对象(地址标识符)大小的规定数据对象大小规定 位(无规定表示是一个位)B 字节W 字D 双字

2. 方括号"[ ]"中的内容包括地址寄存器引用(AR1或AR2)、逗号分隔符","以及双字指针。双字指针 - 指包含位、字节、字或双字的部分地址的双字。指针具有以下区域内格式:P#字节.位。

注意事先必须已将跨区域双字指针载入到由寄存器间接地址引用的地址寄存器中。跨区域双字指针 - 包含位的部分地址(对于位逻辑指令)或字节、字或双字的部分地址(对于装载和传送指令)的双字。地址前面的区域标识符位于用来指定字节和位。跨区域双字指针格式为:P#区域标识符字节.位。

对于由位逻辑指令寻址的位,可以分配跨区域指针区域标识符I、Q、M、DIX或DBX。

对于由装载或传送指令寻址的字节、字和双字,可以分配跨区域指针区域标识符I、Q、M、DIX、DBX或P。注意要在指针中指定外设输入或PI区域,请以P#Px.y形式输入指针。区域被指定为P。在跨区域指针中不能使用外设输出PQ区域。请记住您正使用两个指针:

作为偏移量,直接在地址中表示的区域内双字指针,例如P#4.0。

存储在地址寄存器(AR1或AR2)中的跨区域双字指针,例如P#Q4.0。

如果要访问通过直接寻址方式进行寻址的字节、字或双字,请确保这两个指针的位号均为0。使用寄存器间接寻址的语句不更改地址寄存器的内容。

PART07 跨区域寄存器间接寻址的第一个实例

L P# I8.7 //将指针值和区域标识符载入ACCU 1。LAR1 //将存储区I和地址8.7存入AR1。L P# Q8.7 //将指针偏移量和区域标识符载入ACCU 1。LAR2 //将存储区Q和地址8.7存入AR2。A [AR1, P#0.0] //检查输入位I 8.7并将其信号状态分配给输出位Q 10.0。= [AR2, P#1.1] //偏移量0.0没有任何作用。输出位10.0由8.7 (AR2)加上1.1 (偏移量)得出,结果是10.0而不是9.8。跨区域寄存器间接寻址的第二个实例:

A I 0.0 JC M002 L P#M10.0 //将指针值和区域标识符载入ACCU 1。LAR1 //将存储区M和地址10存入ACCU 1。JU M001 M002: L P#Q0.3 //将指针值和区域标识符载入ACCU 1。LAR1 //将存储区Q和地址0.3存入ACCU 1。M001:A I 0.4 = [AR1, P#0.1] //I 0.0用于控制哪个指针用于此语句。将I 0.4的信号状态分配给存储器位M 10.1,或者分配给输出Q 0.4。

跨区域寄存器间接寻址实例A [AR1,P#4.3],对于其位置是由AR1中的内容加上4个字节,再加上3个位计算得出的位,执行逻辑与运算。位的存储区在AR1的位24、25和26中指出。= [AR2, P#0.0] 将RLO位信号状态分配给位于AR2中的位。位的存储区在AR1的位24、25和26中指出。L B [AR1, P#10.0] 将字节(其位置由AR1的内容加上10个字节计算得出)载入ACCU 1。位的存储区在AR1的位24、25和26中指出。T D [AR2,P#53.0] 将ACCU 1的内容传送到双字(该字的精确位置由AR2的内容加上53个字节计算得出)。位的存储区在AR1的位24、25和26中指出。

跨区域寄存器间接寻址的特点是:地址标示符在方括号前确定,方括号中的地址寄存器中包含存储区信息(如[AR1,P#4.3]中AR1=P#Q0.3)。

区域内寄存器间接寻址和跨区域寄存器间接寻址的使用相当灵活,可以根据需要选择。由上面的说明可知,区域内寄存器间接寻址是针对存储区固定的间接寻址方式,寻址的存储区是确定的。而跨区域寄存器间接寻址则在指令中不确定存储区,存储区由地址寄存器中存储的指针中的信息确定,因而寻址的存储区是可变的。


关键字:西门子  PLC  指针类型  间接寻址 引用地址:西门子PLC指针类型与间接寻址教程

上一篇:搞懂PID控制原理就这么简单
下一篇:零传动的直线电机:结构、原理、特点与应用

推荐阅读最新更新时间:2024-11-11 12:29

PLC的抗干扰技术
 概述 自动化系统中所使用的各种类型PLC,有的是集中安装在控制室,有的是分散安装在生产现场的各单机设备上,虽然它们大多处在强电电路和强电设备所形成的恶劣电磁环境中,但PLC是专门为工业生产环境而设计的控制装置,在设计和制造过程中采用了多层次抗干扰和精选元件措施,故具有较强的适应恶劣工业环境的能力、运行稳定性和较高的可靠性,因此一般不需要采取什么特殊措施就可以直接在工业环境使用,但是由于它直接和现场的I/O设备相连,外来干扰很容易通过电源线 或I/O传输线侵入,从而引起控制系统的误动作。PLC受到的干扰可分为外部干扰和内部干扰。在实际的生产环境下,外部干扰是随机的,与系统结构无关,且干扰源是无法消除的,只能针对具体情况加以限制
[嵌入式]
工控中的PLC是什么?工业控制实现自动化与PLC有何关系
PLC是科编程逻辑控制器的简称,是专门为工业场景所设备所设备的一套数字运算操作电子系统。 通俗来讲,就是专门用户控制工业控制中的计算机,在智能控制中是最核心的部件,可以在其内部执行逻辑运算、顺序控制等指令,可以对工业控制领域的各种类型的设备或者生产线进行控制,目前,机床、包装机械以及汽车行业是PLC主要的三大市场。 工业控制实现自动化与PLC的加入有非常大的关系,PLC在工业生产线中主要功能为:开环控制、模拟量闭环、数字量控制等,这在很多场景下可以取代传统的继电接触器控制系统,让工业控制系统实现自动化生产。此外,PLC除了控制外,还可以实现采集现场数据的功能,并且可以对数据进行统计和记录。 由于PLC大多数都使用了单片
[嵌入式]
西门子1200与300的九大区别
一、硬件的区别 在硬件扩展方面,S7-300的主机架多支持八个扩展模块,而S7-1200支持扩展多八个信号模块和多三个通信模块。以S7-300 CPU313C和S7-1200 CPU1214C为例,S7-1200的CPU支持通过信号板来增加IO点数,而S7-300CPU的IO点数是固定的。在硬件组态方面,S7-300和S7-1200的地址都可以由用户手动进行重新分配。 ▲硬件的区别 二、通信方面的区别 串行通信方面,S7-300和S7-1200都支持通过RS232和RS485实现点对点通信,支持ASCII、USS和MODBUS等通信协议。S7-300需要选用带PTP接口的CPU或者CP模块,实现RS232的串口通信。而S7-1
[嵌入式]
<font color='red'>西门子</font>1200与300的九大区别
西门子工业平板选用Atmel触摸控制器
西门子工业自动化集团选择Atmel maXTouch控制器助力其Simatic工业平板显示器的19英寸触摸屏 即使是在强力电磁干扰等各种恶劣的工业环境中,maXTouch控制器也能提供卓越的触摸性能 中国北京,2013年12月2日- 全球微控制器(MCU)和触摸解决方案领域的领导者Atmel公司(纳斯达克:ATML)今日宣布, 西门子工业自动化集团已选择Atmel的maXTouch®控制器来驱动西门子Simatic工业平板显示器。Atmel的maXTouch mXT1664S能够满足工业环境的所有要求,即使在高温、振动、冲击和电磁干扰(EMI)情况下也可以提供无缝的触摸体验。 西门子的Simatic工业平板显示器可在多种极恶
[工业控制]
我国工业以太网交换机市况分析
现在工业中,通常会采用专用的工业以太网交换机,定义不同的太网帧优先等级,让用户所希望的信息能够以最快的速度传递出去。目前,我国工业以太网交换机行业整体上仍处于导入阶段,下游客户主要集中于电力、轨道交通等行业。预计整个“十二五”期间,工业以太网交换机平均每年的市场容量在30亿元左右,未来3年的复合增速将达25%。 工业以太网交换机市面状况 国内工业以太网交换机市场中,电力和轨道交通是工业交换机的重点应用领域,占到市场的70%。中国工业以太网交换机市场活跃着大约50家厂商。中国工业以太网交换机市场的外资厂商在15家左右,台资厂商3-4家,本土厂商30家左右。本土厂商中以地方品牌居多。目前参与国内工业以太网交换机市场竞争的企业可
[嵌入式]
PLC的日常维护注意事项
PLC维护完全是必须的,可以考虑采用强制性执行,根据不同设备,在程式里提供计时计数功能,到时间或者使用次数,系统提醒设备维护人员,开始对PLC及周边电路与设备进行保养,如节点电阻,螺丝松紧的扭矩测试,电源是否在工作范围类,过滤网除尘,散热风扇,除尘,加油,甚至是风速测试,能否达到散热要求什么的。在我们的设备使用手册上增加这一项的说明,在有人机的设备上,提供对应的保养填写表单。这项既可以是对设备维护人员的要求,也可以作为使用厂家对维护员工工作检查的参考!      1、安装有PLC的电器控制柜要有整洁干燥的环境。内部应安放吸湿干燥物,并防止冷却液,油雾的飞溅。      2、无论系统工作或者停机状态下,电器柜门要始终处于关闭状态,保持
[嵌入式]
西门子全球裁员6900人:其中一半在德国
  北京时间11月16日消息, 西门子 周四宣布将在全球范围内裁员6900人,以此作为对能源和大宗商品行业形势变化做出的回应。下面就随手机便携小编一起来了解一下相关内容吧。    西门子 称,约一半裁员活动都将在德国进行,此次行动将于“未来几年”在受影响的行业部门中展开。公司首席人力资源官雅尼娜·库格尔(Janina Kugel)表示:“这次裁员对于确保我们在电厂技术、发电机和大型电动机等领域中保持长期的专业技术竞争力而言是势在必行的,我们采取的措施正是为了实现这个目标。”   尽管如此, 西门子 仍旧预计该公司从今年到2018年的新聘人员水平将保持稳定,并称其计划让尽可能多的受影响员工填补现有的3200个岗位空缺。   西门子
[手机便携]
Modbus协议转Profibus协议网关接温控表与PLC通讯
一、前言 在智能化飞速发展的时代,各个行业都在使用自动化系统。在智能楼宇系统中,温控表和PLC(可编程逻辑控制器)通讯是至关重要的,在智能楼宇系统中,温控表起着监测和控制室内温度的重要作用。而PLC作为控制中心,负责接收温控表传输的数据,并进行相应的控制操作。为了实现温控表与PLC之间的通讯,通常需要借助Modbus协议转Profibus协议网关(XD-MDPB100)。 二、Modbus协议转Profibus协议网关作用 Modbus协议转Profibus协议网关(XD-MDPB100)则是实现这一通讯的重要工具。Modbus转Profibus网关的主要功能是实现Modbus协议和Profibus协议之间的转换和通信。它集成
[嵌入式]
Modbus协议转Profibus协议网关接温控表与<font color='red'>PLC</font>通讯
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved