Transcript Module 3.9

第七章
IEC 语言 : 梯形图
Unity Training course V2.0 - Module 3.9 : Language ladder
1
概览
 梯形图语言的结构与继电器控制回路相似.
 电源母线位于LD编辑器的左边。左电源母线对应环路的相线 (L 梯形).
对于 LD 编程, 只有当 LD 对象连接至电源, 或连接到左电源母线时, 才
会被处理. 右电源母线对应于中性线. 所有线圈和 FFB 输出必须与它
连接,这样会产生电流.
 遵循 IEC 61131-3 标准
 所有对象连接在一起并与其它对象没有连接的组 (除电源母线以外) 称
为网络或梯级.
Unity Training course V2.0 - Module 3.9 : Language ladder
2
概览 (续)
 LD 编程语言是面向单元格的,如只有一个对象可以放置在一个单元格内
 一个 LD 程序段包括一个单页窗口
 该窗口以网格来划分不同的行和列
 每个 LD 程序段包含11-64 列和 17 - 2000 行
 LD 程序段段中对象的执行顺序由程序段内的数据流决定. 连接至左边电源母线的
梯级,其处理顺序为从上至下 (与左边电源母线连接). 程序段内互相独立的网络
按照位置顺序处理 (从上至下)
Unity Training course V2.0 - Module 3.9 : Language ladder
3
LD 段举例
Unity Training course V2.0 - Module 3.9 : Language ladder
4
执行顺序
 梯级执行从上至下,从左至右 (见例子)
 执行顺序由执行序号指示 (FFB框架右
上角的编号).
 注: 触点和线圈的执行编号一般不显示.
Unity Training course V2.0 - Module 3.9 : Language ladder
5
更改执行顺序
 网络的执行顺序和对象在网络中的执行顺序由一些规则来定义.
 在某些情况下, 系统建议的执行顺序可以修改.
 定义/更改网络执行顺序的步骤如下:
 使用连接而不是真实的参数
 网络位置
 定义/更改网络中对象执行顺序的步骤如下
 对象定位
Unity Training course V2.0 - Module 3.9 : Language ladder
6
梯形图连接
 LD对象之间的连接 (触点, 线圈和FFB 等.). 有 2 种
不同类型的连接:
 布尔连接 – 包括一个或多个段,连接布尔对
象 (触点, 线圈). 有 2 种布尔连接类型:
– 水平布尔连接 – 可以进行顺序触点和线圈
的切换.
– 垂直布尔连接 – 可以进行并行触点和线圈
的切换.

Unity Training course V2.0 - Module 3.9 : Language ladder
FFB 连接 - FFB 连接是连接FFB输入/输出与
其它对象的水平和垂直段的总称.
7
创建梯形图程序段
Unity Training course V2.0 - Module 3.9 : Language ladder
8
编程对象
 有 3 种方法访问梯形图编程对象:
 点击 “Edit”, 然后 “New”…….
Unity Training course V2.0 - Module 3.9 : Language ladder
9
编程对象 – 工具条
 有 3 种方法访问梯形图编程对象:
 点击 “Edit”, 然后 “New”…….
 使用梯形图对象工具条
Unity Training course V2.0 - Module 3.9 : Language ladder
10
编程对象
 有 3 种方法访问梯形图编程对象:
 点击 “Edit”, 然后 “New” …….
 使用梯形图对象工具条
 把光标放置在任何空的逻辑编辑单元, 然后右击选择对象组
Unity Training course V2.0 - Module 3.9 : Language ladder
11
编程对象 – 工具条
Unity Training course V2.0 - Module 3.9 : Language ladder
12
梯形图控制单元
 控制单元用于在 LD 程序段内执行跳转和从子程序 (SRx) 或导出功能
块(DFB) 中返回至主程序. 控制元素占一个单元.
名称
表示
描述
Jump
NEXT
当左侧连接的状态为1时,能够执行从当前位置到一个标号的跳转。如需实现一
个无条件的跳转,则跳转对象应该直接与左电源母线相连接。如需实现一个有条
件的跳转,跳转对象须放置在一序列开关对象的后面。
Tag
LABEL:
标号(跳转目标)以末端带冒号的文本对象来指示。该文本对象最多包含32各字
符,并且在整个程序段中必须唯一。它的命名必须遵循通用的命名规则。跳转标
号只能够放置在电源母线右侧的第一个单元中。
注意:跳转标号不能穿过网络,例如,一条从跳转标号到程序段右侧的假想线不
能够被另外一个对象穿过。这也适用于布尔连接和FFB连接。
Return
RETURN
每一个子程序和每一个DFB在被处理完毕之后会退回到调用它的主程序当中。如
果子程序/DFB需要提前退出,可以通过Return对象强制返回到主程序当中。如果
左侧连接的状态为1,子程序和DFB中的Return指令被执行,逻辑解算返回到主
程序中。Return对象只能够用于DFB或者子程序当中,不能用于主程序。要实现
一个有条件的返回, Return对象须放置在一序列开关对象的后面。
Unity Training course V2.0 - Module 3.9 : Language ladder
13
操作 & 比较功能块
 除了 IEC 61131-3 定义的对象,还有两个其它运算块用于执行ST指令和ST表达式以及用
