资源描述:
控制与检测 组合机床与自 动化加工技术 文 章 编 号 1 0 0 12 2 6 5 2 0 1 0 1 10 0 4 00 4 L i n u x 环境下软 P L C开发系统的设计与实现 木 陈雪 , 刘荫忠。 , 杨 东升。 1 . 中国科 学院 沈 阳计算技 术研 究所 , 沈 阳 1 1 0 1 7 1 ; 2 . 中国科 学院研 究生院 , 北京 1 0 0 0 4 9 摘 要 文章主要 介 绍 了在 L i n u x操作 系统环 境 下 , 软 P L C梯 形 图的 编辑 技 术 。采 用 基 于 面 向对 象 的 方法 , 在 分析 了梯形 图组成 元 素的基础 上 , 阐述 了设 计过 程 中使 用的类 层 次结 构 , 并根据 梯 形 图动 态 存 储 的特 点 , 描 述 了存储梯 形 图元素及 元素 间拓扑 关 系的数据 结构 。在 L i n u x 操 作 系统平 台上 , 对 系 统的各个设计阶段进行 了测试 , 测试结果表 明所设计的开发 系统能够正确 实现编辑、 转换和编译功 能 , 将 生成 的 目标代 码 C语 言程序 最终编 译成 目标逻辑 组件 , 被运行 系统调 用执 行 。 关 键词 梯形 图; 编辑 ; 类层 次 ; 存储 结 构 ; C语 言程序 中图分 类号 T H1 6; T G 6 5 文献 标识码 A The De s i g n a nd Re a l i z a t i o n o f So f t PLC De v e l op i n g Sy s t e m i n Li nux Env i r o nme n t CHEN Xu e 一,LI U Yi n z h o n g ,YANG Do n g s h e n g 1 . S h e n y a n g I n s t i t u t e o f C o mp u t i n g T e c h n o l o g y,C h i n e s e Ac a d e my o f S c i e n c e,S h e n y a n g 1 1 0 1 7 1 ,Ch i n a ; 2 . G r a d u a t e Un i v e r s i t y o f C h i n e s e A c a d e my o f S c i e n c e s ,B e i j i n g 1 0 0 0 4 9,C h i n a Ab s t r a c t Thi s p a p e r ma i nl y i n t r o d u c e s t he e d i t ing t e c h n i q ue o f l a d de r d i a g r a m in t h e Li n u x e n vi r o nme n t . Th i s a r t i c l e e x po u n ds t h e c l a s s h i e r a r c h y in t h e d e s i g n p r o c e s s b a s e d o n a n a l ys ing t h e e l e me n t s of l a d d e r d i a g r a m u s i n g t h e o b j e c t - o r i e n t e d me t h o d . A c c o r d ing t o t h e d y n a mi c s t o r a g e ’ s c h a r a c t e r i s t i c , i t a l s o d e - s c r i b e s t h e d a t a s t r uc t ur e s whi c h me mo r y t he e l e me n t s a n d t o p o l o g y r e l a t i o n s h i p s b e t we e n e l e me n t s . Te s t s we r e c a r r i e d o u t in d i f f e r e n t p ha s e s o f d e s i gn ing i n t he Li n ux pl a t f o r m, a n d t h e r e s ul t s s h o w t h a t t h e d e v e l o ping s ys t e m e o mpl e t e s t he f u nc t i o n of e d i t i ng a n d, t r a n s f o rm a n d c o mpi l ing c o r r e c t l y. C pr o g r a ms fi- n a l l y a r e c o mp i l e d t o t h e o b j e c t l o ff m u n i t wh i c h a r e c a l l e d a n d e x e c u t e d b y t h e o p e r a t ing s y s t e m. Ke y wo r d sl a d d e r d i a g r a m;e d i t ; c l a s s hi e r a r c h y;me mo ry s t r u c t u r e ;C pr ogra m 0 引言 1 编辑子 系统 软 P L C技术是 指 充 分 利用 工业 控制 计 算 机 I P C 或嵌 入式计 算机 E P C的硬 件 和 软件 资源 , 用 软 件 来 实 现传统 硬件 P L C的所 有功 能 , 具 有逻 辑运 算 、 算 术 运算 、 计 时 、 计数 、 数据处 理 、 传送 等 功 能。软 P L C由 开 发系统 和运 行 系统 两 部 分 组 成 , 开发 系统 将 编 写 的 P L C源程 序编译 成 与硬件 平 台相关 的机 器可 执行 代码 即 目标代 码 , 运 行 系统 通 过 执 行 开 发 系统 中 生成 的 目标代 码 , 最 终 将 处 理后 的信 号输 出 到控 制 现场完成 相 应 的控 制 功 能 。可 见 , 开 发 系统 的设 计 在 软 P L C系统 的设计 中起着 举足轻 重 的作用 。 为 了提高 系统 的复用 性 、 可 维护 性 , 通 过 对 系统 的需求分 析 , 将开 发 系统 的 设计 分 为两 部 分 , 即 编辑 子系统的设计和编译子系统的设计 。 国际电工 委员会 I E C发 布的 I E C 6 1 1 3 1 . 3国际标 准 ⋯ 规 范 了五 种 P L C编 程语 言 。 顺 序 功 能 图、 功 能 块 图、 梯 形 图 、 指 令 表 及 结 构 文 本 。其 中 , 梯 形 图 语 言与 电气 控 制 系统 的 电路 图很 相 似 , 具 有 直 观易 懂 的优 点 , 是 最 简单 、 最 常 用 的编 程语 言 , 适 用 于顺 序 逻 辑 控制 、 离 散量 控 制 、 定 时 和技 术 控 制 等操 作 。 因此 , 本 系统 采 用 梯 形 图 编 程 语 言 作 为 用 户 程 序 的 开 发语 言 。 1 . 1 类 层次 结构设 计 1 . 1 . 1系统类 的设计 梯形图是 由一个个像素组成 的位 图, 计算 机没 有分析梯形图程序, 以及判断每个元素间逻辑关 系 的能力 , 因此 , 需 要 找到一种 计 算机 可 以 “ 读 懂 ” 程 序 收 稿 日期 2 0 1 00 5 2 7 基金项 目 “ 高档数控机床与基础制造装 备” 科技重大专项 2 0 0 9 Z X 0 4 0 0 9 0 2 2 作者简 介 陈雪 1 9 8 6 一 , 女, 辽宁兴城人 , 中国科学 院研究生院硕士研究生 , 研究方向为数控技术 , Em a i l c h e n x u e c h e n x u e 1 2 6 . c o rn。 - 40 2 0 1 0 年第1 1 期 控 制 与 检 测 的描 述方 法 。在 编 辑 子 系 统 设 计 过 程 中采 用 Q t 技 术 , 它具 有 面 向对 象 、 良好 的封 装 机 制 等 特 点 , 为 了 减少代码的重复编写 , 提高执行效率 , 采用面 向对象 设计 方法 进行 开发 设 计 。根 据 梯 形 图 中对 象 的性 质 和功 能 将 其 抽 象 归 并 为 四 大 类 , 分 别 为 梯 形 图 类 L a d L a d d e r 、 程 序段 类 L a d P r o g r a m、 梯 级类 L a d Ru n g和 元素基 类 L a d C o mp o n e n t 。 1 . 1 . 2元素 对象 的设计 梯 形 图 绘 制 的 过 程 即 是 编 辑 梯 形 图元 素 的 过 程 , 梯形 图的 编辑 过 程 实 质 上 是 将 表 示 线 圈 的 图 符 和表示 图符 间 串、 并 联 逻 辑 关 系 的弧 连 接 而 成 的过 程 。可 以将 梯形 图元 素分 为 图 符类 L a d E l e m e n t 和 弧 类 L a d Ar c 。 元 素基 类 L a d C o m p o n e n t 封 装 了所 有 元 素共 有 的 属性 , 例 如所在 位置 、 前后 元 素等 , 再 从这 个基 类 派生 出各个 元素子类 , 它 们 封装 了每种 元素 对象 所 特有 的 属性 , 例如计 数 器类 L a d C t r c , 除 了在 基类 中声 明 的公 有属性 外 , 还具 有 自己 的特有 属性 , 如计 数器 号 、 计 数 器预置值 、 计 数器 剩余 值 的输 出地 址 等 。描 述元 素 除 了各种属性之 外 , 还有一 些成员 函数 , 例如在屏 幕上绘 图函数 v o i d p a i n t E v e n t Q p a i n t E v e n t e v e n t 、 图 符显 示位置合 法性 检 测 函数 b o o l i s V a l i d 等 。有 些 方法 是所 有元素共 有的 , 但具体 的实现方 法不 同, 基类 中将 这样 的 函数声 明为虚 函数 , 在 各 个元 素派 生类 中再进 行重 载 。此方法 充分体现 了面 向对象语 言 中接 口和实 现分 离的思想 。类层 次结构 如图 1 所示 。 1 . 2梯 形 图的存储 结构 为 了使梯 形 图 图元 易 于灵 活 应 用 , 方 便 编程 , 降 低处 理不 同 图元 时 的 复 杂 度 , 需 要 设 计 一个 合 理 的 数据结构来保存相应 的梯形图数据 。所设计的数据 结构须满足如下条件 ① 充分表达梯形 图各梯级 元 素之 间 以及 各 梯 级 之 间 的关 系。 ② 用 户 操 作 灵 活 。 ③梯形图可以被正确 的转化为对应的语句表。④算 法可 靠 。 编辑梯 形 图 时 , 行 数 和 每行 的元 素类 型未 知 , 可 见 编辑 过程 是 一 个 动 态 存 储 的过 程 , 采 用 链 表 的数 据 结 构存储 梯 形 图最 适 合 表述 这 种 动 态过 程 。梯 形 图的一 个梯 级 是 由 图 符 和 弧 互 相 连 接 而成 的 , 因此 可 以将 梯级 看作 是 由 图符 和 弧 组 合 而 成 的 有 向 图 , 图符 和弧是 图 的结 点 。每 个 梯 级 的存 储 可 以看 成 由 这 两类 元素 的双 向链 表组 成 。梯 形 图 由多个 梯 级 组 成 , 为 了建立 梯 级与 梯 级 之 间 的逻 辑 关 系 , 在 每 个 梯 级 的首 弧元 素 前 面增 加 一 个 梯 级 头 结 点 , 这 些 梯 级 头结 点之 间 也 以双 向链 表 的 方 式 链 接 起 来 , 形 成第 二层 次 的双 向链 表 , 两 层 次 的双 向链 表共 同 构 成 了 梯形 图的存储 结 构 。下 面分 别 介 绍 梯形 图 图符 的存 储结 构 和弧 的存储 结构 。 1 . 2 . 1 图符 的存 储 结构 图符 的存 储 结 构 由 图 2所 示 , 一 个 梯 形 图 图符 仅 与 一条 入 弧 和 一 条 出弧 相 连 , 图符 的特 征 信 息 与 定 义 的 图符 类 中 的数 据 成员 相关 联 。 图 1 类 系统 结构层 图符 特征信息 图 2 图符元素 的存储结构 1 . 2 . 2弧 的存储结 构 梯 形 图弧元 素 的数 据 结 构 包 括 六 个 数 据 成 员 , 数 据 结 构 定 义如 下 t y pe d e f s t r uc t Ar c L a d Ar c ff o mAr c / / 人 弧 L a d Ar c t o Ar c ; / /出 弧 L a d Ar c o r O u t ; / / 并 出 弧 L a d A r c o r l n; / / 并 人 弧 La dEl e m e n t p r e El e me n t ; / / 人 图符 La dEl e men t n e x t El e me n t ; / /出 图符 } a r c, a r c L i s t ; / / 弧 数据 结构 1 入弧 指 从上 一个 梯 形 图行并 联 出该 弧的结 束弧 。 4l 控制与检测 组合机床与自 动化加工技术 2 出弧 指该 弧并人 上一个 梯形 图行 的起 始 弧 3 并 入弧 指 从下一 个梯 形 图行并 入 该弧 的结 束弧 。 4 并 出弧 指从 下一个 梯 形 图行并 人 该弧 的 结 束弧 。 5 入 图符 指该 弧左侧 连接 的 图符 结点 。 6 图符 指该弧右侧连接的图符结点。 图 3表示 的是梯形图程序的一部分 , 其 中, a 1 、 a 2 、 a 3 、 a 4 、 a 5分 别 代 表 五 个 弧 元 素 , e l 、 e 2 、 e 3 、 e 4分 别代 表 四个 图符元 素 。表 l 描 述 的是 图 3中各 弧 元 素 的数 据成 员 。 图 3梯 形 图 程 序 实例 表 1 图 3弧 元 素 的 数 据 成 员 弧 人 弧 出弧 并 入 弧 并 出弧 入 图符 出图 符 a 1 无 无 无 a 4 无 e 1 a 2 无 无 无 无 e 1 e 2 a 3 无 无 a 5 无 e 2 e 3 a 4 a l 无 无 无 无 e 4 a 5 无 a 3 无 无 e 4 无 1 . 2 . 3存储 结构 的优点 按 照此种 方 法 定 义 的 数 据结 构 , 可 将 各 个 元 素 连 接在一 起 , 构成 元 素 间 的拓扑 结 构 , 与传 统 的模 块 化 编辑软件 相 比较 , 该 系 统 采用 的存 储 结 构 具 有 更 强 的严谨 性 。 1 与传统 的编辑 软件 相 比较 , 人 机 界面 更 加人 性 化 。插 入 、 删 除 新 的 程 序段 、 梯 级 、 某 一 个 梯 级 中 的并联 和串联 图符 , 查找 图符 等操 作更 加灵活 。 2 当删除 梯形 图中元 素时 , 弧元 素通 过 计 算 图 元的位 置 , 自动调整 弧 的长 短 并 出弧 自动调 整 弧 的 高低 , 从 而连 接 梯 形 图 中各个 元 素 , 而 不需 用 户 手 动选择 图元 进 行 替 换 删 除 , 方 便 用 户 编 程 , 效 率 更 高 。 3 按照这 种拓扑 结构 , 将梯 形 图转 化成 语 句表 进行 扫描时 , 通过 对弧 元 素信 息 的判 断 , 使 扫描 算 法 更加 简单方便 。 4 元素 可 以设 置数值 , 每 个 弧元 素在 并联 结 点 前后可以有不同的值 , 通过各元素反映出来 的值, 能 够实现 运行环 境梯形 图在 线监视 功能 。 将 图元 信息 存 储 在 数 据 结 构 中 , 定 义此 元 素类 的一个 对象 , 将 数据 结 构 中 的数 据传 递 给该 对 象 , 并 调用此 对象 的 画 图 函数 , 即可 实 现 元 素 在 绘 制 区 域 中的显 示 。基 于 上 述类 层 次结 构 和数 据 结 构 , 开 发 出一个 梯形 图编辑 系统 , 如图 4所 示 。 图 4梯 形 图 编 辑 程 序 实 例 2编译子系统 2 . 1 梯形 图转换成 语句 表 梯形 图是 一 种 图 形 化 语 言 , 而 语 句 表 是 一 种 用 助记 符表示 用户 逻辑 程 序 的文 本 化语 言 。与 梯 形 图 相 比 , 语 句表更 接近 于机 器 语 言 , 更 易 于 被转 化 为软 件 P L C运 行 系统 所 识 别 的 目标 代码 。因此 , 将 梯形 图语 言转换 为语 句表语 言是 一项 重要 的工作 。 2 . 1 . 1 梯形 图程序的扫描算法 每个 梯形 图程 序 由若 干 个 梯 级 组 成 , 扫描 时 以 梯级 为单 位 , 按 照 从 上 到 下 , 从 左 到 右 的顺 序 进 行 。 在 扫描过 程 中 , 判断 每 个弧 元 素是 否 有并 出弧 , 如果 有并 出弧 , 说 明此时 存 在并 联 支路 , 继 续 扫描 干 路并 将 此弧 入栈 , 当扫 描 到 某 个 弧 有 并 入 弧 时 或 者 某个 图符没有 出弧 时 , 说 明 此 时干 路扫 描 完成 , 将 栈 首元 素出栈 , 扫描其并出弧 , 依次向下扫描。按照此方法 扫描一遍梯形图 , 对每个元素 的扫描既不会重复也 不 会遗 漏 。 2 . 1 . 2梯 形 图转 化语 句表 梯 形 图向语 句 表 的转 换 方 法 有 很 多 种 , 林 懋 恺 等 提 出了一 种利用 串并联 算法 实 现 P L C梯 形 图到 指令表 的转 换 的 算 法 , 先 将 梯 形 图转 化 为 有 向无 环 图 , 对 图 中的串并联 关 系 进行 分类 归并 , 将 串并 联 结 构按 层次存储 在 广义 表 中 , 根 据 广 义表 生 成指 令 表 。 葛芬 等 将梯 形 图映射 为 A O V图 , 并 由其 建 立二 叉 树来 表示指 令 问 的逻 辑 关 系 , 通过 遍 历 二 叉 树 实 现 P L C梯形 图与 指令表 的转换 。 本系统在扫描算法的基础上进行转化 , 与以上提 出的转化方法 比较 相对简单 。梯形 图转换 成语句表 以 梯级为单位进行 , 对于没有并联支路的梯级 , 只要根据 梯形 图元素在梯 级 中的位 置和 元素类 型 , 即可将 梯形 图图符信息转换成语句表语言。对于包含并联支路的 梯 级 , 可以按照 扫描梯 形 图的 方法 , 边 扫描 边转 换 , 将 转换后 的语 句 表程 序存 储 到文件 中 , 最后 输 出。图 6 为图 5中梯形 图程序转化 后的语句表程序 。 2 0 1 0 年第l l 期 控 制 与检 测 . 1 l 二 l 三 爱} 玉i 誓 丹{ ■ 孵 l 撩 警 { { l 一 , l 锵 图 5梯 形 图 程 序 露 昝 鬻臻£ 鬻 } { 簿 i i 批一 罐 攀≤ 图 6 图 5转 化 生 成 的语 句 表 程 序 2 . 2 目标 代码 C 语言 生成 软 P L C运 行 系统 需 要 运 行 目标 代 码 , 才 能 完 成 对外部 设备 的控 制 , 因此 , 目标 代码 作 为 开 发 系统 和 运 行 系统 的桥 梁 , 是 开 发 系统 中必 不 可 却 少 且 至 关 重要 的一 部分 。 已提 出的 目标 代 码 生 成 算 法 有 很 多 种 , 但 大 部 分 转换 算法 都 是 基 于解 释 执 行 方 式 , 如刘 霖 等 提 出将 语 句表 转 换 为 自定 义 格式 的 中 间代 码 , 运 行 时 将 代码 逐条 取 出 , 根 据 编码 含义 解 释执 行 , 这 种 方 法 的缺点 是执行 效 率低 。本 系 统采 用 将 语 句表 编 译 成 C P U能够 直接 运 行 的 c代 码 程 序 , 能 够 提 高 系 统 运 行效 率 。在 L i n u x 操 作 系统下 , 借 助 于 开 源 的 L e x和 Y a c c 工具 自动生成 词 法和语 法分 析 程序 。以下 概 述 目标 代码 生 成 过 程 , 从 梯 形 图 转 化 而成 的语 句 表 语 义正 确 , 因此 , 可 以省 略语 义分析 这 个步骤 。 词法 分析 程序按 照语 句 表语 言 的词 法 规则 识 别 出代 表每个 单 词 的记 号 t o k e n , 并 将 结 果 返 回给语 法 分析 程序 。语 法分 析程 序 根 据 语 句表 语 言 的语 法 程 序 , 分 析其 语 法 结 构 包 括 句 子 、 程 序 段 、 变 量 定 义 段 、 功 能和 功 能 块 , 最 终 生 成 一 棵 抽 象 语 法 树 。使 用 抽象 语法 树 抽 象 的 描 述 语 句 表 的语 法 结 构 , 包 含 语 句表 中所 有 的描 述 信 息 , 语 法 树 的 每 个 结 点 都 有 一 个 v i s i t 函数 , 作 为 外 界 的访 问 接 口。通 过 访 问 抽象语法树 , 并借助辅助功能函数 , 将语法树 中的语 法信息转化为 目标代码 c语言。图 7是 图 6中语句 表程序 转化 生成 的 C语 言程 序 。 I 纛 赫幽 . s 巍 P Il l 瞄l 螽 jl1 确 一 a 幽睁 穗 譬 甏薹囊 I I E 蠹 e 碡阕 骧 - l 豫埘羁嚣蔫骐暾 警 翰 咐 稍 l l 童降 翻翻蝻 瓣峨 爹 矧睇 ■ I |I 鼙 羹 } 孽黛 ; 潮 , 曩攀 阐挤 器 繇 图 7 图 6转 化 生成 的 C语 言 程 序 2 . 3逻辑 组件 的生 成 利 用集 成 到数控 系 统 中的 g c c 编译 器 , 通 过 系统 自动 调用 脚 本 , 将 生成 的 c语 言 程 序在 线 编 译 生 成 目标 逻 辑 组 件 , 以 供 运 行 环 境 调 用 执 行 。运 行 系 统 采 用执 行逻 辑组 件 的方式 , 可 以动 态 加 载 , 同 时可 以 提 高操 作 的灵 活性 , 不 必 重新 编 译 内核 , 只需 把 新 的 逻辑 组 件装 载进 系统 即 可 。 3 结束 语 基 于 I E C 6 1 1 3 1 3国 际标 准 , 采 用 梯 型 图 编 程 语 言作 为用 户程 序 的 开发 语 言 , 通 过 实例 , 讨 论 了一 款 能够 成 功运 行 在 L i n u x平 台 上 的软 P L C开 发 系 统 。 经过 测试 , 该 系统 工作 稳 定 , 能 够 将 梯形 图源 程 序 编 译 生 成 目标 逻 辑 组 件 , 运 行 系 统 调 用 最 终 生 成 的逻 辑组 件完 成逻 辑 控 制 功 能 , 实 现 提 高 软 P L C系 统执 行效率的目的, 同时此开发系统具有很强 的通用性 和实 用性 。 [ 参考 文献 ] [ 1 ]K a r l H e i n z J o h n m, Mi c h a e l T i e g e l k a m p .I E C 6 1 1 3 1 3 .P r o g r - a m m i n g I n d u s t r i a l A u t o ma t i o n S y s t e m s[ M] .G e r m a n y Sp r i n g e r Ve r l a g Co mp a n y,2 0 0 1 . [ 2 ]K a r l - H e i n z J o h n , Mi c h a e l T i e g e l k a m p .I E C 6 1 1 3 1 3 工业 自 动 化系统的程序编制 [ S ] .中国机电一 体化技术 应用协 会 秘 书 处 翻 译 , 2 0 0 2 . [ 3 ]E d o u a r d T i s s e r a n t ,L a u r e n t B e s s a r d , Ma r i o d e S o u s a ,A n Ope n S o ur c e I EC6 1 1 3 1 3 I n t e g r a t e d De v e l o pme n t En v i r o n- m e n t [ C ] .I n I E E E I n t e r n a t i o n a l C o n f e r e n c e O ll I n I n d u s t r i a l I n f o r m a t i e s,2 00 7. [ 4 ] 林 懋恺 , 王 晓芳 , 林亨.P L C梯形图的广义表转换 [ J ] .计 算机工程 , 2 0 0 7 , 3 3 1 3 7 5 7 8 . [ 5 ]葛芬 , 吴宁.基于 A O V图及 二叉树 的梯 形图及指 令表互 换算法 [ J ] .南京航空航 天大学学报 , 2 0 0 6 , 3 8 6 7 5 4 75 8. [ 6 ]刘霖 , 琚 长江.基于 I E C 6 1 1 3 1 3标准的 L编译器 [ J ] .应 用与测试, 2 0 0 7 2 3 5 65 9 . 编辑李秀敏
展开阅读全文