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