《分布式控制第四章程序设计方法.》由会员分享,可在线阅读,更多相关《分布式控制第四章程序设计方法.(135页珍藏版)》请在金锄头文库上搜索。
1、Date: 2015/6/3 Page: 1 Date: 2015/6/3 Page: 2 第4章 S7程序结构与程序设计 4.1 S7 CPU中的程序 4.2 数据块中的数据存储 4.3 逻辑块(FC和FB)的结构及编程 4.4 编辑并调用无参功能(FC)分部程序设计 4.5 编辑并调用有参功能(FC)结构化程序设计 4.6 编辑并调用无静态参数的功能块(FB) 4.7 编辑并调用有静态参数的功能块(FB) 4.8 使用多重背景结构化程序设计 4.9 思考与练习 返回首页 Date: 2015/6/3 Page: 3 4.1 S7 CPU中的程序 4.1.1 用户程序中的块结构 4.1.2
2、用户程序结构 4.1.3 I/O过程映像 4.1.4 程序循环执行 返回本章 Date: 2015/6/3 Page: 4 4.1.1 用户程序中的块结构 返回本节 Date: 2015/6/3 Page: 5 4.1.2 用户程序结构 线性程序(线性编程) 分部式程序(分部编程、分块编程) 结构化程序(结构化编程或模块化编程) 返回本节 Date: 2015/6/3 Page: 6 1. 线性程序(线性编程) 所谓线性程序结构,就是将整个用户程序连续放置在一 个循环程序块(OB1)中,块中的程序按顺序执行,CPU通过 反复执行OB1来实现自动化控制任务。这种结构和PLC所代替 的硬接线继电器
3、控制类似,CPU逐条地处理指令。事实上所 有的程序都可以用线性结构实现,不过,线性结构 一般适用于相对简单的程序编写。 返回上级 Date: 2015/6/3 Page: 7 2.分部式程序(分部编程、分块编程) 所谓分部程序,就是将整个程序按任务分成若干个部分 ,并分别放置在不同的功能(FC)、功能块(FB)及组织块 中,在一个块中可以进一步分解成段。在组织块OB1中 包含按顺序调用其他块的指令,并控制程序执行。 在分部程序中,既无数据交换,也不存在重复利用的程 序代码。功能(FC)和功能块(FB)不传递也不接收参数, 分部程序结构的编程效率比线性程序有所提高,程序测试也 较方便,对程序员的
4、要求也不太高。对不太复杂的 控制程序可考虑采用这种程序结构。 返回上级 Date: 2015/6/3 Page: 8 3. 结构化程序(结构化编程或模块化编程) 所谓结构化程序,就是处理复杂自动化控制任务的过程 中,为了使任务更易于控制,常把过程要求类似或相关的功 能进行分类,分割为可用于几个任务的通用解决方案的小任 务,这些小任务以相应的程序段表示,称为块(FC或FB)。 OB1通过调用这些程序块来完成整个自动化控制任 务。 结构化程序的特点是每个块(FC或FB)在OB1中可能会 被多次调用,以完成具有相同过程工艺要求的不同控制对 象。这种结构可简化程序设计过程、减小代码长度、提高 编程效率
5、,比较适合于较复杂自动化控制任务的设计。 返回上级 Date: 2015/6/3 Page: 9 4.1.3 I/O过程映像 返回本节 Date: 2015/6/3 Page: 10 4.1.4 程序循环执行 返回本节 Date: 2015/6/3 Page: 11 4.2 数据块中的数据存储 4.2.1 数据存储区 4.2.2 数据块 4.2.3 数据块的数据结构 4.2.4 建立数据块 4.2.5 访问数据块 返回本章 Date: 2015/6/3 Page: 12 4.2.1 数据存储区 数据以用户程序变量的形式存储,且具有唯一性。数据 可以存储在输入过程映像存储器(PII)、输出过程映
6、像存 储器(PIQ)、位存储器(M)、局部数据堆栈(L堆栈)及 数据块(DB)中。可以采用基本数据类型、复杂数据类 型或参数类型。 根据访问方式的不同,这些数据可以在全局符号表或共 享数据块中声明,称为全局变量;也可以在OB、FC和FB的变 量声明表中声明,称为局部变量。当块被执行时,变量将固 定地存储在过程映像区(PII或PIQ)、位存储器区 (M)、数据块(DB)或局部堆栈(L)中。 返回本节 Date: 2015/6/3 Page: 13 4.2.2 数据块 数据块定义在S7 CPU的存储器中,用户可在存储器中建 立一个或多个数据块。每个数据块可大可小,但CPU对数据 块数量及数据总量有
7、限制。 数据块(DB)可用来存储用户程序中逻辑块的变量数据 (如:数值)。与临时数据不同,当逻辑块执行结束或 数据块关闭时,数据块中的数据保持不变。 用户程序可以位、字节、字或双字操作访问数据块中 的数据,可以使用符号或绝对地址。 返回本节 Date: 2015/6/3 Page: 14 1.数据块的分类 共享数据块又称全局数据块。用于存储全局数据,所有 逻辑块(OB、FC、FB)都可以访问共享数据块存储的 信。 背景数据块用作“私有存储器区”,即用作功能块(FB) 的“存储器”。FB的参数和静态变量安排在它的背景数据块 中。背景数据块不是由用户编辑的,而是由编辑器 生成的。 用户定义数据块(
8、DB of Type)是以UDT为模板所生成 的数据块。创建用户定义数据块(DB of Type)之前,必须 先创建一个用户定义数据类型,如UDT1,并在 LAD/STL/FBD S7程序编辑器内定义。 返回上级 Date: 2015/6/3 Page: 15 2.数据块寄存器 CPU有两个数据块寄存器:DB和DI寄存器。这样,可以 同时打开两个数据块。 返回上级 Date: 2015/6/3 Page: 16 4.2.3 数据块的数据结构 在STEP 7中数据块的数据类型可以采用基本数据类 型、复杂数据类型或用户定义数据类型(UDT)。 基本数据类型 复杂数据类型 用户定义数据类型 返回本节
9、 Date: 2015/6/3 Page: 17 基本数据类型 根据IEC1131-3定义,长度不超过32位,可利用STEP 7 基本指令处理,能完全装入S7处理器的累加器中。基本数 据类型包括: 位数据类型:BOOL、BYTE、WORD、DWORD、CHAR 数字数据类型:INT、DINT、REAL 定时器类型:S5TIME、TIME、DATE、TIME_OF_DAY 返回上级 Date: 2015/6/3 Page: 18 复杂数据类型 复杂数据类型只能结合共享数据块的变量声明使用。复 杂数据类型可大于32位,用装入指令不能把复杂数据类型完 全装入累加器,一般利用库中的标准块(“IEC”S
10、7程序)处 理复杂数据类型。复杂数据类型包括: 时间(DATE_AND_TIME)类型 矩阵(ARRAY)类型 结构(STRUCT)类型 字符串(STRING)类型 返回上级 Date: 2015/6/3 Page: 19 用户定义数据类型(UDT) STEP 7允许利用数据块编辑器,将基本数据类型和复 杂数据类型组合成长度大于32位用户定义数据类型(UDT :User-Defined dataType)。用户定义数据类型不能存储 在PLC中,只能存放在硬盘上的UDT块中。可以用用户定义 数据类型作“模板”建立数据块,以节省录入时间。可用于建 立结构化数据块、建立包含几个相同单元的 矩阵、在带
11、有给定结构的FC和FB中建立局部变量。 返回上级 Date: 2015/6/3 Page: 20 【4-2-1】 创建用户定义数据类型:UDT1。 创建一个名称为UDT1的用户定义数据类型,数据结构如 下,则可按以下几个步骤完成。 返回上级 Date: 2015/6/3 Page: 21 【4-2-1】 创建 用户定义 数据类型 返回上级 Date: 2015/6/3 Page: 22 【4-2-1】 编辑UDT1 返回上级 Date: 2015/6/3 Page: 23 4.2.4 建立数据块 在STEP 7中,为了避免出现系统错误,在使用数据块之 前,必须先建立数据块,并在块中定义变量(包
12、括变量符号 名、数据类型以及初始值等)。数据块中变量的顺序及类型 决定了数据块的数据结构,变量的数量决定了数据块的大 小。数据块建立后,还必须同程序块一起下载到CPU中,才 能被程序块访问。 建立数据块 定义变量并下载数据块 返回本节 Date: 2015/6/3 Page: 24 方法1:用SIMATIC Manager创建数据块。 返回上级 Date: 2015/6/3 Page: 25 方法2:用LAD/STL/FBD S7 程序编辑器创建数据块。 返回上级 Date: 2015/6/3 Page: 26 新DB类型选择窗口 返回上级 Date: 2015/6/3 Page: 27 编辑
13、数据块(变量定义) 变量定义完成 后,应单击保存按 钮保存并编译(测 试)。如果没有错 误则需要单击下载 按钮,像逻辑块一 样,将数据块下载 到CPU。 返回上级 Date: 2015/6/3 Page: 28 4.2.5 访问数据块 在用户程序中可能存在多个数据块,而每个数据块的数 据结构并不完全相同,因此在访问数据块时,必须指明数据 块的编号、数据类型与位置。如果访问不存在的数据单元或 数据块,而且没有编写错误处理OB块,CPU将进入STOP模 式。 寻址数据块 访问数据块 直接访问数据块 返回本节 Date: 2015/6/3 Page: 29 寻址数据块 返回上级 Date: 2015
14、/6/3 Page: 30 访问数据块 在STEP 7中可以采用传统访问方式,即先打开后访问; 也可以采用完全表示的直接访问方式。 【例4-2-2】 打开并访问共享数据块。 返回上级 Date: 2015/6/3 Page: 31 访问数据块 用指令“OPN DB.”打开共享数据块(自动关闭之前打 开的共享数据块),如果DB已经打开,则可用装入(L)或 传送(T)指令访问数据块。 【例4-2-3】 打开并访问背景数据块。 返回上级 Date: 2015/6/3 Page: 32 直接访问数据块 所谓直接访问数据块,就是在指令中同时给出数据块的 编号和数据在数据块中的地址。可以用绝对地址,也可以用 符号地址直接访问数据块。 用绝对地址直接访问数据块,如: 用符号地址直接访问数据块 ,如: 返回上级 Date: 2015/6/3 Page: 33 功能(FC)、功能块(FB)和组织块(OB)统称为逻辑 块(或程序块)。功能块(FB)有一个数据