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