第6章S7-300400的用户程序结构
S7-300_400编程功能块图(FBD)参考手册
s附录 SIMATIC用于S7-300和S7-400的 功能块图(FBD)编程参考手册2007年8月版 A5E01112994-01版权所有 © Siemens AG 2004 保留所有权利未经明确的书面许可,不得复制、传播或使用本手册或所含内容。
违者应对造成的损失承担责任。
保留所有权利,包括实用新型或设计的专利许可权及注册权。
Siemens AGBereich Automation and DrivesGeschaeftsgebiet Industrial Automation SystemsPostfach 4848, D- 90327 Nuernberg 免责声明我们已检查过本手册中的内容与所描述的硬件和软件相符。
由于差错在所难免,我们不能保证完全一致。
我们会定期审查本手册中的内容,并在后续版本中进行必要的更正。
欢迎提出改进意见。
©Siemens 2004技术数据如有改动,恕不另行通知。
安全指南本手册包括了保证人身安全与保护本产品及连接的设备所应遵守的注意事项。
这些注意事项在手册中均以下列符号加以突出,并根据危险等级标明如下:危险表示如果不采取适当的预防措施,将导致死亡、严重的人身伤害或财产损失。
警告表示如果不采取适当的预防措施,可能导致死亡、严重的人身伤害或财产损失。
当心表示如果不采取适当的预防措施,可能导致轻微的人身伤害。
当心表示如果不采取适当的预防措施,可能导致财产损失。
须知提醒您注意有关产品、产品使用的特别重要的信息,或者是文档的特定部分。
合格人员只有合格人员才允许安装和操作该设备。
合格人员是指被授权按照既定安全惯例和标准,对线路、设备和系统进行调试、接地和标记的人员。
正确使用请注意如下事项:警告该设备及其部件只能用于产品目录或技术说明书中所描述的范畴,并且只能与由西门子公司认可或推荐的第三方厂商提供的设备或部件一起使用。
只有正确地运输、保管、设置和安装本产品,并且按照推荐的方式操作和维护,产品才能正常、安全地运行。
S7-300、400硬件组成与组态方法
部件功能
导轨... 是S7-300的机架
电源(PS)...将电网电压(120/230 V) 变换为S7-300 所需的24 V DC 工作电压
中央处理单元(CPU)... 执行用户程序
附件:存储器模块,后备电池
接口模块
(IM)
...连接两个机架的总线
信号模块(SM)(数字量/模拟量)... 把不同的过程信号与S7-300相匹配附件:总线连接器,前连接器
功能模块(FM)... 完成定位、闭环控制等功能
通讯处理器(CP)... 连接可编程控制器
附件:电缆、软件、接口模块
安装规范
对于水平安装,CPU和电源必须安装在左面。
对于垂直安装,CPU 和电源必须安装在底部
必须保证下面的最小间距:
机架左右为20 mm
单层组态安装时,上下为40 mm
两层组态安装时,上下至少为80 mm
接口模块安装在CPU的右面
一个机架上最多插八个I/O 模块(信号模块、功能模块、通讯处理器) 多层组态只适用于CPU 314/315/316/317/318
保证机架与安装部分的连接电阻很小(例如通过垫圈来连接)
模块的前面板(LED指示灯及开关)
)。
PLC读书报告——S7-300和S7-400 PLC系统配置与编程
S7-300和S7-400 PLC系统配置与编程摘要:可编程控制器(Programmable Logical Controller)是一种数字操作运算的电子系统,专为在工业环境应用下而设计,随着微电子技术和计算机的迅猛发展,其控制功能不断增强,可编程程序控制器还可以进行算术运算,模拟量控制、顺序控制、定时、计数等,并通过数字,模拟的输入、输出控制各种类型的自动化生产过程。
SIMATIC S7系列PLC是德国西门子公司于1995年陆续推出的性能价格比较高的PLC系统,下面我将向大家介绍西门子公司的SIMATIC S7-300和S7-400两个系列的PLC系统配置与编程。
关键词:S7-300PLC;S7-400PLC;系统配置;系统编程0 引言可编程控制器是把自动化技术、计算机技术,通信技术融为一体的新型工业自动控制装置,凭借可靠性高(平均无故障时间3--5万小时)、编程简单、通用性强、体积小、结构紧凑、安装、维护方便等优点,在国内外已广泛应用于机械、冶金、石油、化工、轻工、纺织、电力、电子、食品、交通等行业。
经验表明,80%以上的工业控制可以使用PLC来完成,PLC已近在工业自动化中发挥着举足轻重的作用。
1 S7-300 PLC和S7-400 PLC的系统配置1.1 S7-300 PLC的基本组成S7-300是模块式的PLC,它的组成部件主要有以下几个部分:1. 中央处理单元(CPU)各种CPU单元有不同的性能,有的集成有数字量和模拟量输入/输出点,而有的集成有PROFIBUS-DP等通信接口。
CPU面板上有状态故障显示灯、模式开关、24 V电源输入端子、电池盒与存储器模块盒(有的CPU没有)。
2. 负载电源模块(PS)负载电源模块用于将AC 220 V电源转换为DC 24 V电源,提供给CPU和I/O模块使用。
额定输出电流有2 A、5 A和10 A三种。
3. 信号模块(SM)数字量输入/输出模块和模拟量输入/输出模块的总称,它们使不同的过程信号电压或电流与PLC内部的信号电平匹配。
西门子S7-300400编程技术及工程应用PLC课件6_结构化编程
输出: 静态变量:
FBl功能块的程序设计
汽油机数据块DB1的内容
3、风扇控制功能(FCl)的程序设计
定义FC1的输入、输出参数。这些定义包括 变量名、数据类型和声明类型。 输入:
输出:
FBl功能块的程序设计
4、组织块(OB1)的程序设计
发电机控制系统组织块OBl的指令程序
块的结构
块由两出 OUT 输入/输出 IN_OUT 静态变量 STAT :只有FB有 临时变量 TEMP
功能和功能块的编程步骤如下:
第一步:定义局部变量。首先定义形参和 临时变量名,功能块还须定义静态变量。 之后确定变量的类型及变量注释。
调用功能时,需用实参来代替形参。
功能块(FB)
功能块是用户所编写的有固定存储区的块。 FB为带“记忆”的逻辑块。它有一个数据结 构与功能块参数表完全相同的数据块(DB) 。我们称该数据块为背景数据块(Instance Data Block)。当功能块被执行时,数据块 被调用,功能块结束。调用随之结束。存放 在背景数据块中的数据在FB块结束以后,仍 能继续保持。具有“记忆”功能。一个功能 块可以有多个背景数据块,使功能块可以被 不同的对象使用。
结构化编程
内容提要
结构化编程 通讯组态 读取模拟量功能块FC 105
第七章 结构化编程
程序设计方法:线性化编程、模块化编 程和结构化编程。
线性化编程是将整个用户程序放在组织块 OB1中,在CPU循环扫描时执行OB1中的全部 指令。其特点是结构简单、但效率低下。另 一方面,某些相同或相近的操作需要多次执 行,这样会造成不必要的编程工作。再者, 由于程序结构不清晰,会造成管理和调试的 不方便。所以在编写大型程序时,避免线性 化编程。
西门子S7300教程第6章PPT课件
N 时间到否?
Y 东 西 向 绿 灯 亮 、 南 北 向 红 灯 亮 30s
N 时间到否?
Y 东 西 向 黄 灯 亮 、 南 北 向 红 灯 亮 5s
N 时间到否?
Y
Date: 2020/11/9
Page: 9 返回上级
2.顺序功能图
分析信号灯的变化 规律,可将工作过程 分成4个依设定时间而 顺序循环执行的状态: S2、S3、S4和S5, 另设一个初始状态S1。 由于控制比较简单, 可用单流程实现,如 图6-7所示。
Date: 2020/11/9
Page: 15 返回上级
【6-2-3】 指示灯控制系统。
某指示灯控制系统有3个指示灯,按下述要求控制: ①按动起动按钮Start,按一定的时间间隔依L0→L1→L2的顺 序点亮。 ②随时按动停止按钮Stop,按一定的时间间隔依L2→L1→L0 灭灯,但未被点亮的灯不必执行灭灯动作。例如,若只有L0和L1 被点亮,按动Stop后则只执行L1→L0灭灯动作。 元件分配表如下。
Page: 12 返回本节
冲洗 风干 结束
起动
停止
洗车控制面板
上图所示为洗车控制系统布置图,元件分配表如下。
Date: 2020/11/9
Page: 13 返回上级
1.控制说明 洗车过程包含3道工艺:泡沫清洗、清水冲洗和风干。 系统设置“自动”和“手动”两种控制方式。控制要求如下: ①若方式选择开关Mode置于“手动”方式,按起动按钮 Start,则按下面的顺序动作: 首先执行泡沫清洗→按冲洗按钮SB1,则执行清水冲洗→ 按风干按钮SB2,则执行风干→按完成按钮SB3,则结束洗 车作业。 ②若选择方式开关置于“自动”方式,按起动按钮后,则 自动执行洗车流程:泡沫清洗10s→清水冲洗20s→风干5s→ 结束→回到待洗状态。 ③任何时候按下停止按钮Stop,则立即停止洗车作业。
S7-300400PLC的编程技术
位数据的表示
2)字节(Byte) 8位二进制数组成1个字节(Byte,如下图,其中的第0位为最低位
(LSB),第7位为最高位(MSB)。
• 3)字(Word)
• 相邻两个字节组成一个字,字用来表示无符号数。MWl00是 由MB1OO和MB1O1组成的1个字,如图5.4.3,MB00为高位字 节。MW100中的M为区域标示符,W表示字,100为字的起始
字节MB1O0的地址。字的取值范围为 W#16#0000~W#16#FFFF。
• 4) 双字(Double Word)
• 两个字组成1个双字,双字用来表示无符号数。MD100是由 MB100~MB103组成的1个双字,(见上图),MB100为高位宇节, D表示双字,100为双字的起始字节MB100的地址。双字的取
地址I0.0,这样使程序易于阅读和理解。
用户可以在网络号右边加上网络的标题,在网络号的下面 为网络加上注释。还可以选择在梯形图下面自动加上该网络中
使用的符号的信息。
在分析梯形图中的逻辑关系时,为了借用继电器电路图的 分析方法,可以想象在梯形图的左有两侧垂直“电源”之间有
一个左正右负的直流电源电压,有一个假想的“能 流”(PowerFlow)流过线圈。利用能流这一概念,可以很好地理
值范围为DW#16#0000_0000~DW#16#FFFF_FFFF。
•常数的表示方法 • 常数值可以是字节、字或双字,CPU以二进制方式存储常数,常
数也可以用十进制、十六进制、ASCII码或浮点数形式来表示。
• B#16#,W#16#,DW#16#分别用来表示十六进制 字节、字和双字常数。2#用来表示二进制常数,例如 2#1101_1010。 L#为32位双整数常数,例如L# +5。 P#为地址指针常数,例如P#M2.O是M2.0的地址。
第六讲 STEP7-300、400指令应用
MOVE(分配值)通过启用EN输入来激活。在IN输入指定的值将
复制到在OUT输出指定的地址。ENO与EN的逻辑状态相同。MOVE 只能复制BYTE、WORD或DWORD数据对象。
2.传送指令
符号:
2013-3-12
北方民族大学
5
现代PL控制技术(SIMATIC S7-300/400PLC )
Parameter Data Type Memory Area Description
(1)时间值 格式一: W#16#wxyz 其中,w = 时间基准(即时间间隔或分辨率)
其中,xyz = 以二进制编码的十进制格式表示的时间值
格式二: S5T#aH_bM_cS_dMS 其中,H = 小时,M = 分钟,S = 秒,MS = 毫秒;a、b、c、 d由用户定
2013-3-12
北方民族大学
热保护(常闭触点) 停止按钮(常闭触点) 起动按钮(常开触点) 主接触器(常开)辅助触点 Y接触器(常开)辅助触点 Δ 接触器(常开)辅助触点 主接触器线圈 Y接触器线圈 Δ 接触器线圈
2013-3-12
北方民族大学
24
现代PL控制技术(SIMATIC S7-300/400PLC )
图4-6 三相异步电动机Y-Δ减压起动控制电路
2013-3-12
北方民族大学
23
现代PL控制技术(SIMATIC S7-300/400PLC )
参考答案: 1、 I/O分配表
I/O设备名称 FR SB1 SB2 KM1 KM1 KM2 KM1 KM2 KM3 I/O地址 I0.0 I0.1 I0.2 I0.3 I0.4 I0.5 Q4.0 Q4.1 Q4.2 说 明
10
现代PL控制技术(SIMATIC S7-300/400PLC )
S7PLC的功能和功能块
4. 结构化程序
所谓结构化程序,就是处理复杂自动化控制任务的过程 中,为了使任务更易于控制,常把过程要求类似或相关的功 能进行分类,分割为可用于几个任务的通用解决方案的小任 务,这些小任务以相应的程序段表示,称为块(FC或FB)。 OB1通过调用这些程序块来完成整个自动化控制任 务。
结构化程序的特点是每个块(FC或FB)在OB1中可能会 被多次调用,以完成具有相同过程工艺要求的不同控制对象。 这种结构可简化程序设计过程、减小代码长度、提高 编程效率,比较适合于较复杂自动化控制任务的设计。
例:正反转编程实例
(二)编辑并调用有参功能(FC)——结构化程序设计
所谓有参功能(FC),是指编辑功能(FC)时,在局部 变量声明表内定义了形式参数,在功能(FC)中使用了虚拟 的符号地址完成控制程序的编程,以便在其他块中能重复调 用有参功能(FC)。这种方式一般应用于结构化程序编写。
例:电机顺序启动编程实例
三、功能(FC)
(一)编辑并调用无参功能(FC)——模块化程序设计
所谓无参功能(FC),是指在编辑功能(FC)时,在局 部变量声明表不进行形式参数的定义,在功能(FC)中直接 使用绝对地址完成控制程序的编程。这种方式一般应用于分 部式结构的程序编写,每个功能(FC)实现整个控制任务的 一部分,不重复调用。
二、功能(FC)和功能块(FB)说明
功能块(FB)有一个数据结构与该功能块的参数完全相 同的数据块,称为背景数据块,背景数据块依附于功能块, 它随着功能块的调用而打开,随着功能块的结束而关闭。 存放在背景数据块中的数据在功能块结束时继续保持。而 功能(FC)则不需要背景数据块,功能调用结束后数据不 能保持。
3.编写控制程序
编写逻辑块(FC和FB)程序时,可以用以下两种方式使 用局部变量:
《西门子S7-300400 PLC项目教程》课件—08液体混合装置控制设计与调试
用户程序的基本结构
3.冷启动 手动冷启动:将CPU的模式选择开关扳到STOP位置,“STOP”的LED指示灯亮, 再扳到MRES位置,STOP指示灯灭1s,亮1s,再灭1s,然后常亮,最后将模式开关再 扳到RUN位置。 自动冷启动:过程映像区的所有过程映像数据、存储器位、定时器、计数器、数据 块以及有保持功能的器件的数据,都被复位到“0”。如果用户程序希望在启动后继续 使用原有的值,也可以选择不将过程映像区清“0”。
用户程序的基本结构
1
用户程序的块
2
用户程序使用的堆栈
3
用户程序的结构
用户程序的基本结构
1
用户程序的块
用户程序的基本结构
1.组织块(Organization Block) 2. 函数(Function) 3.函数块(Function Block) 4.数据块(Data Block) 5.系统函数块SFB和系统函数SFC
用户程序的基本结构
当SQ3检测到达高液位时,进料泵M1、M2均关闭,液位不再 上升,同时混料泵M4开始高速运行。
持续5秒后M4停止,然后出料泵M3开始运行,液位开始下降 。
当SQ1检测低于低液位时,出料泵M3电机停止。 进入函数FC2,编写配方2程序。在执行完复位程序后,位寄存 器M1.0会被置位,液位在低液位以下时,输入寄存器I0.3 的常闭 触点闭合,线圈M5.0闭合并自锁,位寄存器M1.0会被复位。此时 ,系统处于等待状态。
IN_OUT(输入/输出参数)是在函数和函数块中使用,是将数据传递到被调用 块中,在被调用块中处理数据后,再将从被调用块中发送的结果存储在相同的变量中 。
STAT(静态参数)是存储在该函数块的背景数据块中的本地数据。在下次处理函数 块之前,会一直保留存储的数据。
第六章 S7-300400指令系统
2 B
6 B 10 B
6.1.4 CPU的存储区分布 的存储区分布
CPU 工作存储器
装载存储器 (保存在MMC中)
系统存储器
装载存储器 装载存储器采用了RAM或FlashROM,用来保存不包含符 号表和注释的用户程序和系统数据(组态参数,模块 参数等).
工作存储器 工作存储器是集成的高速存取的RAM,用于存放运行时的用户程序和数据. 为了保证程序执行的效率和不过多地占据工作存储器的空间,在执行时 只把与程序执行有关的块装入工作存储器. 系统存储器 系统存储器是CPU提供给用户程序使用的存储器组件,被划分为若干地址区 域.使用指令可以在各地址区域内进行直接寻址.系统存储器为不可扩 展的RAM,用于存放用户程序的操作数据(如输入过程映像,输出过程 映像,位存储器,定时/记数器,块堆栈,中断堆栈和诊断缓冲等).
第六章 S7-300/400指令系统 指令系统
6.1 S7-300/400的数据类型 的数据类型 6.1.1 S7-300/400中数的表示方法 中数的表示方法 6.1.2 基本数据类型 6.1.3 复合数据类型 6.1.4 CPU的存储区分布 的存储区分布 6.1.5 系统存储器 6.1.6 CPU中的寄存器 中的寄存器 6.2 STEP7指令系统简介 指令系统简介
表6-1 常数
符号 B#16# W#16# DW#16#
D# 说明
十六进制字节,字和双字常数
IEC日期常数
L#
32位整数常数
P#
地址指针常数
S5T#
S5时间常数(16位)
T#
IEC时间常数
TOD#
实时时间常数(16位/32位)
C#
计数器常数(BCD编码)
2#
西门子S7-300模块化结构
西门子S7-300模块化结构
一、S7-300/400 模块化结构与小型plc(如西门子S7-200)不同,大中型PLC 最大的特点就是采用模块化控制系统,来满足中等或高性能要求的应用。
在大中型PLC 系统中,各种单独的模块之间可进行广泛组合以用于扩展,由于点数基本上不受太多的限制,其灵活性就非常高。
基本的模块化硬件结构结构包括机架、电源、处理器CPU、输入输出I/O 模块、编程或通讯用接口,图
1 表示了一个模块化控制器是如何由模块化硬件部件一一组成的。
图1 模块化控制器的组成部分
其中机架是用来安装处理器和I/O 模块、特殊模块的,所有模块都可以很容易地沿着导轨插入到机架。
不同类型的PLC 系统其机架槽数不太一样,可以互联的机架数也不尽相同。
大中型PLC 系统在配置时,其机架数可以有很多,机架之间的关系可以用图2 来表示。
图2 机架网络
二、西门子S7-300 PLC 1、模块化结构S7-300 为节省空间的模块化结构设计,可以适配用户现有的各种机械控制任务,不需要考虑槽位规则。
在运行时,无需风扇。
除模块外,只需要DIN 标准的导轨,就可以将模块旋转到位,安装在导轨上并用螺钉紧固。
这种结构形式非常牢固并且有很高的电磁兼容性。
S7- 300 的背板总线集成在模块上,通过将模块插入到总线连接器进行装配。
如图
3 所示为S7-300 模块化结构安装现场。
tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
S7-300 PLC第6章 S7系列的程序结构
存储区
功能块(FB) 用户编写的包含经常使用的功能的子程序,有存储区
功能(FC) 用户编写的包含经常使用的功能的子程序,无存储区
背 景 数 据 块 调用FB和SFB时用于传递参数的数据块,在编译过程中自
(IDB)
动生成数据
共 享 数 据 块 存储用户数据的数据区域,供所有的块共享
(SDB)
用户程序包含用户 编写的组织块 (OB)、功能块 (FB)、功能(FC) 和系统提供的SFB (系统功能块)与 系统功能(SFC), 被调用的块是OB之 外的逻辑块。调用 功能块时需要为它 指定一个背景块, 后者随功能块的调 用而打开,在调用 结束时自动关闭。
3. 对中断的控制
所谓“中断控制”,就是当CPU执行程序时, 允许外部设备用“中断”信号中止CPU正在执 行的程序并临时去执行另外一段程序。用 户程序能够对一个中断发生后是否真正产 生中断调用进行控制,即在程序运行中适 时地屏蔽或允许中断调用。中断的控制功 能由STEP 7提供的SFC完成。
3. 结构化编程
结构化编程将复杂的自动化任务分解为能 够反映过程的工艺、功能或可以反复使用 的小任务,这些任务由相应的程序块(或 称逻辑块)来表示,程序运行时所需的大 量数据和变量存储在数据块中,结构化程 序比分块程序有更大的灵活性、继承性。 适用于比较复杂、规模较大的控制工程的 程序设计。
2. 组织块的优先级
组织块的优先级就是中断的优先级,较高优先 级的组织块可以中断较低优先级的组织块的处 理过程。如果同时产生的中断请求不止一个, 最先执行优先级最高的OB,然后按照优先级 由高到低的顺序执行其他OB。
优先级的由低到高的顺序:背景循环、主程序 扫描循环、日期时间中断、时间延时中断、循 环中断、硬件中断、多处理器中断、I/O冗余 错误、异步故障(OB 80~OB87)、启动和 CPU冗余。
S7-300400系列PLC编程语言与用户结构
块堆栈 (B 堆栈) DB 和 DI 寄存器 临时数据 (L 堆栈)的指针 块的号码 返回地址
第三讲S7-300400系列PLC编程语言与用户结构
日期时间中断OB10(1) 日时钟 OB (OB10 在 S7-314) 允许你在某一特定日期或特定间隔,中 断正在循环的 OB 而去执行中断程序。你可以对此 OB 编程使其按下列间 隔运行: Once(一次): 只在特定日期和时间执行一次。 Every minute(每分钟):从某一特定日期和时间开始,每分钟执行1次。 Hourly(每小时): 从某一特定日期和时间开始,每小时执行一次。 Daily(每天): 从某一特定日期和时间开始,每天执行一次。 Weekly(每周): 从某一特定日期和时间开始,每周执行一次。 Monthly(每月): 从某一特定日期和时间开始,每月执行一次。 Annually(每年): 从某一特定日期和时间开始,每年执行一次。
清除过程映像,非保持的M, T, C
执行 OB 100 允许输出
是
STOP
循
执行OB1
循
环
输出 PIQ
读入 PII 执行 OB1 输出 PIQ
环
第三讲S7-300400系列PLC编程语言与用户结构
组织块的启动信息
局部变量 字节 0/1 2/3 4/5 6/7 8/9 10 / 11 12 / 13 14 / 15 16 / 17 18 / 19 启动事件 优先级 序列号 OB 号 管理信息
块 组织块(OB) 功能描述 操作系统与用户程序接口,决定用于程序的结构 集成在CPU模块中,通过SFB调用一些重要的系统功能, 有存储区 集成在CPU模块中,通过SFC调用一些重要的系统功能, 无存储区 用户编写的包含经常使用功能的子程序,有存储区 用户编写的包含经常使用功能的子程序,无存储区 调用FB和SFB时用于传递参数的数据块, 在编译过程中自动生成数据 存储用户数据的数据区域,供所有的块共享
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章S7-300/400的用户程序结构6.1 用户程序的基本结构6.1.1 用户程序中的块用户程序和所需的数据放置在块中,使程序部件标准化,用户程序结构化,可以简化程序组织,使程序易于修改、查错和调试。
块结构显著地增加了PLC程序的组织透明性、可理解性和易维护性。
表6-1 用户程序中的块1.组织块(OB)控制扫描循环和中断程序的执行、PLC的启动和错误处理等。
(1)OB1用于循环处理,用户程序中的主程序。
(2)起动、事件或故障中断处理,需要时才被及时地处理。
(3)中断的优先级,高优先级的OB可以中断低优先级的OB。
2.临时局域数据生成逻辑块(OB、FC、FB)时可以声明临时局域数据。
这些数据是临时的,局域(Local)数据,只能在生成它们的逻辑块内使用。
所有的逻辑块都可以使用共享数据块中的共享数据。
3.功能(FC)没有固定的存储区的块,其临时变量存储在局域数据堆栈中,功能执行结束后,这些数据就丢失了。
用共享数据区来存储那些在功能执行结束后需要保存的数据。
调用功能和功能块时用实参(实际参数)代替形参(形式参数)。
形参是实参在逻辑块中的名称,功能不需要背景数据块。
功能和功能块用IN、OUT和IN_OUT参数做指针,指向调用它的逻辑块提供的实参。
功能可以为调用它的块提供数据类型为RETURN的返回值。
4.功能块(FB)功能块是用户编写的有自己的存储区(背景数据块)的块,每次调用功能块时需要提供各种类型的数据给功能块,功能块也要返回变量给调用它的块。
这些数据以静态变量(STAT)的形式存放在指定的背景数据块(DI) 中,临时变量TEMP存储在局域数据堆栈中。
调用FB或SFB时,必须指定DI的编号。
在编译FB或SFB时自动生成背景数据块中的数据。
一个功能块可以有多个背景数据块,用于不同的被控对象。
可以在FB的变量声明表中给形参赋初值。
如果调用块时没有提供实参,将使用上一次存储在DI中的参数。
5.数据块数据块中没有STEP 7的指令,STEP 7按数据生成的顺序自动地为数据块中的变量分配地址。
数据块分为共享数据块和背景数据块。
应首先生成功能块,然后生成它的背景数据块。
在生成背景数据块时指明它的类型为背景数据块(Instance)和它的功能块的编号。
图6-1 用于不同对象的背景数据块FB22:电机DB201: 电机1DB202: 电机2DB203: 电机3电机1的背景数据块电机2的背景数据块电机3的背景数据块6.系统功能块SFB 和系统功能SFC系统功能块和系统功能是为用户提供的已经编好程序的块,可以调用不能修改。
操作系统的一部分,不占用户程序空间。
SFB 有存储功能,其变量保存在指定给它的背景数据块中。
7.系统数据块(SDB)包含系统组态数据,例如硬件模块参数和通信连接参数等。
CALL 、CU (无条件调用)和CC (RLO = 1时调用)指令调用没有参数的FC 和FB 。
6.1.2 用户程序使用的堆栈图6-2 堆栈操作入栈前入栈后出栈前出栈后iv0iv1iv2iv3iv4iv5iv6iv7xiv0iv1iv2iv3iv4iv5iv6iv7iv1iv2iv3iv4iv5iv6iv7iv0图6-3 块堆栈与局域数据堆栈块堆栈的块号和返回地址的块号和返回地址的块号和返回地址局域数据堆栈的局域数据的局域数据的局域数据OB81OB81FC2FC2FB1FB1堆栈采用“先入后出”的规则存入和取出数据。
最上面的存储单元称为栈顶。
1.局域数据堆栈(L )局域数据堆栈用来存储块的局域数据区的临时变量、组织块的启动信息、块传递参数的信息和梯形图程序的中间结果。
可以按位、字节、字和双字来存取,例如L 0.0,LB9,LW4和LD52。
各逻辑块均有自己的局域变量表,局域变量仅在它被创建的逻辑块中有效。
2.块堆栈(B 堆栈)存储被中断的块的类型、编号和返回地址;从DB 和DI 寄存器中获得的块被中断时打开的共享数据块和背景数据块的编号;局域数据堆栈的指针。
3.中断堆栈(I 堆栈)当前的累加器和地址寄存器的内容、数据块寄存器DB 和DI 的内容、局域数据的指针、状态字、MCR (主控继电器)寄存器和B 堆栈的指针。
6.1.3 线性化编程与结构化编程1.线性化编程:整个用户程序放在循环控制组织块OB1(主程序)中。
2.模块化编程:程序被分为不同的逻辑块,每个块包含完成某些任务的逻辑指令。
3.结构化编程:将复杂的自动化任务分解为小任务,这些任务由相应的逻辑块来表示,程序运行时所需的大量数据和变量存储在数据块中。
调用时将“实参”赋值给形参。
创建顺序:FC1→FB1及其背景数据块IDB1→OB1,被调用的块应该是已经存在的。
6.2.1 发动机控制系统的用户程序结构柴油机数据DB2汽油机数据DB1调用FB1OB1FC1图6-5 程序结构共享数据块 FB33.局域变量的类型(1)IN(输入变量):由调用它的块提供的输入参数。
(2)OUT(输出变量):返回给调用它的块的输出参数。
(3)IN_OUT:初值由调用它的块提供,被子程序修改后返回给调用它的块。
(4)TEMP (临时变量):暂时保存在局域数据区中的变量。
(5)STAT(静态变量):在功能块的背景数据块中使用。
关闭功能块后,其静态数据保持不变。
功能(FC)没有静态变量。
表6-3 FB1的变量声明表5.程序库介绍6.2.3 功能块与功能表6-4 FC1的变量声明表图6-9 图图图6.2.4 功能块与功能的调用为了能全部转换为上面的梯形图,下面的语句表还需要增加一些语句。
Network1:自动手动切换A "自动"S "自动模式"A "手动"R "自动模式"Network2:汽油机控制CALL "发动机控制" , "汽油机数据"Switch_On := "起动汽油机"Switch_Off := "关闭汽油机"Failure := "汽油机故障"Actual_Speed := "汽油机转速"Engine_On := "汽油机运行"Preset_Speed_Reached := "汽油机到达设置转速"Network3:汽油机风扇控制CALL "风扇控制"Engine_On := "汽油机运行"Timer_Function := "汽油机风扇延时"Fan_On := "汽油机风扇运行"6.3 数据块6.3.1 数据块中的数据类型1.基本数据类型基本数据类型包括位(Bool),字节(Byte)、字(Word)、双字(Dword)、整数(INT)、双整数(DINT)和浮点数(Float,或称实数Real)等。
2.复合数据类型日期和时间用8个字节的BCD码来存储。
第0~5号字节分别存储年、月、日、时、分和秒,毫秒存储在字节6和字节7的高4位,星期存放在字节7的低4位。
例如2004年7月27日12点30分25.123秒可以表示为DT#04-07-27-12:30:25.123。
字符串(STRING)由最多254个字符(CHAR)和2字节的头部组成。
字符串的默认长度为254,通过定义字符串的长度可以减少它占用的存储空间。
3.数组数组(ARRAY )是同一类型的数据组合而成的一个单元。
ARRAY[1..2,1..3]是一个二维数组,共有6个整数元素。
最多为6维。
数组元素”TANK ”.PRESS[2,1]:TANK 是数据块的符号名,PRESS 是数组的名称。
方括号中是数组元素的下标。
如果在块的变量声明表中声明形参的类型为ARRAY ,可以将整个数组而不是某些元素作为参数来传递。
整数整数整数整数整数整数1,11,21,32,12,22,3图6-10 二维数组的结构4.结构结构(STRUCT )是不同类型的数据的组合。
可以用基本数据类型、复杂数据类型和UDT 作为结构中的元素,可以嵌套8层。
数据块TANK 内结构STACK 的元素AMOUNT 应表示为”TANK ”.STACK.AMOUNT 。
将结构作为参数传递时,作为形参和实参的两个结构必须有相同的数据结构,即相同数据类型的结构元素和相同的排列顺序。
5.用户定义数据类型用户定义数据类型(UDT )是一种特殊的数据结构,由用户自己生成,定义好后可以在用户程序中多次使用。
例如可以生成用于颜料混合配方的UDT ,然后用它生成用于不同颜色配方的数据组合。
6.3.2 数据块的生成与使用菜单命令“View→Declaration View ”和“View→Data View ”分别指定声明表显示方式和数据显示方式。
声明表显示状态用于定义和修改共享数据块中的变量。
6.4 多重背景FB1FB 1发动机控制FB 10C A LL FB 1(C A LL FB1(OB1FC1共享数据块D B 10汽油机数据柴油机数据6.4.1 多重背景功能块生成FB10时应激活“Multiple Instance FB ”(多重背景功能块)选项。
应首先生成FB1。
为调用FB1,在FB10的变量声明表中声明了两个名为“Petrol_Engine (汽油机)”和“Diesel_Engine (柴油机)”的静态变量(STAT ),其数据类型为FB1。
生成FB10后,“Petrol_Engine ”和“Diesel_Engine ”将出现在管理器编程元件目录的“Multiple Instances (多重背景)”文件夹内。
可以将它们“拖放”到FB 10中,然后指定它们的输入参数和输出参数。
6.4.2 多重背景数据块其中的数据自动产生。
6.4.3 在OB1中调用多重背景图6-21中调用FB10(符号名为“发动机”)的语句表为:Network4:调用多重背景CALL "发动机" , "多重背景数据块"Preset_Speed_Reached :="两台都达到设置转速"图6-17 FB10的变量声明表图6-18 多重背景功能块FB10使用多重背景时应注意以下问题:(1)首先应生成需要多次调用的功能块(例如上例中的FB1)。
(2)管理多重背景的功能块(例如上例中的FB10)必须设置为有多重背景功能。
(3)在管理多重背景的功能块的变量声明表中,为被调用的功能块的每一次调用定义一个静态(STAT)变量,以被调用的功能块的名称(例如FB1)作为静态变量的数据类型。
(4)必须有一个背景数据块(例如上例中的DB10)分配给管理多重背景的功能块。