1、第一章 西门子PLC简单概述 第二章 使用STEP7创建一个工程(硬件组态) 第三章 西门子编程语言学习 第四章 西门子的程序设计 第五章 利用WinCC flexible软件创建工程系统,西门子PLC300系列培训教程1,主要内容,1.PLC功能与特点,及S7-300硬件介绍 2.组态,I/O分配,IO监控,硬件下载; 3.软件编写,一段小代码(S,R指令作用),一、 PLC的结构和工作过程,PLC的基本结构,PLC的扫描过程,二.手动创建STEP 7项目,1.在Step7中,点击“文件-新建”,弹出”新建项目”对话框,在”名称”中输入项目名称,然后点击”确定”.,2.右键点击”GAGB_1
2、”,在“插入新对象”中选择“SIMATIC 300站点”。,3.双击“硬件”,打开硬件配置画面“HW Config”,4.准备硬件组态,如果上图中没有显示右框的硬件配置内容(即找不到硬件模块),那么可以通过“视图”-目录让它显示。,5.硬件组态,1.先插入导轨,即点击选择“simatic 300”/Rack-300 /Rail,然后按动鼠标到上面红色框图位置,之后松开鼠标,显示(0)UR,表示0号导轨,5.硬件组态,2。在导轨上插入各种S7-300模块,注意一般第1个通道是电源模块,第2通道是CPU的位置,第3个通道是预留的。,5.硬件组态,设置CPU属性,注意1:插入CPU时,一般会弹出一些
3、窗口,譬如设置IP地址等,点击OK即可。,5.硬件组态,注意2:插入输入输出模块时,Step7会产生默认的IO地址,如果要修改IO地址:通过双击该模块,会产生“属性”窗口,在“地址”框中,取消“系统默认”的选择,然后在“开始”位置可以输入自己想要的IO地址。,5.硬件组态(6/6),编译硬件组态(完成后的窗口),系统自动创建程序文件夹,包含一个循环组织块OB1,硬件组态注意事项,1.导轨上UR上第3个模块的位置一般为空。 有扩展导轨时用。,硬件组态注意事项,2.注意购买的硬件版本,最好软件组态与之对应。,硬件组态注意事项,3.如果买了1个模块,但是Step7硬件组态中找不到这个模块,可以通过“
4、选型”的“安装HW更新”,通过网络更新step的硬件组态模块。,硬件的下载,硬件下载步骤1:设置PC与PLC的接口方法(是MPI,DP,网线)。在“选项”的“设置PG/PC接口”,打开”设置PG/PC接口”窗口。,硬件的下载,硬件下载步骤2:硬件的编译及下载。编译是检查硬件配置是否正确;编译正确后才进行下载。,三、程序编写,PLC运行程序规则是:第一次上电启动时,先扫描OB100,然后扫描OB1;之后,仅循环扫描OB1,三.程序编写,第一次双击OB1,打开OB1时,会弹出上图,选择LAD(即梯形图编程),再点击“OK”,之后就可以正常打开了。,8.在OB1中编辑LAD程序(2/2),编写梯形图
5、(LAD)程序,6.编辑符号表,符号表的含义:就是给地址起名字,譬如I2.0齐名叫“I_红灯开关”。 方法:双击“S7程序”/符号,打开符号编辑器,在其中给地址起名字即可。注意,最后点击保存按钮。,7.程序编辑窗口,3.4 下载和调试程序,为了测试前面我们所完成的PLC设计项目,必须将程序和模块信息下载到PLC的CPU模块。要实现编程设备与PLC之间的数据传送,首先应正确安装PLC硬件模块,然后用编程电缆(如USB-MPI电缆、PROFIBUS总线电缆)将PLC与PG/PC连接起 来,并打开PS307电源开关。 下载程序及模块信息,1.下载程序及模块信息,具体步骤如下:执行菜单命令【PLC】【
6、Download】,或单击鼠标右键执行快捷菜单命令【PLC】【Download】将整个S7-300站下载到PLC。,第3章 S7-300编程语言学习,第4章 S7-300编程语言学习,4.1 STEP 7编程语言 4.2 数据类型 4.3 S7-300指令基础 4.4 位逻辑指令 4.5 定时器与计数器指令 4.6 数字指令 4.7 控制指令,4.1 STEP 7编程语言,STEP 7是S7-300/400系列PLC应用设计软件包,所支持的PLC编程语言非常丰富。该软件的标准版支持STL(语句表)、LAD(梯形图)及FBD(功能块图)3种基本编程语言,并且在STEP 7中可以相互转换。专业版附
7、加对GRAPH(顺序功能图)、SCL(结构化控制语言)、HiGraph(图形编程语言)、CFC(连续功能图)等编程语言的支持。不同的编程语言可供 不同知识背景的人员采用。,STL(语句表),STL(语句表)是一种类似于计算机汇编语言的一种文本编程语言,由多条语句组成一个程序段。语句表可供习惯汇编语言的用户使用,在运行时间和要求的存储空间方面最优。在设计通信、数学运算等高级应用程序时建议使用语句表。,LAD(梯形图),LAD(梯形图)是一种图形语言,比较形象直观,容易掌握,用得最多,堪称用户第一编程语言。梯形图与继电器控制电路图的表达方式极为相似,适合于熟悉继电器控制电路的用户使用,特别适用于数
8、字量逻辑控制。,FBD(功能块图),FBD(功能块图)使用类似于布尔代数的图形逻辑符号来表示控制逻辑,一些复杂的功能用指令框表示。FBD比较适合于有数字电路基础的编程人员使用。,GRAPH(顺序控制),GRAPH类似于解决问题的流程图,适用于顺序控制的编程。利用S7-GRAPH编程语言,可以清楚快速地组织和编写S7 PLC系统的顺序控制程序。它根据功能将控制任务分解为若干步,其顺序用图形方式显示出来并且可形成图形和文本方式的 文件。,HiGraph(图形编程语言),S7-Higraph允许用状态图描述生产过程,将自动控制下的机器或系统分成若干个功能单元,并为每个单元生成状态图,然后利用信息通讯
9、将功能单元组合在一起形成完整的系统。,SCL(结构化控制语言),S7-SCL(Structured Control Language:结构控制语言)是一种类似于PASCAL的高级文本编辑语言,用于S7-300/400和C7的编程,可以简化数学计算、数据管理和组织工作。S7-SCL具有PLC公开的基本标准认证,符合IEC 1131-3 (结构化文 本)标准。,4.2 数据类型,数据类型决定数据的属性,在STEP 7中,数据类 型分为三大类: 4.2.1 基本数据类型 4.2.2 复杂数据类型 4.2.3 参数类型,4.2.1 基本数据类型,4.2.2 复杂数据类型,数组(ARRAY) 结构(ST
10、RUCT) 字符串(STRING) 日期和时间(DATE_AND_TIME) 用户定义的数据类型(UDT) 功能块类型(FB、SFB),1.数组(ARRAY),数组是由一组同一类型的数据组合在一起而形成的复杂数据类型。数组的维数最大可以到6维;数组中的元素可以是基本数据类型或者复杂数据类型中的任一数据类型(Array类型除外,即数组类型不可以嵌套);数组中每一维的下标取值范围是-3276832767,要求下标的下限 必须小于下标的上限。,2.结构(STRUCT) 结构是由一组不同类型(结构的元素可以是基本的或复杂的数据类型)的数据组合在一起而形成的复杂数据类型。结构通常用来定义一组相关的数据,
11、例如电机的一组 数据可以按如下方式定义:,3.字符串(STRING)字符串是最多有254个字符(CHAR)的一维数组,最大长度为256个字节(其中前两个字节用来存储字符串的长度信息)。字符串常量用单引号括起来,例如:,4.日期和时间(DATE_AND_TIME)用于存储年、月、日、时、分、秒、毫秒和星期,占用8个字节,用BCD格式保存。星期天的代码为1,16的 代码为27。例如:,5.用户定义的数据类型(UDT)用户定义数据类型表示自定义的结构,存放在UDT块中(UDT1UDT65535),在另一个数据类型中作为一个数据类型“模板”。当输入数据块时,如果需要输入几个相同的结构,利用UDT可以节
12、省输入时间。,6.功能块类型(FB、SFB)这种数据类型仅可以在FB的静态变量区定义,用于实现多背景DB。,4.2.3 参数数据类型,参数类型是一种用于逻辑块(FB、FC)之间传递参数 的数据类型,主要有以下几种:(1)TIMER(定时器)和COUNTER(计数器)。(2)BLOCK(块):指定一个块用作输入和输出,实 参应为同类型的块。(3)POINTER(指针):6字节指针类型,用来传递DB 的块号和数据地址。(3)ANY:10字节指针类型,用来传递DB块号、数据 地址、数据数量以及数据类型。,4.3 S7-300指令基础,指令是程序的最小独立单位,用户程序是由若干条顺序排列的指令构成。指
13、令一般由操作码和操作数组成,其中的操作码代表指令所要完成的具体操作(功能),操作数则是该指令操作或运算的对象。 4.3.1 PLC用户存储区的分类及功能 4.3.2 指令操作数 4.3.3 寻址方式 4.3.4 状态字,4.3.1 PLC用户存储区的分类及功能(1/2),4.3.1 PLC用户存储区的分类及功能(2/2),4.3.2 指令操作数,指令操作数(又称编程元件)一般在用户存储区中,操作数由操作标识符和参数组成。操作标识符由主标识符和辅助标识符组成,主标识符用来指定操作数所使用的存储区类型,辅助标识符则用来指定操作数的单位(如:位、字节、字、双字等)。主标识符有:I(输入过程映像寄存器
14、、Q(输出过程映像寄存器)、M(位存储器)、PI(外部输入寄存器)、PQ(外部输出寄存器)、T(定时器)、C(计数器)、DB(数据块寄存器)和L(本地数据寄存器);辅助标识符有:X(位)、B(字节)、W(字或2B)、D(2DW或4B)。,4.3.3 寻址方式,所谓寻址方式就是指令执行时获取操作数的方式,可以直接或间接方式给出操作数。S7-300有4种寻址方式: 立即寻址 存储器直接寻址 存储器间接寻址 寄存器间接寻址,1.立即寻址,立即寻址是对常数或常量的寻址方式,其特点是操作数直接表示在指令中,或以惟一形式隐含在指令中。下面各条指令操作数均采用了立即寻址方式,其中“/”后面的内容为指令的注释
15、部分,对指令没有任何影响。,2.存储器直接寻址,存储器直接寻址,简称直接寻址。该寻址方式在指令中直接给出操作数的存储单元地址。存储单元地址可用符号地址(如SB1、KM等)或绝对地址(如I0.0、Q4.1等)。下面各 条指令操作数均采用了直接寻址方式。,3.存储器间接寻址(1/3),存储器间接寻址,简称间接寻址。该寻址方式在指令中以存储器的形式给出操作数所在存储器单元的地址,也就是说该存储器的内容是操作数所在存储器单元的地址。该存储器一般称为地址指针,在指令中需写在方括号“”内。地址指针可以是字或双字,对于地址范围小于65535的存储器可以 用字指针;对于其他存储器则要使用双字指针。,4.存储器
16、间接寻址(2/3),【例4-3-1】 存储器间接寻址的单字格式的指针寻址。,4.存储器间接寻址(3/3),存储器间接寻址的双字指针的格式如图所示。,【例4-3-2】 存储器间接寻址的双字格式的指针寻址。,5.寄存器间接寻址(1/4),寄存器间接寻址,简称寄存器寻址。该寻址方式在指令中通过地址寄存器和偏移量间接获取操作数,其中的地址寄存器及偏移量必须写在方括号“”内。在S7-300中有两个地址寄存器AR1和AR2,用地址寄存器的内容加上偏移量形成地址指针,并指向操作数所在的存储器单元。地址寄存器的地址指针有两种格式,其长度均为双字,指针格式如图所示。,5.寄存器间接寻址(2/4),第一种地址指针
17、格式适用于在确定的存储区内寻址,即 区内寄存器间接寻址。【例4-3-3】 区内寄存器间接寻址。,5.寄存器间接寻址(3/4),第二种地址指针格式适用于区域间寄存器间接寻址。【例4-3-4】 区域间寄存器间接寻址。,5.寄存器间接寻址(4/4),第一种地址指针格式包括被寻址数据所在存储单元地址的字节编号和位编号,至于对哪个存储区寻址,则必须在指令中明确给出。这种格式适用于在确定的存储区内寻址,即 区内寄存器间接寻址。第二种地址指针格式包含了数据所在存储区的说明位(存储区域标识位),可通过改变标识位实现跨区域寻址,区域标识由位2624确定。这种指针格式适用于区域间寄存 器间接寻址。,4.4 位逻辑
18、指令,位逻辑指令处理的对象为二进制位信号。位逻辑指令扫描信号状态“1”和“0”位,并根据布尔逻辑对它们进行组合,所产生的结果(“1”或“0”)称为逻辑运算结果,存储在状态字的“RLO”中。 4.4.1 触点与线圈 4.4.2 基本逻辑指令 4.4.3 置位和复位指令 4.4.4 RS和SR触发器 4.4.5 跳变沿检测指令,4.4.1 触点与线圈,在LAD(梯形图)程序中,通常使用类似继电器控制电路中的触点符号及线圈符号来表示PLC的位元件,被扫描的操作数(用绝对地址或符号地址表示)则标注在触点符号的上 方,如图所示。,1.常开触点,对于常开触点(动合触点),则对“1”扫描相应操作数。在PLC
19、中规定:若操作数是“1”则常开触点“动作”,即认为是“闭合”的;若操作数是“0”,则常开触点“复位”,即触点仍处 于打开的状态。常开触点所使用的操作数是:I、Q、M、L、D、T、C。,2.常闭触点,常闭触点(动断触点)则对“0”扫描相应操作数。在PLC中规定:若操作数是“1”则常闭触点“动作”,即触点“断开”;若操作数是“0”,则常闭触点“复位”,即触点仍保持闭合。常闭触点所使用的操作数是:I、Q、M、L、D、T、C。,3.输出线圈(赋值指令),输出线圈与继电器控制电路中的线圈一样,如果有电流(信号流)流过线圈(RLO=“1”),则被驱动的操作数置“1”;如果没有电流流过线圈(RLO=“0”)
20、,则被驱动的操作数复位(置“0”)。输出线圈只能出现在梯形图逻辑串的最右 边。输出线圈等同于STL程序中的赋值指令(用等于号“=”表 示),所使用的操作数可以是:Q、M、L、D。,4.中间输出,在梯形图设计时,如果一个逻辑串很长不便于编辑时,可以将逻辑串分成几个段,前一段的逻辑运算结果(RLO)可作为中间输出,存储在位存储器(I、Q、M、L或D)中,该存储位可以当作一个触点出现在其他逻辑串中。中间输出只能放在梯形图逻辑串的中间,而不能出现在最左 端或最右端。,与下面程序等效,4.4.2 基本逻辑指令,基本逻辑指令包括: “与”指令 “与非”指令 “或”指令 “或非”指令 “异或”指令 “异或非
21、”指令 逻辑块的操作 信号流取反指令,1.逻辑“与” 指令,逻辑“与” 指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻辑 “与” 运算。,2.逻辑 “与非”指令,逻辑 “与非”指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻 辑 “与非”运算。,3.逻辑 “或”指令,逻辑 “或”指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻 辑 “或”运算。,4.逻辑 “或非”指令,逻辑 “或非”指令使用的操作数可以是:I、Q、M、L
22、、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻 辑 “或非”运算。,5.逻辑 “异或”指令,6.逻辑 “异或非”指令,7.逻辑块的操作,8.信号流取反指令,信号流取反指令的作用就是对逻辑串的RLO值进行取反。指令格式及示例见表4-13。当输入位I0.0和I0.1同时动作时,Q4.0信号状态为“0”;否则,Q4.0信号状态为“1”。,4.4.3 置位和复位指令,置位(S)和复位(R)指令根据RLO的值来决定操作数的信号状态是否改变,对于置位指令,一旦RLO为“1”,则操作数的状态置“1”,即使RLO又变为“0”,输出仍保持为“1”;若RLO为“0”,则操作数的信号状态保持不
23、变。对于复位操作,一旦RLO为“1”,则操作数的状态置“0”,即使RLO又变为“0”,输出仍保持为“0”;若RLO为“0”,则操作数的信号状态保持不变。这一特性又被称为静态的置位和复位,相应地,赋值指 令被称为动态赋值。,4.4.4 RS和SR触发器,RS触发器为“置位优先”型触发器(当R和S驱动信号同 时为“1”时,触发器最终为置位状态); SR触发器为“复位优先”型触发器(当R和S驱动信号同时 为“1”时,触发器最终为复位状态)。RS触发器和SR触发器的“位地址”、置位(S)、复(S) 及输出(Q)所使用的操作数可以是:I、Q、M、L、D。,1.RS触发器,2.SR触发器,3.RS触发器和
24、SR触发器的工作时序,示例梯形图程序,工作时序,4.4.5 跳变沿检测指令,STEP 7中有2类跳变沿检测指令,一种是对RLO的跳变沿检测的指令,另一种是对触点的跳变沿直接检测的梯形图方块指 令。 RLO上升沿检测指令 RLO下降沿检测指令 触点信号上升沿检测指令 触点信号下降沿检测指令 【例4-4-2】 边沿检测指令的应用,1.RLO上升沿检测指令,2.RLO下降沿检测指令,3.RLO边沿检测指令的工作时序,工作时序,示例程序,4.触点信号上升沿检测指令,5.触点信号下降沿检测指令,6.触点信号边沿检测指令的工作时序,工作时序,示例程序,4.5 定时器与计数器指令,4.5.1 定时器指令 4
25、.5.2 计数器指令 4.5.3 CPU时钟存储器,4.5.1 定时器指令,S_PULSE(脉冲S5定时器) S_PEXT(扩展脉冲S5定时器) S_ODT(接通延时S5定时器) S_ODTS(保持型接通延时S5定时器) S_OFFDT(断电延时S5定时器),1. S_PULSE(脉冲S5定时器)(1/3),脉冲定时器的梯形图及功能块图指令,1. S_PULSE(脉冲S5定时器)(2/3),脉冲定时器的线圈指令,1. S_PULSE(脉冲S5定时器)(3/3),工作时序,示例程序,【例4-5-1】 脉冲定时器应用:优先抢答器设计。,【例4-5-1】 设计说明:参赛者要抢答主持人所提问题时,需抢
26、先按下桌上的按钮;指示灯亮后需待主持人按下“复位”键R后才熄灯;对初中班学生照顾,只要按下SB11和SB12中任一个按钮灯HL1都亮;对高三班学生限制,只有SB31和SB32都按下时灯HL3才亮;若在主持人按下“开始”按钮S后10s内有抢答按钮压下,则电磁铁YC得电,使彩球摇动,以示竞赛者得到一次幸运的机会;如果定时到仍未有抢答,则禁止继续 抢答。,端子接线图,【例4-5-1】,I/O地址分配表,【例4-5-1】,控制程序:建立允许抢答和禁止抢答标志,【例4-5-1】,设置抢答定时器,【例4-5-1】,初中组抢答控制,【例4-5-1】,高一组抢答控制,高三组抢答控制,2. S_PEXT(扩展脉
27、冲S5定时器)(1/3),扩据脉冲S5定时器LAD及FBD指令,2. S_PEXT(扩展脉冲S5定时器)(2/3),扩据脉冲S5定时器线圈指令,2. S_PEXT(扩展脉冲S5定时器)(3/3),示例程序,工作波形,【例4-5-2】 扩展脉冲定时器应用电动机延时自动关闭控制。控制要求:按动起动按钮S1(I0.0),电动机M(Q4.0)立即起动,延时5分钟以后自动关闭。起动后按动停止按钮 S2(I0.1),电动机立即停机。,【例4-5-2】,控制程序(LAD),控制程序(STL),3. S_ODT(接通延时S5定时器)(1/3),接通延时S5定时器LAD及FBD指令,3. S_ODT(接通延时S
28、5定时器)(2/3),接通延时S5定时器线圈指令,3. S_ODT(接通延时S5定时器)(3/3),示例程序,工作波形,【例4-5-3】 接通延时定时器和脉冲定时器应用用定时器构成一脉冲发生器,当满足一定条件时,能够输出一定频率和一定占空比的脉冲信号。工艺要求:当按钮S1(I0.0)按下时,输出指示灯H1(Q4.0)以灭2s,亮1s规律交替进行。,【例4-5-3】,控制程序 (使用接通延时定时器),控制程序 (使用脉冲定时器),4. S_ODTS(保持型接通延时S5定时器)(1/3),保持型接通延时S5定时器LAD及FBD指令,4. S_ODTS(保持型接通延时S5定时器)(2/3),保持型接
29、通延时S5定时器线圈指令,4. S_ODTS(保持型接通延时S5定时器)(3/3),示例程序,工作波形,5. S_OFFDT(断电延时S5定时器)(1/3),断电延时S5定时器LAD及FBD指令,5. S_OFFDT(断电延时S5定时器)(2/3),断电延时S5定时器线圈指令,5. S_OFFDT(断电延时S5定时器)(3/3),示例程序,工作波形,4.5.2 计数器指令,S7-300的计数器都是16位的,因此每个计数器占用该区域2个字节空间,用来存储计数值。不同的CPU模板,用于计数器的存储区域也不同,最多允许使用64512个计数器。计数器的地址编号:C0C511。 S_CUD(加/减计数器
30、) S_CU(加计数器) S_CD(减计数器) 计数器线圈指令,1. S_CUD(加/减计数器)块图指令,2. S_CU(加计数器)块图指令,3. S_CD(减计数器)块图指令,4. 计数器的线圈指令,除了前面介绍的块图形式的计数器指令以外,S7-300系统还为用户准备了LAD环境下的线圈形式的计数器。这些指令有计数器初值预置指令SC、加计数器指令CU和减计数器指令CD。,加计数器线圈指令应用示例,初值预置SC指令若与CU指令配合可实现S_CU指令的功能。,减计数器线圈指令应用示例,SC指令若与CD指令配合可实现S_CD指令的功能。,加/减计数器线圈指令应用示例,SC指令若与CU和CD配合可实
31、现S_CUD的功能。,4.5.3 访问CPU的时钟存储器,要使用该功能,在硬件配置时需要设置CPU的属性,其中有一个选项为Clock Memory,选中选择框就可激活该功能。,设置CPU的时钟存储器,在Memory Byte区域输入想为该项功能设置的MB的地址,如需要使用MB10,则直接输入10。Clock Memory的功能是对所定义的MB的各个位周期性地改变其二进制的值(占空比为1:1)。Clock Memory的各位的周期及频率见 表。,【例4-5-5】 时钟存储器与计数器的应用。当定时器不够用时,可以将计数器扩展为定时器。图中分别给出了用减计数器扩展定时器的控制程序,程序中使用了CPU
32、的时钟存储器,设置MB10为时钟存储器,由表4-39可知M10.0的变化周期为0.1s。,4.6 数字指令,4.6.1 装入与传送指令 4.6.2 转换指令 4.6.3 比较指令 4.6.4 算数运算指令 4.6.5 字逻辑运算指令 4.6.6 移位指令 4.6.7 数字指令综合应用,4.6.1 装入和传送指令,装入指令(L)和传送指令(T),可以对输入或输出模块与存储区之间的信息交换进行编程。 对累加器1的装入指令 对累加器1的传送指令 状态字与累加器1之间的装入和传送指令 与地址寄存器有关的装入和传送指令 LC(定时器/计数器装载指令) MOVE指令,1. 对累加器1的装入指令,2. 对累
33、加器1的传送指令,T指令可以将累加器1的内容复制到被寻址的操作数,所复制的字节数取决于目标地址的类型(字节、字或 双字),指令格式如下: T 操作数 其中的操作数可以为直接I/O区(存储类型为PQ)、数据存储区或过程映像输出表的相应地址(存储类型为Q)。,3. 状态字与累加器1之间的装入和传送指令,L STW(将状态字装入累加器1)将状态字装入累加器1中,指令的执行与状态位无关,而且对状态字没有任何影响。指令格式如下: L STW T STW(将累加器1的内容传送到状态字)使用T STW指令可以将累加器1的位08传送到状态字的相应位,指令的执行与状态位无关,指令格式如下: T STW,4.与地
34、址寄存器有关的装入和传送指令(1/4),LAR1(将操作数的内容装入地址寄存器AR1),4.与地址寄存器有关的装入和传送指令(2/4),LAR2(将操作数的内容装入地址寄存器2)使用LAR2指令可以将操作数的内容(32位指针)装入地址寄存器AR2,指令格式同LAR1,其中的操作数可以是累加器1、指针型常数(P#)、存储双字(MD)、本地数据双字(LD)、数据双字(DBD)或背景数据双字(DID),但 不能用AR1。,4.与地址寄存器有关的装入和传送指令(3/4),TAR1(将地址寄存器1的内容传送到操作数),4.与地址寄存器有关的装入和传送指令(4/4),TAR2(将地址寄存器2的内容传送到操
35、作数)使用TAR2指令可以将地址寄存器AR1的内容(32位指针)传送给被寻址的操作数,指令格式同TAR1。其中的操作数可以是累加器1、存储双字(MD)、本地数据双字(LD)、数据双字(DBD)、背景数据双字(DID),但不 能用AR1。 CAR(交换地址寄存器1和地址寄存器2的内容)使用CAR指令可以交换地址寄存器AR1和地址寄存器AR2的内容,指令不需要指定操作数。指令的执行与状态位无 关,而且对状态字没有任何影响。,5. LC(定时器/计数器装载指令,使用LC指令可以在累加器1的内容保存到累加器2中之后,将指定定时器字中当前时间值和时基以BCD码(0999)格式装入到累加器1中,或将指定计
36、数器的当前计数值以BCD码(0999)格式装入到累加器1中。指令格式如下: LC ,6. MOVE指令,MOVE指令为功能框形式的传送指令,能够复制字节、字或双字数据对象。应用中IN和OUT端操作数可以是常数、I、Q、M、D、L等类型,但必须在宽度上匹配。,4.6.2 转换指令,转换指令是将累加器1中的数据进行数据类型转换,转换结果仍放在累加器1中。在STEP 7中,可以实现BCD码与整数、整数与长整数、长整数与实数、整数的反码、整 数的补码、实数求反等数据转换操作。 BCD码和整数到其他类型转换指令 整数和实数的码型变换指令 实数取整指令 累加器1调整指令,1. BCD码和整数到其他类型转换
37、指令(1/3),STL形式的指令(1),1. BCD码和整数到其他类型转换指令(2/3),STL形式的指令(2),1. BCD码和整数到其他类型转换指令(3/3),LAD和FBD形式的指令,2.整数和实数的码型变换指令(1/2),STL形式的指令,2.整数和实数的码型变换指令(2/2),LAD和FBD形式的指令,3.实数取整指令(1/2),STL形式的指令,3.实数取整指令(2/2),LAD和FBD形式的指令,4.累加器1调整指令,4.6.3 比较指令,比较指令可完成整数、长整数或32位浮点数(实数)的相等、不等、大于、小于、大于或等于、小于或等于等 比较 。 整数比较指令 长整数比较指令 实
38、数比较指令,1.整数比较指令,1.整数比较指令(示例),2.长整数比较指令,2.长整数比较指令(示例),3.实数比较指令,3.实数比较指令(示例),4.6.4 算数运算指令,算术运算指令可完成整数、长整数及实数的加、减、乘、除、求余、求绝对值等基本算数运算;以及32位浮点数的平方、平方根、自然对数、基于e的指数运算及三角 函数等扩展算数运算。 基本算术运算指令 扩展算术运算指令,1. 基本算数运算指令(整数运算),1. 基本算数运算指令(长整数运算),1. 基本算数运算指令(实数运算),【例4-6-1】 16位整数的算术运算指令应用。,【例4-6-1】 16位整数的算术运算指令应用。,【例4-
39、6-2】求输入双字ID10的内容与常数32相除的余数,结果保存到MD20中。,2. 扩展算数运算指令,4.6.5 字逻辑运算指令,字逻辑运算指令可对两个16位(WORD)或32位(DWORD)的二进制数据,逐位进行逻辑与、逻辑或、逻 辑异或运算。对于STL形式的字逻辑运算指令,可对累加器1和累加器2中的字或双字数据进行逻辑运算,结果保存在累加器1中,若结果不为0,则对状态标志位CC1置“1”,否则对CC1置“0”。对于LAD和FBD形式的字逻辑运算指令,由参数IN1和IN2提供参与运算的两个数据,运算结果保存在由OUT指定的存储区中。,字逻辑运算指令格式,4.6.6 移位指令,移位指令有2种类
40、型:基本移位指令可对无符号整数、有符号长整数、字或双字数据进行移位操作;循环移位指令可对双字数据进行循环移位和累加器1带CC1的循环 移位操作。 有符号右移指令 字移位指令 双字移位指令 双字循环移位指令 带累加器循环移位指令,1.有符号右移指令格式,2.字移位指令格式,3.双字移位指令格式,4.双字循环移位指令格式,5.带累加器循环移位指令格式,4.7 控制指令,控制指令可控制程序的执行顺序,使得CPU能根据不同的情况执行不同的程序。控制指令有3类: 4.7.1 逻辑控制指令 4.7.2 程序控制指令 4.7.3 主控继电器指令,4.7.1 逻辑控制指令,逻辑控制指令是指逻辑块内的跳转和循环
41、指令,这些指令可以中断原有的线性程序扫描,并跳转到目标地址处重新执行线性程序扫描。目标地址由跳转指令后面的标号指定,该地址标号指出程序要跳往何处,可向前跳转,也可以向后跳转,最大跳转距离为-32768或32767字。 无条件跳转指令 多分支跳转指令 条件跳转指令 循环指令,1. 无条件跳转指令,无条件跳转指令JU执行时,将直接中断当前的线性程序扫描,并跳转到由指令后面的标号所指定的目标地址处重新执行线性程序扫描。,【例4-7-1】 无条件跳转指令的使用。当程序执行到无条件跳转指令时,将直接跳转到L1处执行。,2. 多分支跳转指令,多分支跳转指令JL的指令格式如下: JL 如果累加器1低字中低字
42、节的内容小于JL指令和由JL指令所指定的标号之间的JU指令的数量,JL指令就会跳转到其中一条JU处执行,并由JU指令进一步跳转到目标地址;如果累加器1低字中低字节的内容为0,则直接执行JL指令下面的第一条JU指令;如果累加器1低字中低字节的内容为1,则直接执行JL指令下面的第二条JU指令;如果跳转的目的地的数量太大,则JL指令跳转到目的地列表中 最后一个JU指令之后的第一个指令。,【例4-7-2】 多分支跳转指令的使用。,3. 条件跳转指令,【例4-7-3】 条件跳转指令的使用。 程序示例如图4-44所示。当I0.0与I0.1同时为“1”时,则跳转到L2处执行;否则,到L1处执行(顺序执行)。
43、,4. 循环指令,循环指令的格式如下: LOOP 使用循环指令(LOOP)可以多次重复执行特定的程序段,由累加器1确定重复执行的次数,即以累加器1的低字为循环计数器。LOOP指令执行时,将累加器1低字中的值减1,如果不为0,则继续循环过程,否则执行LOOP指令后面的指令。循环体是指循环标号和LOOP指令间的程序段。,【例4-7-4】 循环指令的使用。利用循环指令可以完成有规律的重复计算过程,下面是求阶乘“8!”的示例程序:,4.7.2 程序控制指令,程序控制指令是指功能块(FB、FC、SFB、SFC)调用指令和逻辑块(OB,FB,FC)结束指令。调用块或结束块可以是有条件的或是无条件的。 基本
44、控制指令 子程序调用指令CALL指令可以调用用户编写的功能块或操作系统提供的功能块,CALL指令的操作数是功能块类型及其编号,当调用的功能块是FB块时还要提供相应的背景数据块DB。使用CALL指令可以为被调用功能块中的形参赋以实际参数,调用时应保证实参与形参的数据类型一致。,1. 基本控制指令,2. 子程序调用指令,4.7.3 主控继电器指令,主控继电器(MCR)是一种继电器梯形图逻辑的主开关,用于控制电流(能流)的通断。,第5章 S7程序结构与程序设计,5.1 S7 CPU中的程序 5.2 数据块中的数据存储 5.3 逻辑块(FC和FB)的结构及编程 5.4 编辑并调用无参功能(FC)分部程
45、序设计 5.5 编辑并调用有参功能(FC)结构化程序设计 5.6 编辑并调用无静态参数的功能块(FB) 5.7 编辑并调用有静态参数的功能块(FB) 5.8 使用多重背景结构化程序设计,5.1 S7 CPU中的程序,5.1.1 用户程序中的块结构 5.1.2 用户程序结构 5.1.3 I/O过程映像 5.1.4 程序循环执行,5.1.1 用户程序中的块结构,5.1.2 用户程序结构,线性程序(线性编程) 分部式程序(分部编程、分块编程) 结构化程序(结构化编程或模块化编程),1. 线性程序(线性编程),所谓线性程序结构,就是将整个用户程序连续放置在一个循环程序块(OB1)中,块中的程序按顺序执
46、行,CPU通过反复执行OB1来实现自动化控制任务。这种结构和PLC所代替的硬接线继电器控制类似,CPU逐条地处理指令。事实上所有的程序都可以用线性结构实现,不过,线性结构 一般适用于相对简单的程序编写。,2.分部式程序(分部编程、分块编程),所谓分部程序,就是将整个程序按任务分成若干个部分,并分别放置在不同的功能(FC)、功能块(FB)及组织块中,在一个块中可以进一步分解成段。在组织块OB1中 包含按顺序调用其他块的指令,并控制程序执行。在分部程序中,既无数据交换,也不存在重复利用的程序代码。功能(FC)和功能块(FB)不传递也不接收参数,分部程序结构的编程效率比线性程序有所提高,程序测试也较
47、方便,对程序员的要求也不太高。对不太复杂的 控制程序可考虑采用这种程序结构。,3. 结构化程序(结构化编程或模块化编程),所谓结构化程序,就是处理复杂自动化控制任务的过程中,为了使任务更易于控制,常把过程要求类似或相关的功能进行分类,分割为可用于几个任务的通用解决方案的小任务,这些小任务以相应的程序段表示,称为块(FC或FB)。OB1通过调用这些程序块来完成整个自动化控制任 务。结构化程序的特点是每个块(FC或FB)在OB1中可能会被多次调用,以完成具有相同过程工艺要求的不同控制对象。这种结构可简化程序设计过程、减小代码长度、提高 编程效率,比较适合于较复杂自动化控制任务的设计。,5.1.3
48、I/O过程映像,5.1.4 程序循环执行,5.2 数据块中的数据存储,5.2.1 数据存储区 5.2.2 数据块 5.2.3 数据块的数据结构 5.2.4 建立数据块 5.2.5 访问数据块,5.2.1 数据存储区,数据以用户程序变量的形式存储,且具有唯一性。数据可以存储在输入过程映像存储器(PII)、输出过程映像存储器(PIQ)、位存储器(M)、局部数据堆栈(L堆栈)及数据块(DB)中。可以采用基本数据类型、复杂数据类 型或参数类型。根据访问方式的不同,这些数据可以在全局符号表或共享数据块中声明,称为全局变量;也可以在OB、FC和FB的变量声明表中声明,称为局部变量。当块被执行时,变量将固定
49、地存储在过程映像区(PII或PIQ)、位存储器区 (M)、数据块(DB)或局部堆栈(L)中。,5.2.2 数据块,数据块定义在S7 CPU的存储器中,用户可在存储器中建立一个或多个数据块。每个数据块可大可小,但CPU对数据块数量及数据总量有限制。数据块(DB)可用来存储用户程序中逻辑块的变量数据(如:数值)。与临时数据不同,当逻辑块执行结束或 数据块关闭时,数据块中的数据保持不变。用户程序可以位、字节、字或双字操作访问数据块中 的数据,可以使用符号或绝对地址。,1.数据块的分类,共享数据块又称全局数据块。用于存储全局数据,所有逻辑块(OB、FC、FB)都可以访问共享数据块存储的 信。背景数据块用作“私有存储器区”,即用作功能块(FB)的“存储器”。FB的参数和静态变量安排在它的背景数据块中。背景数据块不是由用户编辑的,而是由编辑器 生成的。用户定义数据块(DB of Type)是以UDT为模板所生成的数据块。创建用户定义数据块(DB of Type)之前,必须先创建一个用户定义数据类型,如UDT1,并在 LAD/STL/FBD S7程序编辑器内定义。,