硅外延装备中PLC驱动软件的设计与实现.pdf
1 6 0 机床与液压 第 4 3卷 测调 ,再 由第 三方 将其 快 速组合 在 一起 .实 现复 杂 系统的控制。组件化 思想真 正实现 了软 件的重 用性 、 灵活性和扩展性 ,缩短了软件开发周期 .同时提高了 系统的稳定性 和可靠性 j 。 P L C驱动 程序 的主要作用 为建立上 、下位机 中变 量的相互映射 ,并根 据用户 的请求 ,进行变量数据 的 刷新l 5 ] 。将其作为一个独立组件进行开发 ,很好地完 成驱动程序本职任务的同时 .还具有 以下优点 J 1 独立性 。P L C驱 动组 件作 为硅外 延 装备 控 制软件系统 中一 个 独立 的软 件单 元 ,可单独 进 行开 发 、测调 ,不受系统整体进 度的限制 ; 2 封 装性 。P L C驱动 组 件通 过其 接 口,将用 户和其功能实现进行高度 的隔离 。只要保证组件接 口 设计的正确性和稳定性,即可将由于组件的调换 、更 新而造成 的其他部分 的变动降到最低 3 可 扩充 性 。P L C驱 动 组件 是个 自主 的、具 有独特功能的软件单元。只能通过接 13 与外界通信。 当需要提 供新 的服务 时 ,可 通过增 加 新 的接 13 来 完 成 .用户可 以重新选择新 的接 L I 来获得新的服务 。 硅外延装备控制 系统 中 。上位机变量为装备构成 子单元 的抽象符号 ,即用户所要控制 的 目标设备 ;下 位 机变量 则是 P L C存 储单 元 中的具 体数值 。实 际工 作时,组件根据用户的请求 ,刷新上位机变量 的数 据,并遵照 P L C指令格式的要求 ,进行命令组包, 然后通过 以太 网下 发 到 P L C中 ,完成 下位机 变 量 的 刷新;接收 P L C的反馈信息,仍遵照指令格式进行 解包 ,将 得 到 的数 据 更新 到相 应 的 上 位 机变 量 中。 C J 2 M 型 P L C使 用 F I N S指 令 进 行 通 信 ,因 此 进 行 P L C驱动组件设 计之 前 ,编程者 需 了解 F I N S指令 的 结构 。 2 F I N S指令结构 F I N S F a c t o r y I n t e r f a c e N e t w o r k S e r v i c e 通信协 控 制 指令 读 数据 议是欧姆龙公司开发 的用于工业 自动化控制 网络 的指 令/ 响应系统 。在计 算机 节点 上 编程 发送 F I N S指 令 , 可以读写 P L C各存储 区的内容,甚至控制其运行。 F I N S指令分为指令帧和响应帧两种 ,其结构如 图 2 。 指令 帧 响 应帧 指 令 码 响 应 码 数 据 域 图2 F I N S指令格式 F I N S 报 头位于 指令码 之前 ,用于 存储 通信 时的 一 些基本信息 。其 中 I C F为信息控 制域 ,用 于标 明指 令 和响应 R S V为 系统保 留 区域 G C T为 通信 所 跨 网关数量 ;D N A、D A 1 、D A 2分别 为 目标 网络号 、 目 标节点 号 和 目标节 点单 元 号 ;S N A、S A 1 、S A 2分 别 为 源网络号 、源节点号 和源节点单元 号 ;S I D为服务 和响应 的标识 ,可在 0 O F F之间任意取值 。 指令码 和响应码都是 由 2个字节 的十六进制数组 成 。例如 指令码 0 1 0 1表示读 取存储 区上 连续 字节 的 内容 .指令码 0 1 0 2表示把 数据 写入存储 区的连续 字节中 响应码 显示命 令执行 的结果 ,正常情况下 为 0 0 0 0。 参数/ 数据域存放 的是 目标 寄存器地 址及其 相关 数据信息 ,是整条 F I N S指令 的关键。如图 3所示 , 从 P L C中读取数据时.参数为 目标地址和要读取数 据 的个数 ;写入数据时 ,参数 为 目标 地址 、要写入 的 数据及其个数 。 控 制指 令 区域码 返 回 指 令 三 ][ 三 三 返 回 指 令 指 码响应码 据 写数 据 指令码 l 起始地址 数据数量 数据 区域 码 指 令码响 应码 图 3 参数/ 数据域结构 3 驱动组件的设计与实现 根据欧姆龙 P L C的通信要求,其驱动组件要实 现 的操作主要包括 1 建立/ 断开上位机与 P L C的连接 ; 2 指令信息的组包/ 解包; 3 数据包 的发送/ 接受 。 第 2 期 陈威 等硅外延装备中P L C驱动软件的设计与实现 1 6 1 采用软件层次化 和 功 能 模 块 化 方 法 , 设计 出 P L C驱 动 组件 的整 体结 构 如 图 4所 示 其 中上 层 为 接 口 模 块 I n t e r f a c e ;中 间 层 为 主 体 类 模 块 P L C D fi v e r 、数据池 模 块 D a t a P o o 1 和 数 据 处 理 模 块 D a . 图 4 P L C驱动组件整 体结构示意 图 t a H a n d l e 下层 为 T C P通信模块 T C P C o m m u n i c a t i o n 。接 口模块用于对外提供组件 的操作接 口;主 体 类模块是该组件 的核心 ,负责各个模块 和资 源的调 度 数据池模块用来存放组件所 有的数 据资源 ;数据 处理模块用于指令信息的组包与解包操作;T C P通信 模块完成 T C P / I P通信的连接和断开。各模块分工协 作.完成控制命令的下发。 3 . 1 接 口模 块 接 口模块 I n t e r f a c e 用于对外提供 P L C驱动 组 件 的操作接 口。一个组件 接 口的稳定性和封装变化 的 能力 .是该组件 的用户能 否构造 出坚 固应用 的关 键 , 因为任何对接 13 语法或语义上的改变,都有可能造成 现有组件与 客户之间的联系遭到破坏 [ 9 ] 。针对该驱动 组件的功能 ,抽取接口函数如下 1 C o n n e c t T o P L C / D i s C o n n e c t F r o mP L C用 于 完 成上位机与 P L C之间通信的连接和断开; 2 S e t V a l u e 根据用户的请求,完成上位机变 量 目标值的更新 ; 3 G e t S t a t e 为用 户提 供 目标上 位机 变量 的数 值 4 T r i g g e r 根据用户 的请求 ,完成上 位机控制 命令 的下发 。 由此绘制接口模块的类图如图 5 所示。 I PLCDr i v e r Co n n e c t T o P LC 0i n t Di s Co n n e e t Fr o mP LC i n t S e t Va l u e i n d e v i e e l d i nt , i n v a l u e b o o 1 i n t Ge t S t a t e i n d e v i c e I d i n t , o u t s t a t e b o o 1 i n t T r i g g e r i n d e v i c e l d i n t , i n i s Re a d b o o 1 i n t 图 5 P L C接 口模块类图 操作 函数 的参 数均为设 备对 象 I D号和 常规类 型 变量 ,不涉及 具体 P L C存储 单 元地 址 ,从 而解 除 了 组件用户与 P L C之间的耦合 ,使得驱动组件具有很 强 的通用性 。 3 . 2主体 类模 块 主体类模块 P L C D r i v e r 根据接口模块传人的 用户请求 ,调用相关模块功能函数,完成其功能操 作。如果将驱动组件 比作货运公司 ,指令信息的传递 就相当于货物运输.其主体类模块则相当于调度 中 心 ,根据 客户 的需 求 ,通 知相 关 部 门完 成货 物 的存 取 、装卸 和运输 等。例 如 为实 现 T r i g g e r 操作 ,主体 类模 块首先根据用户提供 的设备对象 .从数据池中取 出 目标数据 ,交 由数据处理模块进行组包操作 ,得 到 对应数据包 ,然后通过 T C P通信模块下发到 P L C中, 同时接收 P L C的返 回数 据包 ,再 交 由数据 处理 模块 进行解包 ,将得到的数据更新到数据池 中。图 6 所示 为实现 T r i g g e r 操作 时 。主体 类模 块对 相关 模块 功 能 函数 的调度流程 。 图6 实现 T r i g g e r 操作的调度流程 3 . 3数 据 池模块 数据池模块 D a t a P o o 1 用于组织和管理 P L C驱 动组件 的数据 资源 ,相 当于货运公 司的仓管部 门 ,完 成货物的存取。该组件的数据资源包括用户控制信 息、设备状态信息和该设备对应 P L C存储单元的地 址值 3 种 ,这 3种数据在数据池模块中以关联表的形 式存储 .方便 数据的查找和更新 ,同时模块对外提供 操作 函数 ,用 于实 现用 户 对 数据 的 操作 ,如 图 7所 刁 。 Dat aPool S e t Da t a i n d e v i c e l d i n t , i n v a l u e b o o l 1 i n t Ge t S t a t e f i n d e v i c e I d i n t , o u t s t a t e b o o 1 i n t Ge t Da t a i n d e v i c e I d i n t , o u t v a l u e b o o 1 . o u t a d d r i n t i n t 图 7 数据池模块类图 其 中 S e t D a t a 用于更新设备的控制信息.G e t S t a t e 用于给用户提供 目标设备 的状态信息。G e t D a t a 用于