资源描述
第5章S7-300程序结构与程序设计,电气控制技术与PLC应用,2,5.1S7-300CPU中的程序S7-300CPU程序分操作系统和用户程序:操作系统:由PLC的生产厂家提供,完成PLC起动、刷新、调用用户程序、中断/诊断/通信处理等任务。用户程序:用户为完成特定的任务而编写的应用程序,由STEP7编写,编译后下载到PLC的CPU中。,第5章S7-300程序结构与程序设计,3,5.1.1用户程序中的块STEP7用文件块的形式管理用户编写的程序及程序运行所需的数据,组成结构化的用户程序。结构化编程可使程序组织明确、结构清晰、易于阅读和修改。STEP7用户程序块:组织块(OB)功能块(FB)功能(FC)数据块(DB),4,1.组织块OBOB1是主程序循环块,在任何情况下都必须存在。OB100OB102用于系统初始化只上电执行一次。OB10OB17用于日期时间中断CPU属性设置。OB30OB38用于循环中断CPU属性设置。,OB10.17日期时间中断,OB80.87异步错误,OB20.23延时中断,定期的程序执行,OB30.38循环中断,事件驱动的程序执行,OB40.47硬件中断,OB121,122同步错误,5,2.功能块FB和功能FCFB、FC是用户“子程序”;FB带“记忆”功能,数据记忆在FB带有的背景数据块DB(InstanceDataBlock)中;在FB块结束时数据继续保持,即被“记忆”。功能FC不带“记忆”,没有背景数据块。3.系统功能块SFB和系统功能SFCSFB和SFC集成在S7功能程序库中;用户可以直接调用,但不能修改。,6,4.数据块DBDB是用户定义的用于存取数据的存储区,可以被打开或关闭。DB可以是某个FB的背景数据块;也可以是通用的全局数据块,用于FB或FC的数据存储。数据块分类:全局(共享)数据块背景数据块用户定义数据块。,7,8,5.FC和FB的区别FB带自己的存储区(背景数据块);FC不带存储区;调用FB可以通过背景数据块传递参数,因此必须指定一背景数据块;调用FC必须通过实参和形参互传参数。,9,块调用的分层结构,STEP7的块,11,5.1.2用户程序设计方法:1.线性化编程把用户程序全部放置在一个循环程序块(OB1)中,块中的程序按顺序逐条执行;CPU通过反复执行OB1来实现自动化控制任务。这种结构和PLC所代替的硬接线继电器控制类似。2.模块化编程(分部式)把整个程序按任务分成若干个部分,并分别放置在不同的功能(FC)、功能块(FB)及组织块中;在一个块中可以进一步分解成段。在组织块OB1中包含按顺序调用这些块的指令,并控制程序执行。,12,3.结构化编程根据控制任务,把过程要求类似或相关的功能进行分类,分割为几个通用的小任务,这些小任务用相应的程序段表示,称为块(FC或FB)。OB1通过调用这些程序块来完成自动化控制任务。特点:每个块(FC或FB)在OB1中可能会被多次调用,以完成相同工艺要求但不同参数的控制对象。简化程序设计过程、减小代码长度、提高编程效率。适合较复杂的自动化控制任务的设计。,13,5.2数据块中的数据存储5.2.1数据存储区数据以变量形式存储,且具唯一。数据可以存储在PII、PIQ、M、L堆栈和DB中。数据可以基本数据类型、复杂数据类型或参数类型。全局变量符号表或共享数据块中声明的变量。局部变量OB、FC和FB的变量声明表中的变量。,14,5.2.2数据块1.数据块的分类符号表:只为方便程序阅读,用于给变量设定名称;符号表中变量为全局变量,可在程序所有地方使用。全局(共享)数据块:存储全局数据,所有逻辑块(OB、FC、FB)都可以访问共享数据块的数据。背景数据块:私有存储器区,只用作FB的存储器。背景数据块中包含了FB的参数和静态变量。背景数据块由编辑器生成,不能由用户编辑。用户定义数据块:以UDT为模板所生成的数据块。,15,2.数据块寄存器CPU有两个数据块寄存器:DB(共享数据块):DBX、DBB、DBW、DBDDI(背景数据块):DIX、DIB、DIW、DID可以同时被打开。,16,5.2.3数据块的数据结构数据块中含有不同数据类型的数据;在STEP7数据块中的数据包括:基本数据类型复杂数据类型用户定义数据类型(UDT),17,5.2.4建立数据块STEP7中,只要使用数据块就必须先建立数据块,并在块中定义变量。数据块定义:变量名、数据类型以及初始值等。数据块中变量的顺序及类型决定了数据块的数据结构,变量的数量决定了数据块的大小。说明:数据块建好后,必须同程序块一起下载到CPU中才能被程序访问,否则CPU进入STOP状态。,18,方法1:用SIMATICManager创建数据块。,19,方法2:用S7程序编辑器创建数据块。,20,新建DB类型选择窗口,21,编辑共享数据块(变量定义),22,5.2.5访问数据块用户程序有多个数据块,在访问数据块时,必须指明数据块的编号、数据类型与位置。如果访问不存在的数据单元或数据块,又没有编写错误处理OB块,CPU将进入STOP模式。,23,数据块的寻址,24,1.打开数据块然后访问数据可用装入L或传送T指令访问已经打开的DB块。【例5-2-2】打开并访问共享数据块。,25,【例5-2-3】打开并访问背景数据块。,26,2.直接访问数据块指令中直接给出数据块的编号和数据在数据块中的地址。可以用绝对地址,也可用符号地址直接访问数据块。用绝对地址直接访问数据块:,用符号地址直接访问数据块:,27,5.3逻辑块(FC和FB)的结构及编程逻辑块FC、FB和OB。FB:带有背景数据块,其数据结构与该FB参数相同。FB调用结束后数据保存在背景数据块中。FC:不带背景数据块,FC调用结束后数据不保存。OB:由操作系统直接调用。,28,5.3.1逻辑块(FC和FB)的结构逻辑块由变量声明表、代码段及其属性等部分组成。,29,FB的变量声明表,FC的变量声明表,30,1.局部变量声明表逻辑块上部都有变量声明表局部变量声明表。,局部数据分为参数和局部变量。局部变量包括静态变量和临时变量。,31,数据块数据的存储:FB:带有背景数据块,内部包含参数变量,FB的运行结果保存在背景数据块中。在调用FB时,若没有提供实参,则功能块使用背景数据块中的数值。FC:不带背景数据块,不能使用静态变量。在调用FC时,必须使用实参。OB:调用OB由操作系统管理的,用户不能参与。,32,2.逻辑块局部变量的数据类型基本数据类型、复式数据类型、参数类型。参数类型包括定时器、计数器、块的地址或指针等。,33,局部变量的设置如下:,34,5.3.2逻辑块(FC和FB)的编程对逻辑块编程时必须编辑下列三个部分:变量声明:定义形参、静态变量(FC没有)和临时变量;选择变量名(Name)、数据类型(DataType);如果需要,设置变量初始值(InitialValue)、加注释(Comment)。局部变量的地址(Address)由STEP7自动产生。代码段:用不同编程语言对PLC进行编程。块属性:块属性包含一些附加信息。,35,1.临时变量的定义和使用,36,2.形式参数的定义形式参数有3种:IN:只读,输入OUT:只写,输出IN_OUT:读/写,输入/输出,37,38,3.编写控制程序编写逻辑块(FC和FB)程序时,可以用以下两种方式使用局部变量:使用变量名:变量名前加前缀“#”。使用局部变量的地址,只适用于背景数据块。在调用FB块时,要指定背景数据块。,39,梯形图编程的基本规则触点只能与左母线相连,不能与右母线相连;线圈只能与右母线相连,不能直接与左母线相连,右母线可以省略;线圈可以并联,不能串联连接;指令执行顺序:从左到右,从上到下。,
展开阅读全文