于简单比较操作. 这些运算块只在LD 编程语言中. 它们是:
 操作块
 比较块
Unity Training course V2.0 - Module 3.9 : Language ladder
14
操作块
 操作块只在 LD 编程语言中使用. 它们用于执行 ST 指令. 当左侧连接状态为 1
时, 执行块中 ST 指令.
 除了以下控制指令外,所有的 ST 指令都可以使用:
– RETURN,
IF,
FOR
– JUMP,
CASE,
etc.)
 对于操作块, 左侧连接的状态传递到右侧连接 (不考虑ST指令的结果).


Unity Training course V2.0 - Module 3.9 : Language ladder
操作块可以在任何单元中放置. 操作块占用 1 行和 4 列.
如果操作块放置在对象已经占用的单元中, 则会返回一个错误信息.
15
比较块
 比较块只用于 LD 编程语言. 它们用于执行ST编程语言中的比较表达式 (<, >, <=,
>=, =, <>). (注: ST 表达式可实现相同功能)
 如果左侧连接状态为 1, 比较结果为 1 ,则右侧连接的状态也为 1.
 比较块可以放在任意单元格中,除了与右侧电源母线相邻的最后一个单元
 比较功能块需要 1 行和 2 列.
 如果比较块放置在已经被其它对象占用的单元当中,将会返回一个错误信息.
 如果比较块被放置在两个相邻的对象之间,并且它们的数据类型为BOOL类型,
则比较块会自动产生与左右相邻对象的连接
Unity Training course V2.0 - Module 3.9 : Language ladder
16
边沿检测对象
 LD 对象的不同实现 (如系统调用vs. FB 调用) 需要使用StateRam 变
量 (0x/1x 寄存器).
 一个扫描周期内CPU可能对 0x/1x 寄存器进行多次写访问,因此
可以产生不同的在线行为.
– 上升沿检测的开关
– 下降沿检测开关
Unity Training course V2.0 - Module 3.9 : Language ladder
17
边沿检测对象示例
Unity Training course V2.0 - Module 3.9 : Language ladder
18
梯形图
 网格代表所有对象包括连接和短路。(此例代表一种夸张的情况)
Unity Training course V2.0 - Module 3.9 : Language ladder
19
减少交叉
Unity Training course V2.0 - Module 3.9 : Language ladder
20
避免带短路和连接的岛 :
 线圈直接连接至右侧电源母线
 垂直短接与水平连接的性质一样
Unity Training course V2.0 - Module 3.9 : Language ladder
21
避免交叉连接和向后连接
 向后连接需要交叉, 因为被选择的线圈必须与电源母线相连.
Unity Training course V2.0 - Module 3.9 : Language ladder
22
实 验
Unity Training course V2.0 - Module 3.9 : Language ladder
23
实验一
 LD编程
步骤
动作
1
在 Mast 任务中,右键 Sections 文件夹,使用 New Sections 创建一个新的
代码段,名称为 Conveyor,选用 LD 语言进行编程。
2
添加一个常开触点,双击触点,从 Contact Properties 对话框中单击
钮,从变量列表当中选择 Run 变量,关联到触点上。
3
仿照步骤 2 再加一个常开触点,并且将变量 BOX关联到该触点上。
4
添加一个常闭触点,按照步骤 2 将变量 Stop 关联到该常闭触点上,将三个
触点串连在一起。
5
添加一个常开触点,将变量 RUNNING 关联到该触点上,并且将该触点并联
到 Box 触点上。
6
点击
按钮,点击 FFB Type 字段的
按钮,从功能库 Libset -> Base
Lib -> Timers & Counters 选择 TON 类型,点击确定把该定时器放置到编
辑器当中。
7
将定时器模块的 IN 管脚与 Stop 触点相连接,PT 管脚设为 T#5s,ET 管脚
与变量 TIMER1相关联。
8
添加一个输出线圈,将该线圈与变量 Running 相关联。
9
Running 线圈的左端与定时器模块的 Q 管脚相连,右端与编辑器的右电源
母线相连接。
Unity Training course V2.0 - Module 3.9 : Language ladder
按
24
 LD编程(续)
步骤
动作
10
换行加入一个上升沿检测触点,与变量 running 相关联。
11
仿照步骤 6 加入一个计数功能块,功能块的类型为 CTU_UDINT。将该计数
器的CU 管脚与 running 的上升沿检测触点相连接,R 管脚与变量 Reset1
相连接,PV 值设为10000,CV 管脚与变量 counter1相连接。
12
换行加入一个 COMP 块 ,在 ST Expression 中键入 running。
13
加入一个 OPER 块,在 ST Statement 中键入 flash := %s6。
14
将COMP 块的输出与 OPER 块的输入相连接,并将OPER 块的输出与编辑
器的右电源母线相连接。
15
在 Build 菜单下面选择 Analyze 命令,对当前代码段进行语法分析。如有错
误或者警告,双击输出窗口中的信息行对相应的代码进行修改,之后重新进
行 Analyze 的操作,直到代码正确无误为止。
Unity Training course V2.0 - Module 3.9 : Language ladder
25
 LD编程代码示例
Unity Training course V2.0 - Module 3.9 : Language ladder
26