长沙工控帮教育科技有限公司整理 多信息。
6.1 轻松设计用户程序
创建处理自动化任务的用户程序时,需要将程序指令插入代码块(OB、FB 或 FC)中。
为用户程序选择结构类型
根据实际应用要求,可选择线性结构或模块化结构来创建用户程序。
● 线性程序按顺序逐条执行处理自动化任务的所有指令。 通常,线性程序将所有程序指 令都放入一个程序循环 OB (如 OB 1) 中以循环执行该程序。
● 模块化程序调用可执行特定任务的特定代码块。 要创建模块化结构,需要将复杂的自 动化任务划分为与过程所执行的功能任务相对应的更小的次级任务。 每个代码块都为 各个次级任务提供程序段。 通过从另一个块中调用其中一个代码块来构建程序。
线性结构: 模块化结构:
2% )%
)&
2%
通过设计 FB 和 FC 执行通用任务,可创建模块化代码块。 然后可通过由其它代码块调用 这些可重复使用的模块来构建用户程序。 调用块将设备特定的参数传递给被调用块。 当 一个代码块调用另一个代码块时,CPU 会执行被调用块中的程序代码。 执行完被调用块 后,CPU 会继续执行调用块, 并继续执行该块调用之后的指令。
还可以将 OB 分配给中断事件。 发生该事件时,CPU 会执行相关 OB 中的程序代码。OB 的执行完成后,CPU 会在发生中断事件的时间点在用户程序中恢复执行,而该点可能在 扫描过程中的任何位置。
长沙工控帮教育科技有限公司整理
简化了编程
简化了编程 6.1 轻松设计用户程序
入门手册
设备手册, 04/2012, A5E02486780-05 95
6.1.1 使用 OB 组织用户程序
组织块为程序提供结构。 它们充当操作系统和用户程序之间的接口。 OB 是由事件驱动 的。 事件(如诊断中断或时间间隔)会使 CPU 执行 OB。某些 OB 预定义了起始事件和 行为。
程序循环 OB 包含用户主程序。 用户程序中可包含多个程序循环 OB。 RUN 模式期间,
程序循环 OB 以最低优先级等级执行,可被其它各种类型的程序处理中断。 (启动 OB 不会中断程序循环 OB,因为 CPU 在进入 RUN 模式之前执行启动 OB。) 完成程序循环 OB 的处理后,CPU 会立即重新执行程序循环 OB。 该循环处理是用于 PLC 的“正常”处 理类型。 对于许多应用,整个用户程序位于一个 OB 中,如默认的程序循环 OB 1。
可创建其它 OB 以执行特定的功 能,如执行启动任务、处理中断 和错误或以特定的时间间隔执行 特定程序代码。
使用“添加新块”(Add new block) 对话框在用户程序中创建新的 OB。
CPU 根据 分配给每个 OB 的优先级 (页 58)来确定处理中断事件的顺序。
可修改 OB 的运行参数。例如,可为延时 OB 或循环中断 OB 组态时间参数。
在某等级的 OB 内创建附加 OB: 可为用户程序创建多个 OB,甚至可以为程序循环和启 动 OB 等级创建。 使用“添加新块”(Add new block) 对话框创建 OB。输入 OB 的名称并提 供 200 或更大的数作为 OB 编号。
长沙工控帮教育科技有限公司整理
简化了编程
简化了编程 6.1 轻松设计用户程序
入门手册
设备手册, 04/2012, A5E02486780-05 97
下图显示了三次调用同一个 FB 的 OB,方法是针对每次调用使用一个不同的数据块。 该
简化了编程
6.1 轻松设计用户程序
6.1.4 创建新代码块
1. 打开“程序块”(Program blocks) 文件夹。
2. 双击“添加新块”(Add new block)。
3. 在“添加新块”(Add new block) 对话框中单击要添加的块的类 型。例如,单击“功能 (FC)”图 标来添加 FC。
4. 通过从下拉菜单中选择“LAD”
为代码块指定编程语言。
5. 单击“确定”(OK) 将块添加到项 目中。
选中“添加新对象并打开”(Add new and open) 选项(默认),在项目视图中打开代码块。
6.1.5 从一个代码块调用另一个代码块
用户可以很容易地使用用户程序中的任何代 码块(OB、FB 或 FC)调用 CPU 中的 FB 或 FC。
1. 打开将调用另一个块的代码块。
2. 在项目树中,选择要调用的代码块。
3. 将该块拖到所选程序段中以创建一个 Call 指令。
说明
用户程序无法调用 OB,因为 OB 是 由事件驱动的 (页 58)。 CPU 接收到事件时,将 开始执行 OB 进行响应。
长沙工控帮教育科技有限公司整理
简化了编程 6.2 易于使用的编程语言
入门手册
设备手册, 04/2012, A5E02486780-05 99
6.2 易于使用的编程语言
STEP 7 为 S7-1200 提供以下标准编程语言:
● LAD(梯形图逻辑)是一种图形编程语言。 它使用基于电路图的表示法。
● FBD(功能块图)是基于布尔代数中使用的图形逻辑符号的编程语言。
● SCL(结构化控制语言)是一种基于文本的高级编程语言。
创建代码块时,应选择该块要使用的编程语言。
用户程序可以使用由任意或所有编程语言创建的代码块。
6.2.1 梯形图 (LAD)
电路图的元件(如常闭触点、常开触点和线圈)相互连接构成程序段。
要创建复杂运算逻辑,可插入分支以创建并行电路的逻辑。 并行分支向下打开或直接连 接到电源线。 用户可向上终止分支。
LAD 向多种功能(如数学、定时器、计数器和移动)提供“功能框”指令。
STEP 7 不限制 LAD 程序段中的指令(行和列)数。
说明
每个 LAD 程序段都必须使用线圈或功能框指令来终止。
长沙工控帮教育科技有限公司整理
简化了编程
6.2 易于使用的编程语言
创建 LAD 程序段时请注意以下规则:
● 不能创建可能导致反向能流的分支。
+ *
( )
& ' =
%
$
● 不能创建可能导致短路的分支。
& =
%
$
6.2.2 功能块图 (FBD)
与 LAD 一样,FBD 也是一种图形编程语言。 逻辑表示法以布尔代数中使用的图形逻辑符 号为基础。
要创建复杂运算的逻辑,在功能框之间插入 并行分支。
算术功能和其它复杂功能可直接结合逻辑框表示。
STEP 7 不限制 FBD 程序段中的指令(行和列)数。
长沙工控帮教育科技有限公司整理
简化了编程 6.2 易于使用的编程语言
入门手册
设备手册, 04/2012, A5E02486780-05 101
6.2.3 SCL 概述
结构化控制语言 (Structured Control Language, SCL) 是用于 SIMATIC S7 CPU 的基于 PASCAL 的高级编程语言。 SCL 支持 STEP 7 的块结构。还可以将用 LAD 和 FBD 编写 的程序块包括在用 SCL 编写的程序块中。
SCL 指令使用标准编程运算符,例如,用 (:=) 表示赋值,算术功能(+ 表示相加,- 表示 相减,* 表示相乘,/ 表示相除)。 SCL 使用标准 PASCAL 程序控制操作,如 IF-THEN-ELSE、CASE、REPEAT-UNTIL、GOTO 和 RETURN。 SCL 编程语言的语法元素可以 使用 PASCAL 的任何引用方式。 许多 SCL 的其它指令(如定时器和计数器)与 LAD 和
"Data_block_1".Tag := #A; 为数据块变量赋值 IF #A > #B THEN "C" := #A; IF-THEN 语句的条件
简化了编程
6.2 易于使用的编程语言
可以直接在代码部分输入指令的 SCL 代码。 要了解更复杂的指令,只需从指令树拖动 SCL 指令并将其放入程序中。 也可以使用任意文本编辑器创建 SCL 程序,然后将相应文 件导入 STEP 7 中。
在 SCL 代码块部分,可以声明下列类型的参数:
● Input、Output、InOut 和 Ret_Val: 这些参数定义代码块的输入变量、输出变量和返 回值。 执行代码块期间局部使用此处输入的变量名称。 通常不会使用变量表中的全 局变量名称。
● 静态(仅适用于 FB,上述示例适用于 FC): 静态变量用于在背景数据块中存储静态 中间结果。 静态数据会一直保留,直到多个周期后被覆盖。 块的名称(在此代码块 中作为多重背景调用)也存储在静态局部数据中。
● 温度: 这些参数是执行代码块期间使用的临时变量。
如果从其它代码块调用 SCL 代码块,该 SCL 代码块的参数会显示为输入或输出。
本示例中,“Start”和“On”变量(来自项目变量表)相当于 SCL 程序声明表中的
长沙工控帮教育科技有限公司整理
简化了编程