STEP7结构化程序设计.ppt
《STEP7结构化程序设计.ppt》由会员分享,可在线阅读,更多相关《STEP7结构化程序设计.ppt(100页珍藏版)》请在三一办公上搜索。
1、第六章STEP7结构化程序设计,一个复杂的生产过程或大规模的分散被控对象,总是可以把它分解为若干个较小的分过程。自动化过程的这种分解处理,得到了STEP7“开发软件包”在各个技术层次上的支持。它将控制任务分为项目,项目可以由一个或多个CPU 程序组成,而每个CPU 程序又是由它的各种逻辑块和数据块构成,逻辑块中的功能块总是对应一个控制分过程。S7系列PLC 中的通信联网功能和“全局数据”概念,可协调整个控制系统的正常运行。,这是一种模块化的思想,在程序设计阶段,有助于编写出结构化程序,这不仅使应用程序简洁明了,而且易于程序的测试与维护。,第一节结构化编程与中断,一、结构化编程,在为一个复杂的自
2、动控制任务做设计时,我们会发现部分控制逻辑常常被重复使用。这种情况便可采用结构化编程方法来设计用户程序。编一些通用的指令块来控制那些相同或相似的功能,这些块就是功能块(FB)或功能(FC)。在功能块中编程用的是“形参”,在调用它时要给“形参”赋给“实参”,依靠赋给不同的“实参”,便可完成对多种不同设备的控制,这是一个功能块能多处使用的道理。,在STEP7软件中,结构化编程的用户程序都是以“块”的形式出现的。“块”是一些独立的程序或数据单元,所以,结构化编程的用户程序由组织块(OB)、功能块(FB、FC)和数据块(DB)构成。,组织块(OB)是操作系统和用户应用程序在各种条件下的接口界面,OB1
3、 是主程序循环块,即可以循环执行的主程序块,是用户程序的主干,在任何情况下它都是需要的。其他组织块OB除了启动程序和背景程序等非中断类的OB之外,大多数组织块OB则对应不同的中断处理程序。,二、PLC中断,用户根据生产控制的复杂程度,将程序放在不同的逻辑块(包括OB、FC和FB)中。程序运行时所需的大量数据或变量存储在数据块中,调用功能块FB 时也必须为其指定一个相应的背景数据块DI,它随功能块FB 的调用而打开,随功能块FB的结束而关闭。在块调用时,调用块可以是任何逻辑块(OB、FB、FC、SFB、SFC),被调用的块只能是功能块(除OB 外的逻辑块)。,块调用时,OB的临时变量数据压入L堆
4、栈,所有OB要求至少20字节的L堆栈中的内存空间。所以OB1 即使没有声明使用其他额外的临时变量,也要使用20 字节的L堆栈中的内存空间。,S7 系列PLC 采用循环程序处理与中断程序处理结合的工作方式。中断处理方式在计算机和PLC 中均得到广泛应用。这种工作方式是当有中断申请时,CPU 将暂时中断现有程序的执行,转而执行相关的中断程序,中断程序执行完毕后,再返回原程序执行。但不同PLC 对中断的处理可能各有不同,下面介绍S7-300/400 系列PLC 的中断。,(一)中断源,所谓中断源,即发出中断请求的来源。PLC 的中断源可能来自PLC模块的硬件中断或是CPU 内部的软件中断。S7 型P
5、LC 因型号不同,中断源的个数与类型也有所不同。它以组织块(OB)的形式出现,S7 提供了各种不同的组织块,每个组织块OB 给与一个编号,用于实现不同的中断申请及相应的中断处理。S7 型PLC 的中断源,或者说中断组织块OB 的类型,归纳起来有以下两大类:,(1)定期的时间中断组织块 定期的执行某中断程序,有两种方式:日时钟中断组织块(OB10 OB17)。它可以是某特定时间执行1 次,或从某特定时间开始并按指定的间隔时间(如每分钟、每小时、每天)重复地执行中断。如重复在每天17:00保存数据。循环中断组织块(OB30 OB38)。它是CPU 从RUN 开始计算,每隔一段预定时间(如100ms
6、)执行一次中断。例如,在这些组织块中调用循环采样控制程序。,(2)事件驱动的中断组织块 这是一类在发生特定事件时申请的中断,有以下3 种方式:硬件中断组织块(OB4O 0B47)。它具有硬件中断能力。信号模板出现的过程事件中断信号可立即打断循环程序,转而执行中断程序。延时中断组织块(OB20 OB23)。可以在一个过程事件出现后延时一段时间响应。错误中断组织块。错误中断是在CPU 检测到PLC内部出现了错误和故障时而产生的中断。它也将中断循环程序的执行并决定系统如何处理。它分为:同步错误组织块(OB121、OB122)和异步错误组织块(OB80 OB87)。同步错误出现在用户程序执行过程中。异
7、步错误有PLC故障、优先级错误或循环时间超过等。,各组织块OB都规定了优先级,同时申请中断时,高优先级的中断总是优先执行的,而且高优先级中断组织块还可中断低优先级的中断组织块的程序执行(在指令边界处),这被称为中断嵌套。具有同等优先级的 OB 不能相互中断,而是按照中断发生的先后顺序执行。,(二)中断优先级,在STEP7中,优先级的范围从129,其中28 优先级最高,29实际上是0.29,即OB29的优先级最低,其次就是OB1,它的优先级是1。对于S7-300PLC的CPU,各个OB的优先级都是固定的,用户无法改变。表6-1 列出了S7系列PLC的CPU支持的OB以及与其对应的类型和默认的优先
8、级。,(三)中断工作过程,1.中断工作过程,中断处理用来实现对特殊内部事件或外部事件的快速响应。如果没有中断,CPU 循环执行组织块 OBl。在循环执行用户程序的过程中,如果CPU 检测到有中断请求,因为OB1 的优级最低(背景组织块OB90除外),所以操作系统在现有程序的当前指令执行结束后(称断点)立即响应中断,调用申请中断的组织块OB,执行该OB 中的程序。当该OB 中程序执行完毕后,返回原程序断点处继续原程序的执行。,当正在执行某组织块OB 的中断程序时,CPU 又检测到一个中断请求,此时操作系统要进行优先级比较。具有同等优先级的OB 不能相互中断,而是按照发生的先后顺序执行。若后面申请
9、中断OB的优先级高,则当前的OB将被中断,转而执行高优先级OB的程序。因此中断允许按优先级嵌套调用。,一个组织块OB 被另一个新组织块OB 中断时,保护中断现场的工作由操作系统完成。包括被中断OB 的局部数据压人L堆栈;被中断OB 的断点现场信息分别保存到中断堆栈(I 堆栈)和块堆栈(B 堆栈)中。,图6-1 表示CPU314 为优先级分配L 堆栈的情况。CPU314 的L 堆栈为1 536 字节,整个L 堆栈供程序中的所有优先级划分使用。CPU314的每个组织块可以多层嵌套调用,但一个组织块OB的临时变量的总数不能超过256 字节。当来一个新组织块中断调用时,新组织块的临时变量也在L 堆栈中
10、生成。图6-1 示出了OB1 被OB10 中断,OB10 又被OB81中断时L 堆栈中局域数据的分配情况。,图6-1CPU314为优先级分配L堆栈,(四)中断控制,用户程序能够对一个中断发生后是否真正产生中断调用来进行控制,即在程序运行中适时地屏蔽或允许中断调用,对中断的控制功能用STEP7 提供的SFC 完成。SFC39(DIS _ IRT)可禁止处理所有优先级的中断和异步错误,也可有选择地禁止某个优先级的中断或使优先级范围的中断和异步错误得到处理。被SFC39 禁止的中断需用SFC40 允许,在CPU 完全再启动后,SFC39 的作用自动失效。SFC40(EN _ IRT)允许处理由SFC
11、39 禁止的中断和异步错误,可以全部允许,也可有选择地允许。SFC40 一般与SFC39 配对使用。SFC41(DIS _ A IRT)可延迟处理比现行优先级更高的中断和异步错误,直到用SFC42 允许。SFC 42(EN _ AIRT)允许处理由SFC 41 暂时禁止的中断和异步错误。所以,SFC 42 与SFC 41 必须配对使用。,第二节数据块及其数据结构,一、数据块中存储数据的类型和结构,用户数据为何要存在数据块中?因为生产过程中会遇到很多过程数据、基准值、给定值或预置值,有些经常需要进行修改,分类集中放置在不同数据块中有利于进行数据管理;数据块也是用于实现各逻辑块之间交换、传递和共享
12、数据的重要途径;数据块丰富的数据结构有助于程序高效率管理复杂的变量组合,提高程序设计的灵活性。,在第四章第二节中介绍了S7的数据类型,下面对这些数据在数据块中的存储方式及结构建立进行介绍。,(一)数据块中存储的数据类型 在数据块中的数据,既可以是基本数据类型,也可以是复合数据类型。1.基本数据类型 表4-4的基本数据类型可以分为3类,即位数据类(BOOL、BYTE、WORD、DWORD、CHAR);数学数据类(INT、DINT、REAL);定时器类(S5TIME、TIME、DATE、TIME_OF_DAY)。,基本数据类型的数据长度不超过32位,可利用STEP7基本指令处理,能完全装入累加器中
13、。,2.复合数据类型,复合数据类型是基本数据类型的组合,其数据长度超过32位。因为数据长度超过累加器的长度,所以不能用装入指令一次把整个数据装入累加器,往往需要利用一些特殊的方法(如调用标准程序库中的系统功能块)来处理这些数据。复合数据类型如表6-2所示。,(二)数据块中数据类型的生成和使用 在复合数据类型中,日期_时间(DATE_AND_TIME)类型的名称、位数及格式是由操作系统定义的,用户不可改变,并且该数据类型在S7-300PLC中必须用标准功能块SFC才能访问。其他复合数据类型可在逻辑块变量声明表中或数据块中定义。,1.数组(ARRAY)的生成与访问,(1)建立数组。在逻辑块变量声明
14、表中或数据块中生成一个数组时,应指定数组的名称,例如PRESS,声明数组的类型时要使用关键字ARRAY,用下标(Index)指定数组的大小,下标的上、下限放在方括号中,数组的维数最多为6维,各维之间用逗号隔开,每一维的首、尾数字之间用双点隔开。,图6-3在数据块DB3中建立一个23数组,图6-3所示是一个在共享数据块DB3中建立的23的数组。图中各栏目的说明如下:,Address(地址):由STEP7自动分配的地址,它是变量占用的第一个字节地址,存盘时由程序编辑器产生。其中:“+”项表示与STRUCT(表示构造开始,END_STRUCT表示结 束构造)有关联的初始地址;“*”项表示一个数组元素
15、所占的地址字节数;“=”项表示该STRUCT要求的总的存储区字节数。,Name(名称):输入数组的符号名。如PRESS、Motor_data等。Type(数据类型):数组的数据类型。如BOOL、WORD、INT、STRACT、UDT等基本数据类型或复合数据类型,注意不能用ARRAY类型。Initial Value(初值):如果不想用缺省值可输入初值。如“30、22、-3、3(0)”(这里的3(0)表示后3个数组元素全为0,是一种简化的写法)。当数据块第一次存盘时,若用户没有明确地声明实际值,则初值将被用于实际值。Comment(注释):用于栏目的文字注释,最多可为80个字符。如“23数组”。(
16、2)访问数组。利用数组中指定元素的下标可访问数组中的元素数据,这时数据块名、数组名及下标一起使用并用英语的句号分开。如图6-5中声明的数组在DB3(假设符号名MOTOR)数据块中,可用以下符号地址或绝对地址访问存在DB3中数组的第3个元素(数据类型为整数INT,占用一个字或2个字节):MOTOR.PRESS1,3 或DB3.DBW5,(3)用数组作参数传递。数组可以在逻辑块变量声明表中或数据块中定义。如果在逻辑块变量声明表中把其形参定义为数组类型时,可将实际参数数组作为参数传送,但必须将整个数组而不是数组的某些元素作为参数传递。当然,在调用快时。也可以将某个数组的元素赋值给同一类型的参数。将数
17、组作为参数传递时,并不要求作为形参和实参的二个数组有相同的名称,但它们必须有同样的组织结构、相同的数据类型并按相同的顺序排列。例如都是由整数组成的23格式的数组。,2.结构(STRUCT)的生成与访问,结构(STRUCT)可以将不同数据类型的元素组合成一个整体,或者说结构是不同类型的数据组合。如图6-4所示。可以用基本数据类型、复合数据类型(包括数组、结构和用户定义的数据类型UDT)。但由数组或结构组成的结构最多只能嵌套8层。用户可以将过程控制中有关的数据统一组织在一个结构中,作为一个数据单元来使用,而不是使用大量的单个的元素,这为统一处理不同类型的数据或参数提供了方便。,(1)建立结构。结构
18、可以在数据块中定义,也可以在逻辑块变量声明表中定义。在图6-5中的数据块DB3中,定义了一个符号名为PRESS的数组和一个符号名为STACK的结构,还定义了一个独立的名为VOLTAGE的整数型变量。可以为结构中各元素设置初值(Initial Value)和加上注释(Comment)。,(2)访问结构 可以用结构中的元素的符号地址或绝对地址来访问结构中的元素。下面以图6-5为例来说明:设数据块DB3的符号名为TANK,结构的符号名已定义为STACK,则存放“总量(AMOUNT)”数据(数据类型为整数INT,占用一个字或2个字节)的符号地址为TANK.STACK.AMOUNT;存放“总量(AMOU
19、NT)”的绝对地址为DB3.DBW12。(3)用结构作参数传递 结构可以在逻辑块变量声明表中或数据块中定义。如果在逻辑块变量声明表中把其形参定义为结构类型时,可将实际参数结构作为参数传送,但必须将整个结构而不是结构的某些元素作为参数传递。当然,在调用快时。也可以将某个结构的元素赋值给同一类型的参数。将结构作为参数传递时,并不要求作为形参和实参的二个结构有相同的名称,但它们必须有同样的组织结构、相同的数据类型并按相同的顺序排列。,3.用户定义的数据类型(UDT)的生成与访问,用户定义的数据类型(UDT)是一种特殊的数据结构,由用户自己生成,定义好后在用户程序中多次使用。UDT也是由基本数据类型或
20、复合数据类型组成,只是其组合方式是由用户定义的。但它和结构(STRUCT)不同,UDT是一个模板,可以用来定义其他变量,使用前必须首先单独建立,并存放在称为UDT的特殊数据块中,故称为UDT块。定义好后,这个UDT块便可作为一个数据类型在多个数据块中使用它。,(1)建立UDT。建立一个名称为UDT3的用户定义的数据类型,其数据结构如下:,STRUCT Speed:INT Current:REALEND_STRUCT,可按以下步骤建立:,首先在SIMATIC管理器中选择S7项目的S7程序(S7 Program)的块文件夹(Blocks);然后执行菜单命令InsertS7 BlockData Ty
21、pe,如图6-6所示 在弹出的数据类型属性对话框Properties-Data Type内,可设置要建立的UDT属性,如UDT的名称(UDT1、UDT2)。设置完毕点击OK按钮确认。在SIMATIC管理器的右视窗内,双击新建立的UDT3图标,起动LAD/STL/FBD编辑器。如图6-7所示。在编辑器变量列表的第二行Address的下面“0.0”处单击鼠标右键,用快捷命令Declaration Line after Selection在当前行下面插入二个空白描述行。按图6-7所示的格式输入二个变量(Speed和Current)。最后单击保存按钮保存UDT3,这样就完成了UDT3的创建。,编辑窗口
22、内各列的含义如下:Address(地址):由STEP7自动分配的地址,它是变量占用的第一个字节地址,存盘时由程序编辑器产生。Name(名称):输入变量的符号名。如Speed、Current等。,Type(数据类型):变量的数据类型。单击鼠标右键,在快捷菜单Elementary Type内可选择。可用的数据类型有BOOL、WORD、DWORD、INT、DINT、REAL、S5TIME、TIME、DATE、TIME_ OF_DAY和CHAR。Initial Value(初值):为数据单元设定一个默认值。如果不输入初值,就以0为初值。Comment(注释):用于栏目的文字注释,最多可为80个字符。,
23、图6-8给出了一个在数据块DB2中使用UDT的例子。数据块DB2中定义了二个变量,一个为整数INT,另一个为用户定义的数据类型UDT3。由图6-8可见,在数据块中UDT的用法与基本数据类型类似。,(2)访问UDT。用符号地址或绝对地址两种方式可以访问UDT中的变量。例如图6-8 在DB2 中使用了UDT,设DB2定义的符号名为Process,访问UDT3的元素Speed,用符号地址为:Process.stack_2.Speed;用绝对地址为:DB2.DBW2。(3)数据块使用UDT 的优点。建立UDT,是为了将UDT 作为一种数据类型使用,以方便定义多个有相同数据结构的数据块,如图6-8 建立
24、的stack_2与图6-5 的STACK 相比,结构基本相同,但使用了UDT 使得数据块的建立过程显然要快得多。特别是多处使用同样的UDT 时,这一优点更加突出。当相同的数据结构需要多次使用时,往往先把它定义为UDT(UDT1UDT65535),再输入数据块中。把UDT作为一种数据类型来使用,可节省数据块的录入时间。因为使用UDT时,只需对它定义一次,就可以用它来产生大量的具有相同数据结构的数据块,可以用这些数据块来输入用于不同目的的实际数据。例如可以建立用于颜料混合配方的UDT,将这个UDT 指定给几个数据块DB,并使用这些数据块为特定任务存入不同的实际值,然后用它生成用于不同颜色配方的数据
25、组合。,(一)数据块的类型,数据块一般分为共享数据块(DB或Shared DB)和背景数据块(DI或Instance DB)两种。用户定义的数据类型也可以看成一种特殊的用户定义数据块(DB of Type)。,共享数据块又称为全局数据块,它不附属于任何逻辑块。在共享数据块中和全局符号表中声明的变量都是全局变量。用户程序中所有的逻辑块(FB、FC、OB 等)都可以使用(读写)共享数据块和全局符号表中的数据。背景数据块是专门指定给某个功能块(FB)或系统功能块(SFB)使用的数据块,它是FB 或SFB 运行时的工作存储区。当用户将数据块与某一功能块相连时,该数据块即成为该功能块的背景数据块,功能块
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STEP7 结构 程序设计
链接地址:https://www.31ppt.com/p-6521365.html