第6章 STEP7结构化程序设计(1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
( 2 )事件驱动的中断组织块 这是一类在发生特定事件时申请的中断,有以下3 种方式: ① 硬件中断组织块( OB4O ~0B47 )。它具有硬件中断能力。 信号模板出现的过程事件中断信号可立即打断循环程序,转而执行中 断程序。 ② 延时中断组织块(OB20 ~OB23 )。可以在一个过程事件 出现后延时一段时间响应。 ③ 错误中断组织块。错误中断是在CPU 检测到PLC内部出现了 错误和故障时而产生的中断。它也将中断循环程序的执行并决定系统 如何处理。它分为:同步错误组织块(OB121 、OB122 )和异步错 误组织块(OB80 ~ OB87 )。同步错误出现在用户程序执行过程中。 异步错误有PLC故障、优先级错误或循环时间超过等。 (二)中断优先级 各组织块OB都规定了优先级,同时申请中断时,高优先级的中断总 是优先执行的,而且高优先级中断组织块还可中断低优先级的中断组 织块的程序执行(在指令边界处),这被称为中断嵌套。具有同等优 先级的 OB 不能相互中断,而是按照中断发生的先后顺序执行。
图6-1 CPU314为优先级分配L堆栈
(四)中断控制
用户程序能够对一个中断发生后是否真正产生中断调用来进行
控制,即在程序运行中适时地屏蔽或允许中断调用,对中断的控制功 能用STEP7 提供的SFC 完成。 SFC39 ( DIS _ IRT ) 可禁止处理所有优先级的中断和异步错误, 也可有选择地禁止某个优先级的中断或使优先级范围的中断和异步错 误得到处理。被SFC39 禁止的中断需用SFC40 允许,在CPU 完全再 启动后,SFC39 的作用自动失效。
图6-3 在数据块DB3中建立一个2×3数组
图6-3所示是一个在共享数据块DB3中建立的2×3的数组。图中各栏 目的说明如下: ①Address(地址):由STEP7自动分配的地址,它是变量占用的 第一个字节地址,存盘时由程序编辑器产生。 其中:“+”项表示与STRUCT(表示构造开始,END_STRUCT表 示结 束构造)有关联的初始地址; “*”项表示一个数组元素所占的地址字节数; “=”项表示该STRUCT要求的总的存储区字节数。
(三)中断工作过程
1.中断工作过程
中断处理用来实现对特殊内部事件或外部事件的快速响应。如果没 有中断,CPU 循环执行组织块 OBl。在循环执行用户程序的过程中, 如果CPU 检测到有中断请求,因为OB1 的优级最低(背景组织块 OB90除外),所以操作系统在现有程序的当前指令执行结束后(称 断点)立即响应中断,调用申请中断的组织块OB ,执行该OB 中的 程序。当该OB 中程序执行完毕后,返回原程序断点处继续原程序的 执行。
在STEP7中,优先级的范围从1~29 ,其中28 优先级最高,29实际 上是0.29,即OB29的优先级最低,其次就是OB1,它的优先级是1。对 于S7-300PLC的CPU,各个OB的优先级都是固定的,用户无法改变。表 6-1 列出了S7系列PLC的CPU支持的OB以及与其对应的类型和默认的优 先级。
第二节 数据块及其数据结构
用户数据为何要存在数据块中?因为生产过程中会遇到很多过程 数据、基准值、给定值或预置值,有些经常需要进行修改,分类集中 放置在不同数据块中有利于进行数据管理;数据块也是用于实现各逻 辑块之间交换、传递和共享数据的重要途径;数据块丰富的数据结构 有助于程序高效率管理复杂的变量组合,提高程序设计的灵活性。 一、数据块中存储数据的类型和结构 在第四章第二节中介绍了S7的数据类型,下面对这些数据在数据 块中的存储方式及结构建立进行介绍。 (一)数据块中存储的数据类型 在数据块中的数据,既可以是基本数据类型,也可以是复合数据 类型。 1.基本数据类型 表4-4的基本数据类型可以分为3类,即位数据类(BOOL、BYTE、 WORD、DWORD、CHAR);数学数据类(INT、DINT、REAL); 定时器类(S5TIME、TIME、DATE、TIME_OF_DAY)。
(3)用数组作参数传递。数组可以在逻辑块变量声明表中或数据块 中定义。如果在逻辑块变量声明表中把其形参定义为数组类型时,可 将实际参数数组作为参数传送,但必须将整个数组而不是数组的某些 元素作为参数传递。当然,在调用快时。也可以将某个数组的元素赋 值给同一类型的参数。 将数组作为参数传递时,并不要求作为形参和实参的二个数组有相 同的名称,但它们必须有同样的组织结构、相同的数据类型并按相同 的顺序排列。例如都是由整数组成的2×3格式的数组。 2.结构(STRUCT)的生成与访问 结构(STRUCT)可以将不同数据类型的元素组合成一个整体, 或者说结构是不同类型的数据组合。如图6-4所示。可以用基本数据类 型、复合数据类型(包括数组、结构和用户定义的数据类型UDT)。 但由数组或结构组成的结构最多只能嵌套8层。用户可以将过程控制 中有关的数据统一组织在一个结构中,作为一个数据单元来使用,而 不是使用大量的单个的元素,这为统一处理不同类型的数据或参数提 供了方便。
用户根据生产控制的复杂程度,将程序放在不同的逻辑块(包括 OB、FC和FB)中。程序运行时所需的大量数据或变量存储在数据块中, 调用功能块FB 时也必须为其指定一个相应的背景数据块DI ,它随功 能块FB 的调用而打开,随功能块FB的结束而关闭。在块调用时,调 用块可以是任何逻辑块( OB 、FB 、FC 、SFB 、SFC ) ,被调用的 块只能是功能块(除OB 外的逻辑块)。 块调用时,OB的临时变量数据压入L堆栈,所有OB要求至少20字 节的L堆栈中的内存空间。所以OB1 即使没有声明使用其他额外的临 时变量,也要使用20 字节的L堆栈中的内存空间。 二、PLC中断 S7 系列PLC 采用循环程序处理与中断程序处理结合的工作方式。 中断处理方式在计算机和PLC 中均得到广泛应用。这种工作方式是当 有中断申请时,CPU 将暂时中断现有程序的执行,转而执行相关的中 断程序,中断程序执行完毕后,再返回原程序执行。但不同PLC 对中 断的处理可能各有不同,下面介绍S7-300 /400 系列PLC 的中断。
基本数据类型的数据长度不超过32位,可利用STEP7基本指令处 理,能完全装入累加器中。 2.复合数据类型 复合数据类型是基本数据类型的组合,其数据长度超过32位。因 为数据长度超过累加器的长度,所以不能用装入指令一次把整个数据 装入累加器,往往需要利用一些特殊的方法(如调用标准程序库中的 系统功能块)来处理这些数据。复合数据类型如表6-2所示。 (二)数据块中数据类型的生成和使用 在复合数据类型中,日期_时间(DATE_AND_TIME)类型的名 称、位数及格式是由操作系统定义的,用户不可改变,并且该数据类 型在S7-300PLC中必须用标准功能块SFC才能访问。其他复合数据类 型可在逻辑块变量声明表中或数据块中定义。 1.数组(ARRAY)的生成与访问 (1)建立数组。在逻辑块变量声明表中或数据块中生成一个数组时, 应指定数组的名称,例如PRESS,声明数组的类型时要使用关键字 ARRAY,用下标(Index)指定数组的大小,下标的上、下限放在方 括号中,数组的维数最多为6维,各维之间用逗号隔开,每一维的首、 尾数字之间用双点隔开。
第六章
STEP7结构化程序设计
一个复杂的生产过程或大规模的分散被控对象,总是可以把它分 解为若干个较小的分过程。自动化过程的这种分解处理,得到了 STEP7 “开发软件包”在各个技术层次上的支持。它将控制任务分为 项目,项目可以由一个或多个CPU 程序组成,而每个CPU 程序又是
由它的各种逻辑块和数据块构成,逻辑块中的功能块总是对应一个控
②Name(名称):输入数组的符号名。如PRESS、 Motor_data等。 ③Type(数据类型):数组的数据类型。如BOOL、WORD、 INT、STRACT、UDT等基本数据类型或复合数据类型,注意不能 用ARRAY类型。 ④Initial Value(初值):如果不想用缺省值可输入初值。如 “30、22、-3、3(0)”(这里的3(0)表示后3个数组元素全为0, 是一种简化的写法)。当数据块第一次存盘时,若用户没有明确地 声明实际值,则初值将被用于实际值。 ⑤Comment(注释):用于栏目的文字注释,最多可为80 个字符。如“2×3数组”。 (2)访问数组。利用数组中指定元素的下标可访问数组中的 元素数据,这时数据块名、数组名及下标一起使用并用英语的句号 分开。如图6-5中声明的数组在DB3(假设符号名MOTOR)数据块 中,可用以下符号地址或绝对地址访问存在DB3中数组的第3个元素 (数据类型为整数INT,占用一个字或2个字节): MOTOR.PRESS[1 ,3] 或DB3.DBW5
当正在执行某组织块OB 的中断程序时,CPU 又检测到一个中断 请求,此时操作系统要进行优先级比较。具有同等优先级的OB 不能 相互中断,而是按照发生的先后顺序执行。若后面申请中断OB的优先 级高,则当前的OB将被中断,转而执行高优先级OB的程序。因此中 断允许按优先级嵌套调用。
一个组织块OB 被另一个新组织块OB 中断时,保护中断现场的 工作由操作系统完成。包括被中断OB 的局部数据压人L堆栈;被中断 OB 的断点现场信息分别保存到中断堆栈(I 堆栈)和块堆栈( B 堆栈) 中。 图6-1 表示CPU314 为优先级分配L 堆栈的情况。CPU314 的L 堆 栈为1 536 字节,整个L 堆栈供程序中的所有优先级划分使用。 CPU314的每个组织块可以多层嵌套调用,但一个组织块OB的临时变 量的总数不能超过256 字节。当来一个新组织块中断调用时,新组织 块的临时变量也在L 堆栈中生成。图6-1 示出了OB1 被OB10 中断, OB10 又被OB81中断时L 堆栈中局域数据的分配情况。
Fra Baidu bibliotek一)中断源
所谓中断源,即发出中断请求的来源。PLC 的中断源可能来自 PLC模块的硬件中断或是CPU 内部的软件中断。S7 型PLC 因型号不 同,中断源的个数与类型也有所不同。它以组织块(OB ) 的形式出现, S7 提供了各种不同的组织块,每个组织块OB 给与一个编号,用于实 现不同的中断申请及相应的中断处理。 S7 型PLC 的中断源,或者说中断组织块OB 的类型,归纳起来有 以下两大类: (1)定期的时间中断组织块 定期的执行某中断程序,有两种方式: ① 日时钟中断组织块(OB10 ~ OB17 )。它可以是某特定时间 执行1 次,或从某特定时间开始并按指定的间隔时间(如每分钟、每 小时、每天)重复地执行中断。如重复在每天17 : 00保存数据。 ② 循环中断组织块(OB30 ~OB38 ) 。它是CPU 从RUN 开始计 算,每隔一段预定时间(如100ms)执行一次中断。例如,在这些组 织块中调用循环采样控制程序。
制分过程。S7系列PLC 中的通信联网功能和“全局数据”概念,可协 调整个控制系统的正常运行。 这是一种模块化的思想,在程序设计阶段,有助于编写出结构化 程序,这不仅使应用程序简洁明了,而且易于程序的测试与维护。
第一节 结构化编程与中断
一、结构化编程 在为一个复杂的自动控制任务做设计时,我们会发现部分控制逻 辑常常被重复使用。这种情况便可采用结构化编程方法来设计用户程 序。编一些通用的指令块来控制那些相同或相似的功能,这些块就是 功能块(FB )或功能(FC)。在功能块中编程用的是“形参”,在 调用它时要给“形参”赋给“实参”,依靠赋给不同的“实参”,便 可完成对多种不同设备的控制,这是一个功能块能多处使用的道理。 在STEP7软件中,结构化编程的用户程序都是以“块”的形式出现 的。“块”是一些独立的程序或数据单元,所以,结构化编程的用户 程序由组织块(OB)、功能块(FB、FC)和数据块(DB)构成。 组织块(OB )是操作系统和用户应用程序在各种条件下的接口界 面,OB1 是主程序循环块,即可以循环执行的主程序块,是用户程序 的主干,在任何情况下它都是需要的。其他组织块OB除了启动程序和 背景程序等非中断类的OB之外,大多数组织块OB则对应不同的中断处 理程序。
SFC40 ( EN _ IRT ) 允许处理由SFC39 禁止的中断和异步错误,
可以全部允许,也可有选择地允许。SFC40 一般与SFC39 配对使用。 SFC41 ( DIS _ A IRT ) 可延迟处理比现行优先级更高的中断和异 步错误,直到用SFC42 允许。 SFC 42 ( EN _ AIRT ) 允许处理由SFC 41 暂时禁止的中断和异步 错误。所以,SFC 42 与SFC 41 必须配对使用。