STEP 7 指针编程
step7编程语言与指令
S7-300/400的编程语言与指令系统3.1 S7-300/400的编程语言3.1.1 PLC 编程语言的国际标准IEC 61131是PLC 的国际标准,1992~1995年发布了IEC 61131标准中的1~4部分,我国在1995年11月发布了GB/T 15969-1/2/3/4(等同于IEC 61131-1/2/3/4)。
IEC 61131-3广泛地应用PLC 、DCS 和工控机、 “软件PLC ”、数控系统、RTU 等产品。
定义了5种编程语言1) 指令表IL(Instruction list):西门子称为语句表STL 。
2) 结构文本ST(Structured text):西门子称为结构化控制语言(SCL )。
3) 梯形图LD(Ladder diagram):西门子简称为LAD 。
4) 功能块图FBD (Function block diagram):标准中称为功能方框图语言。
5) 顺序功能图SFC(Sequential function chart):对应于西门子的S7 Graph 。
ͼ3-1 PLCµÄ±à³ÌÓïÑÔ˳Ðò¹¦ÄÜͼÌÝÐÎͼ¹¦ÄÜ¿éͼָÁî±í½á¹Îı¾3.1.2 STEP 7中的编程语言梯形图、语句表和功能块图是3种基本编程语言,可以相互转换。
1.顺序功能图(SFC) :STEP 7中的S7 Graph2.梯形图(LAD)直观易懂,适合于数字量逻辑控制。
STEP7 指针编程(崔坚(36))
32位交叉区域指针使用示例
使用交叉区域指针表示方法(例如装载M存储器一个字节)为:
寄存器间接寻址
LAR1 P#M 20.0
//将指针P#M20.0 装载到地址寄存器1中。
A [AR1,P#1.1] //M21.1“与”操作。
= Q 1.2
//如果M21.1为1,输出1.2为1。
L P#I 40.0
32位地址指针
地址寻址表示格式为: 地址存储器标识符[32位地址指针],例如指针存储于LD20中, 装载M存储器一个字节表示
存储区地址指针
32位地址指针也可以使用常数表示,例如装载32位指针常 数 L P# 40.3 (P=指针,字节地址=40,位地址=3)。32位地址 指针数据与双整数可以相互转换,由于指针指到一个位地 址上,每一个位地址加1,相应转换的整数值加1的倍数, 例如P#0.0转换双整数为L#0,P#0.1转换双整数为L#1,每一 个字节地址加1,相应转换的整数值加8的倍数,例如P#3.1 转换双整数为L#25.
//指针指向P#2.4,相当于L DBB2.4,CPU无法识别,将停机。
如果对相邻两个字节操作,指针转换为整数值最小必须为8(指针为 P#1.0)的倍数,如果对 相邻两个字操作,指针转换为整数值最小必须为16(指针为P#2.0)的 倍数,,如果对相邻
两个双字操作,指针转换为整数值最小必须为32(指针为P#4.0)的倍 数,对字与双字指针
寄存器间接寻址
地址寄存器AR1、AR2的限制
寄存器间接寻址
避免方法:
L #ARR_TEST[1]
//装载形参变量ARR_TEST[1 1
//打开OB1
LAR1 P#20.0
//将P#20.0装载到地址寄存器AR1
step7编程的地址概念详解及示例
标签:无标签st ep7编程的地址概念详解及示例完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如N OT 等)。
其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。
我们知道,在P LC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(B YTE)、字(WOR D)、双字(DWOR D)来衡量,或者说来指定确切的大小。
当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。
由此我们可以得到,要描述一个地址,至少应该包含两个要素:1、存储的区域2、这个区域中具体的位置比如:A Q2.0 其中的A是指令符,Q2.0是A的操作数,也就是地址。
这个地址由两部分组成:Q:指的是映像输出区2.0:就是这个映像输出区第二个字节的第0位。
由此,我们得出,一个确切的地址组成应该是:〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。
DBX 200 . 0其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。
这样,一个确切的地址组成,又可以写成:地址标识符 + 确切的数值单元【间接寻址的概念】寻址,就是指定指令要进行操作的地址。
给定指令操作的地址方法,就是寻址方法。
在谈间接寻址之前,我们简单的了解一下直接寻址。
所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。
第三章 STEP7编程技术
一、步进电机的分类、基本结构和工作原理
步进电机的分类 1.永磁式步进电机 2.反应式步进电机 3.混合式步进电机 步进电机的基本结构和工作原理
步进电机的分类
1.永磁式步进电机一般为两相,转矩和体积较小, 步进角一般为7.5度或15度。 2.反应式步进电机一般为三相,可实现大转矩输 出,步进角一般为1.5度,但噪声和振动都很大。 3.混合式步进电机是指混合了永磁式和反应式的 优点。它又分为两相和五相。两相步进角一般分 为1.8度而五相步进角一般为 0.72度。这种步进 电机的应用最为广泛。
采用西门子S7-300PLC控制三相步进电机的过程
三相双三拍正向的时序图如图所示
采用西门子S7-300PLC控制三相步进电机的过程
三相单六拍正向时序图如图所示
PLC直接控制步进电机
编程方法 1.使用定时器指令实现各种时序脉冲的 要求:使用定器产生不同工作方式下的工 作脉冲,然后按照控制开关状态输出到各 相对应的输出点控制步进电机。
1.硬件设置
(2)双击SIMATIC 300 Station下的 hardware进入硬件组态工具软件进行硬 件设置如图所示。
步进电机的基本结构和工作原理
三相反应式步进电机 的结构如图所示 定子、转子是用硅钢 片或其他软磁材料制 成的。定子的每对极 上都绕有一对绕组, 构成一相绕组,共三 相称为A、B、C三相。
步进电机的基本结构和工作原理
在定子磁极和转子上都开有齿分度相同的 小齿,采用适当的齿数配合,当A相磁极 的小齿与转子小齿一一对应时,B相磁极 的小齿与转子小齿相互错开1/3齿距,C相 则错开2/3齿距。如图所示
STEP7编址详解
完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。
其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。
我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。
当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。
由此我们可以得到,要描述一个地址,至少应该包含两个要素:1、存储的区域2、这个区域中具体的位置比如:A Q2.0其中的A是指令符,Q2.0是A的操作数,也就是地址。
这个地址由两部分组成:Q:指的是映像输出区2.0:就是这个映像输出区第二个字节的第0位。
由此,我们得出,一个确切的地址组成应该是:〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗地址标识符例如:DBX200.0。
其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。
这样,一个确切的地址组成,又可以写成:地址标识符+ 确切的数值单元【间接寻址的概念】寻址,就是指定指令要进行操作的地址。
给定指令操作的地址方法,就是寻址方法。
在谈间接寻址之前,我们简单的了解一下直接寻址。
所谓直接寻址,简单的说,就是直接给出指令的确切操作数,像上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。
这样看来,间接寻址就是间接的给出指令的确切操作数。
对,就是这个概念。
比如:A Q[MD100] ,A T[DBW100]。
程序语句中用方括号[ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。
间接由此得名。
西门子的间接寻址方式有两大类型:存储器间接寻址和寄存器间接寻址。
step7编程语言与指令
S7-300/400得编程语言与指令系统3、1 S7-300/400得编程语言3、1、1 PLC编程语言得国际标准IEC 61131就是PLC得国际标准,1992~1995年发布了IEC 61131标准中得1~4部分,我国在1995年11月发布了GB/T15969-1/2/3/4(等同于IEC 61131-1/2/3/4)。
IEC 61131-3广泛地应用PLC、DCS与工控机、“软件PLC”、数控系统、RTU等产品。
定义了5种编程语言1) 指令表IL(Instruction list):西门子称为语句表STL。
2) 结构文本ST(Structured text):西门子称为结构化控制语言(SCL)。
3) 梯形图LD(Ladder diagram):西门子简称为LAD。
4)功能块图FBD (Function block diagram):标准中称为功能方框图语言。
5)顺序功能图SFC(Sequential function chart):对应于西门子得S7 Gra ph。
3、1、2 STEP 7中得编程语言梯形图、语句表与功能块图就是3种基本编程语言,可以相互转换。
ﻩ1.顺序功能图(SFC) :STEP 7中得S7 Graph2.梯形图(LAD)直观易懂,适合于数字量逻辑控制。
“能流”(Power flow)与程序执行得方向。
3、语句表(STL):功能比梯形图或功能块图强。
4.功能块图(FBD):“LOGO!”系列微型PLC使用功能块图编程。
5.结构文本(ST):STEP 7得S7SCL(结构化控制语言)符合EN 61131-3标准。
SCL适合于复杂得公式计算、复杂得计算任务与最优化算法,或管理大量得数据等。
6.S7 HiGraph 编程语言图形编程语言S7 HiGraph 属于可选软件包,它用状态图(state graphs)来描述异步、非顺序过程得编程语言。
7.S7 CFC 编程语言可选软件包CFC(Continuous Function Chart,连续功能图)用图形方式连接程序库中以块得形式提供得各种功能。
西门子STEP7图解编程、调试步骤
1.打开SIMATIC STEP7。
2.新建一个工程项目3.项目定义名字后,点击OK4.硬件配置,(以CPU为S7-400为例)5.打开硬件组态6.根据实际基架型号选择基架,并双击7.选择电源:8.选择CPU9.选择数字量输入模板:10.选择数字量输出模板11.选择模拟量输入模板12.选择模拟量输出模板13.硬件配置保存并编译这样就完成了硬件配置。
配置完成后回到主界面,就可以在CPU中的BLOCK进行软件编程了。
14.根据需要插入中断组织块:在属性窗口中可以定义OB的绝对地址以及符号地址,还可以对组织块的功能加以简单注释等。
也可以在此处选择该OB所用编程语言的种类。
15.新建数据块:16.打开DB,定义该数据块的地址结构:在数据块中可以定义数据的符号名,定义数据类型,定义数据注释。
17.建立符号表18.新建功能:在下面的FC属性窗口中可以定义FC的绝对地址以及符号地址,还可以对功能块的功能加以简单注释等。
也可以在此处选择该功能所用编程语言的种类。
19在FC中进行软件编程:根据功能需要插入常开常闭触点,整/实型运算函数,延时器等。
新建NETWORK:20.保存FC100并在OB1中调用。
21.启动S7-PLCSIM进行仿真测试:22.将所有程序块下载到仿真器中:23.将仿真器CPU从STOP位置变换到RUN-P位置:24.打开OB1 进行监视。
25.打开FC100 进行监视。
26.强制信号:27.另外还可以通过变量表监视系统数据:输入要监视变量的绝对地址:。
step7编程语言
用这种编程语言。功能块图在STEP 7 V3.0版本后提供。
• LAD(梯形图)
• FBD(功能块图) • STL(语句表)
选择编程语言
LAD/FBD => STL可以把图形化编程语言编写的程序转换成语句表。但是,应该知道这种转换在语句表中不是最有效的程序。
STL=>LAD/FBD 不是所有的语句表程序都能转换成LAD或 FBD。不能转换的程序仍用语句表显示。在转换中不会丢失程序。
目录 页
STEP 7编程语言 …………................................................................................................................. 2 启动LAD/STL/FBD 编辑器 ................................................................................................................. 3
编辑器
编程元件 当采用LAD和FBD编程语言时,可以用工具条插入简单的程序元件。
点击“程序元件”图标打开另一个包含更多程序元件的窗口。该窗口的内容根据所选择的编程语言(LAD/FBD/STL)而不同。
2x
SIMATIC S7
Siemens AG 2000. All rights reserved.
STEP7程序执行原理和编程方法S7系列学习3
STEP7程序执行原理和编程方法 S7系列学习3 STEP7程序执行原理和编程方法 S7系列学习3今天我们来讲讲STEP7的编程方法,要讲编程方法,那么我们就要先来看看PLC的循环程序是如何执行的。
(这一点非常重要)1.循环程序如何执行西门子PLC程序执行图(建议保存)1.1在CPU上电之后,启动块OB100/101/102先启动一次。
(调用哪一个OB块由系统的启动模式配置决定)1.2启动块执行完毕后,系统的循环监视时间就被激活了(这个时间可以在STEP7的硬件配置中设置,如果循环时间超出则PLC停机)1.3之后,CPU会从输入模块及其它过程映象设备读取所有的输入状态1.4接着下来便到了主循环程序的执行1.4.1主循环执行也是按照语句顺序执行,如图所示,当OB1执行第一个语句CallFB,则此时程序进入所调用FB块顺序执行FB块的语句1.4.2若在所调用的FB块,在某一语句中执行了CallFB/FC,则程序又进入下一级的FC中依次执行块中语句,依此类推1.4.3当调用的下一级FC所有语句执行完成后,程序回到CallFC的这一语句,继续执行后面的语句1.4.4当所Call的FB也执行完成后,程序回到OB1的CallFB处,继续执行后面的语句。
1.4.5直至最后,完成OB1的所有程序,则主循环结束。
1.4.6在OB1执行的过程中,循环中断(如OB35)、故障中断(如OB86)等可以插入执行,执行完成后会回到中断的地方继续主循环的执行。
1.5主循环执行完成后,PLC将过程映象的输出写到输出模块1.6完成1.5的步骤之后一个完整的循环就结束了,此时跳至1.2步骤,重新开始新一循环的监视时间,如此周而复始。
2.程序块类型知道了PLC循环程序如何执行后,我们再来看一看STEP7的程序块有哪些类型2.1用户块用户块包括程序代码和用户数据。
在结构化程序中,一些块循环调用处理,一些块需要时才调用。
2.1.1组织块OB块构成了S7CPU和用户程序的接口。
第三章STEP7编程技术 看-
位逻辑指令
■ 中间输出单元 ■ 信号流反向指令 ■ 复位线圈 ■ 置位线圈 ■ 复位置位触发器和置位复位触发器
位逻辑指令
■ 程序实例
■ 对应时序图如下所示:
■ 时序图
位逻辑指令
位逻辑指令 正跳沿(上升沿)检测指令
位逻辑指令 负跳沿(下降沿)检测指令
位逻辑指令
■ 地址正跳沿检测 ■ 地址负跳沿检测
OB122。
3.1.2功能FC和功能块FB
■ FC和FB都是用户自己编写的程序块, 用户可以将具有相同控制过程的 程序编写在FC或FB中, 然后在主程序OB1或其他程序块中(包括组织 块和功能、功能块)调用FC或FB。 FC或FB相当于子程序的功能, 都可 以定义自己的参数
1.FC和FB的变量声明表的 差别
STEP7中的数据可分为以下三大类: 基本数据类型 复合数据类型 参数数据类型
基本数据类型(一)
■ 位(BOOL) ■ 字节(BYTE) ■ 字(WORD) ■ 双字(DOUBLE WORD) ■ 整数(INT) ■ 双整数(DOUBLE INT) ■ 浮点数(REAL)
基本数据类型(二)
■ S5TIME(SIMATIC时间) ■ IEC时间(TIME) ■ IEC日期(date) ■ 日计时(TIME_OF_DAY) ■ 字符(CHAR)
3.3.2复杂数据类型
■ 日期时间数据类型( Data_And_Time ) ■ 字符串类型(String) ■ 数组类型Array ■ 结构(STRUCT) ■ 用户定义类型(UDT)
3.3.3参数数据类型
参数数据类型是一类用于功能FC或功能块 FB的数据类型,主要包括以下两种:
Pointe指针类型 6字节指针类型,传递数据块号和数据地
STEP7编程手册
前言 目的本手册详细阐述了STEP 7进行编程,为安装和调试软件提供支持。
本手册解释了如何生成程序,并对用户程序组件作了说明。
本手册的使用对象是那些使用STEP 7和SIMATIC S7自控系统实现控制任务的人员。
我们建议你通过手册《STEP 7 V5.2使用入门》中的例子,来了解STEP 7。
这些例子对“使用STEP 7编程”的主题作了简单的介绍。
所需基本知识为了很好理解本手册,需要具有自动化技术的一般知识。
另外,还应熟悉安装有Windows 95/98/2000,MS Windows Millenium,MS Windows NT4.0工作站,MS Windows 2000专业板或MS Windows XP专业板操作系统的计算机或PC一类的工具的使用(例如编程器等)。
手册的应用范围本手册适用于STEP 7编程软件包V5.2版。
在服务包中可以得到最新信息:• 在“readme.wir”文件中• 在更新的STEP 7在线帮助中在在线帮助中的“What’s new?”主题中可以得到详细介绍,以及新板STEP 7的变化情况。
在线帮助集成在软件中的在线帮助是本手册的补充。
在线帮助的目的是为你提供详细的软件使用帮助。
帮助系统通过多个界面集成在软件中:• 在Help菜单中有多个菜单命令可以选择:使用“Contents(内容)”命令,可以打开Step 7的帮助索引。
• Using Help(使用帮助)提供有详细的在线帮助使用说明。
• 上下文相关帮助可以提供关于当前的文本信息,例如,一个打开的对话框或一个激活的窗口。
你可以通过点击“Help”按钮或按动F1,打开文本相关的帮助。
• 状态栏提供有其它形式的上下文相关帮助。
当鼠标放在某个菜单命令上时,它为每个菜单命令显示一个简短的解释。
• 当鼠标短时放在一个工具栏的图标上时,也能为每个图标显示一个简短的解释。
如果你更愿意阅读打印出来的在线帮助,你可以打印每个帮助主题、工作簿或整个在线帮助。
step7编程之地址概念详解
step7编程之地址概念详解step7编程之地址概念详解完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。
其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。
我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。
当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。
由此我们可以得到,要描述一个地址,至少应该包含两个要素:1、存储的区域2、这个区域中具体的位置比如:AQ2.0其中的A是指令符,Q2.0是A的操作数,也就是地址。
这个地址由两部分组成:Q:指的是映像输出区2.0:就是这个映像输出区第二个字节的第0位。
由此,我们得出,一个确切的地址组成应该是:〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。
DBX200.0其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。
这样,一个确切的地址组成,又可以写成:地址标识符+确切的数值单元【间接寻址的概念】寻址,就是指定指令要进行操作的地址。
给定指令操作的地址方法,就是寻址方法。
在谈间接寻址之前,我们简单的了解一下直接寻址。
所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,AQ2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。
这样看来,间接寻址就是间接的给出指令的确切操作数。
对,就是这个概念。
比如:AQ[MD100],AT[DBW100]。
程序语句中用方刮号[]标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Poi nter,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。
分析一段Step 7的指针程序
LAR1 把地址8.0装载到AR1
L P#Q8.7 把指针值和地址标识符装载到累加器1
LAR2 把存储区域Q和地址8.7装载到AR2
A I[AR1,P#0.0] 查询输入位I8.0的信号状态
= [AR2,P#1.1]
给输出位Q10.0赋值
用途:
指针适合大批量数据处理,赋值等,比如:
有兴趣自己研究下:
LAR1 把存储区域I 和地址8.7装载到AR1
L P#Q8.7 把指针值和地址标识符装载到累加器1
LAR2 把存储区域Q和地址8.7装载到AR2
A [AR1,P#0.0] 查询输入位I8.7的信号状态
= [AR2,P#1.1]
给输出位Q10.0赋值
指针用法3: L 8 把指针值及存储区域标识装载到累加器1 SLD 3 转换为指针值
//数值比较 //置位标志位Comp_NOK
L #Count L1 +D T #Count
//指向DAT_DB_*.DBB [#PointerAdr*+1] 的值
L #Count_Byte <D JC beg
//与一个固定值比较,是否该DB快内数据都已经比较完毕。 //没有比较完,跳转回去继续。
为什么要SLW 3 呢 看看下图
本段程序的原理图如下,有兴趣自己编程试试:
基础知识:
指针用法1: L P#8.7 LAR1 A I[AR1,P#0.0] = Q[AR1,P#1.1]
把指针值装载到累加器1 把指针从累加器1装载到AR1 查询I8.7的信号状态 给输出位Q10.0赋值
指针用法2:
L P#I8.7 把指针值及存储区域标识装载到累加器1
分析一段Step 7的指针程序
step7编程语言与指令
S7-300/400得编程语言与指令系统3、1 S7-300/400得编程语言3、1、1 PLC编程语言得国际标准IEC 61131就是PLC得国际标准,1992~1995年发布了IEC 61131标准中得1~4部分,我国在1995年11月发布了GB/T15969-1/2/3/4(等同于IEC 61131-1/2/3/4)。
IEC 61131-3广泛地应用PLC、DCS与工控机、“软件PLC”、数控系统、RTU等产品。
定义了5种编程语言1) 指令表IL(Instruction list):西门子称为语句表STL。
2) 结构文本ST(Structured text):西门子称为结构化控制语言(SCL)。
3) 梯形图LD(Ladder diagram):西门子简称为LAD。
4)功能块图FBD (Function block diagram):标准中称为功能方框图语言。
5)顺序功能图SFC(Sequential function chart):对应于西门子得S7 Gra ph。
3、1、2 STEP 7中得编程语言梯形图、语句表与功能块图就是3种基本编程语言,可以相互转换。
ﻩ1.顺序功能图(SFC) :STEP 7中得S7 Graph2.梯形图(LAD)直观易懂,适合于数字量逻辑控制。
“能流”(Power flow)与程序执行得方向。
3、语句表(STL):功能比梯形图或功能块图强。
4.功能块图(FBD):“LOGO!”系列微型PLC使用功能块图编程。
5.结构文本(ST):STEP 7得S7SCL(结构化控制语言)符合EN 61131-3标准。
SCL适合于复杂得公式计算、复杂得计算任务与最优化算法,或管理大量得数据等。
6.S7 HiGraph 编程语言图形编程语言S7 HiGraph 属于可选软件包,它用状态图(state graphs)来描述异步、非顺序过程得编程语言。
7.S7 CFC 编程语言可选软件包CFC(Continuous Function Chart,连续功能图)用图形方式连接程序库中以块得形式提供得各种功能。
STEP7编址详解
完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。
其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。
我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。
当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。
由此我们可以得到,要描述一个地址,至少应该包含两个要素:1、存储的区域2、这个区域中具体的位置比如:A Q2.0其中的A是指令符,Q2.0是A的操作数,也就是地址。
这个地址由两部分组成:Q:指的是映像输出区2.0:就是这个映像输出区第二个字节的第0位。
由此,我们得出,一个确切的地址组成应该是:〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗地址标识符例如:DBX200.0。
其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。
这样,一个确切的地址组成,又可以写成:地址标识符+ 确切的数值单元【间接寻址的概念】寻址,就是指定指令要进行操作的地址。
给定指令操作的地址方法,就是寻址方法。
在谈间接寻址之前,我们简单的了解一下直接寻址。
所谓直接寻址,简单的说,就是直接给出指令的确切操作数,像上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。
这样看来,间接寻址就是间接的给出指令的确切操作数。
对,就是这个概念。
比如:A Q[MD100] ,A T[DBW100]。
程序语句中用方括号[ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。
间接由此得名。
西门子的间接寻址方式有两大类型:存储器间接寻址和寄存器间接寻址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A&D CS2 FA 崔坚
SIMATIC Technical Consulting 2007 8月
Page 14
A&D AS CS2 FA Systems Support
寻址方式
直接寻址
存储区地址指针
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
32位内部区域指针使用示例
SIMATIC Technical Consulting 2007 8月
Page 13
A&D AS CS2 FA Systems Support
寻址方式
直接寻址
存储区地址指针
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
32位内部区域指针
32位内部区域指针地址寻址表示格式为:地址存储器标识符 [地址寄存器,地址偏移常量],例如装载M存储器一个字节表 示为:
JC m1
A&D CS2 FA 崔坚
SIMATIC Technical Consulting 2007 8月
Page 9
A&D AS CS2 FA Systems Support
寻址方式
直接寻址
存存储储区区地地址址指指针针
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
的倍数,,如果对相邻 两个双字操作,指针转换为整数值最小必须为32(指针为P#4.0)的
倍数,对字与双字指针 的要求主要防治数据间的冲突,例如DBW[MD2],MD2为16的倍数 时,按照DBW2、DBW4、DBW6寻址,如果为8的倍数,按照DBW1、 DBW2、DBW3寻址,地址间数据冲突。
A&D CS2 FA 崔坚
Page 6
32位地址指针
A&D AS CS2 FA Systems Support
寻址方式 直接寻址
存存储储区区地地址址指指针针
32位地址指针 32位地址指针用于I、Q、M、L、数据块等存储器中位、字节、字及 双字的寻址,32位的地址指针可以使用一个双字表示,第0位~第2 位作为寻址操作的位地址,第3位~第18位作为寻址操作的字节地 址,第19位~第31位没有定义,32位指针的格式如下:
32位地址指针使用示例2
使用LOOP 指令与32位地址指针可以进行循环操作,假设一个编程 应用:一个字变量(MW2)与一个数组(假设存储于DB1中,包含100
个元素为字的数组)存储的值相比较,如果数值相同,指出第一个 相同数值存储在DB块中的位置(数组中的位置)。
L0 T MW 100 T MD 4 OPN DB 1 L 100 next: T MW 100
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
32位地址指针
地址寻址表示格式为: 地址存储器标识符[32位地址指针],例如指针存储于LD20 中,装载M存储器一个字节表示
32位地址指针也可以使用常数表示,例如装载32位指针常 数 L P# 40.3 (P=指针,字节地址=40,位地址=3)。32位地 址指针数据与双整数可以相互转换,由于指针指到一个位 地址上,每一个位地址加1,相应转换的整数值加1的倍 数,例如P#0.0转换双整数为L#0,P#0.1转换双整数为 L#1,每一个字节地址加1,相应转换的整数值加8的倍 数,例如P#3.1转换双整数为L#25.
SIMATIC Technical Consulting 2007 8月
Page 12
寄存器间接寻址使用的指令
A&D AS CS2 FA Systems Support
寻址方式
寄存器间接寻址使用CPU内部集成的两个32位寄存器AR1和AR2
直接寻址
存储区地址指针
寄存器间接寻址
POINTER数据 类型指针
//将地址指针加2(每个相邻的字地址相差2)。
L P#2.0
+D
T MD 4 L MW 100
//次数减1,跳回next,如果MW100等于0,跳 出循环操作LOOP指令,LOOP指令固定格式。
LOOP next m1: FP M 10.0 //如果数值相当,记录MD4指针的数据,将转
换为数组的位置((地址值/P#2.0)+1)值存储于 MD8中。
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
使用32位地址指针的注意事项:
OPN DB 1 L2 T MD 20 L 11 针为P#2.4。
//指针指向P#2.4,相当于L DBB2.4,CPU无法识别,将停机。
如果对相邻两个字节操作,指针转换为整数值最小必须为8(指针为 P#1.0)的倍数,如果对 相邻两个字操作,指针转换为整数值最小必须为16(指针为P#2.0)
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
A&D CS2 FA 崔坚
SIMATIC Technical Consulting 2007 8月
Page 7
A&D AS CS2 FA Systems Support
寻址方式
直接寻址
存存储储区区地地址址指指针针
寄存器间接寻址
A&D AS CS2 FA Systems Support
寻址方式
直接寻址
存储区地址指针
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
A M1.1 AN DB1.DBX12.0 = Q1.2
A&D CS2 FA 崔坚
SIMATIC Technical Consulting 2007 8月
A&D CS2 FA 崔坚
SIMATIC Technical Consulting 2007 8月
Page 8
A&D AS CS2 FA Systems Support
寻址方式
直接寻址
存存储储区区地地址址指指针针
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
32位地址指针使用示例1
Page 3
A&D AS CS2 FA Systems Support
寻址方式
直接寻址
存存储储区区地地址址指指针针
16位地址指针
16位地址指针用于定时器、计数器、程序块(DB、FC、FB)的寻 址,16位指针被看作一个无符号整数(0~65535),它表示定 时器(T)、计数器(C)、数据块(DB、DI)或程序块(FB、FC) 的号,16位指针的格式如下:
OPN DB 1
//打开DB1。
LAR1 P#10.0
//将指针P#10.0 装载到地址寄存器1中。
L DBW [AR1,P#12.0] //将DBW22装载到累加器1中。
LAR1 MD 20
//将存储于MD20中的指针装载到地址寄
存器1中。
L DBW [AR1,P#0.0] //将DBW装载到累加器1中,地址存储于
T MD 24
L 320
//320转换指针为P#40.0并装载到MD28中。
T MD 28
L DBW [MD 20] L DBW [MD 24] +I L DIW [MD 28] -I T DIW 2
//装载DB1.DBW4。 //装载DB1.DBW20。 //相加 //装载DB3.DBW40。 //相减。 //将运算结果传送到DB3.DBW2中。
JCN m2
L MD 4
L P#2.0
/D
+1
T MD 8
m2: NOP 0
A&D CS2 FA 崔坚
SIMATIC Technical Consulting 2007 8月
Page 11
32位地址指针注意事项
A&D AS CS2 FA Systems Support
寻址方式
直接寻址
存存储储区区地地址址指指针针
地址寻址表示格式为:区域标识符[16位地址指针],例如打开一个 DB块表示为:
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
A&D CS2 FA 崔坚
SIMATIC Technical Consulting 2007 8月
Page 5
A&D AS CS2 FA Systems Support
ANY数据类型 指针
FB块形参的 编程
LAR1 : 将ACCU1存储的地址指针写入AR1。 LAR1 <D> : 将指明的地址指针写入AR1,例如LAR1 P#20.0或
LAR1 MD20 LAR1 AR2 : 将AR2的内容写入AR1。 LAR2 : 将ACCU1存储的地址指针写入AR2。 LAR2 <D> : 将指明的地址指针写入AR2,与LAR1 <D>方式相同。 TAR1 : 将AR1存储的地址指针传输给ACCU1。
SIMATIC Technical Consulting 2007 8月
Page 10
32位地址指针使用示例2
A&D AS CS2 FA Systems Support
寻址方式
直接寻址
存存储储区区地地址址指指针针
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
L MD 4
MD20中。
+I
LAR2 P#40.0