行过程中会产生大量现场数据。 些 现 场 信 息 上 传 到 监 控 PC 后 由 符 合 DeviceNet 协 议 的 通 信 软 件 来 进 行 解 析 , 利 用 PC 机 强 大 的 软 硬 件 资 源 , 可 以 实 时 、 观 直 的显示设备的运行 情 况 。 另 外 , 还 可 以 将 生 产 数 据 记 录 到 实 时 数据 库 之 中 。 MicroSoft 公 司 的 VisualC++ 在 提 供 可 视 化 编 程 方 法的同时, 也适用于 编 写 直 接 对 系 统 进 行 底 层 操 作 的 程 序 。 本 文以 VisualC++6.0 为工具, 开发 DeviceNe 通信软件, 实现对 De- 图 1 DeviceNet 应用层协议对象模型结构 协议中对各个对象都详细定义了它们的属性、数据类型等 基本信息; 而且通过事件触发方式来具体定义了各个对象的行 为。因此在实现过程中, 采用面向对象的编程工具来编制协议 代码是非常合适的。整个协议的软件编制都是围绕“ 事件” 而展 开的。在应用程序中, 事件内容定义如表 1 所示。 表 1 事件( 消息) 定义
技 术 创 新
viceNet网络的监控。
1 面 向 对 象 的 编 程 方 法 与 DeviceNet
协议
面向对象技术里有一个重要的概念 :事件驱动( 也叫消息驱 动) 。应用程序被 划 分 为 若 干 子 块 , 每 一 个 子 块 完 成 特 定 的 功 能, 具有很强的独立性, 子 块 之 间 没 有 任 何 联 系 , 子 块 的 调 用 完 全由事件决定, 事 件 就 是 触 发 条 件 。 事 件 的 产 生 是 由 于 外 部 触 发引起的, 比如键盘, 通讯, 定时器等。 DeviceNet 通讯软件很适 合采用这样的编程思路, 从而做到程序的模块化, 条理化。
DeviceNet 应用层协议是通过面向对象的方式加以描述的, DeviceNet 上 任 何 一 个 设 备 都 可 以 根 据 功 能 被 抽 象 为 若 干 个 对
象的集合。经过对 象 建 模 的 设 备 , 从 逻 辑 上 看 上 去 非 常 容 易 理 解 , 同 时 这 种 对 象 建 模 的 思 想 类 似 与 面 向 对 象 的 技 术 。 De-
2 硬件接口设计及设备驱动程序
(1) 硬件接口 在 PC 机与 DeviceNet 网络的硬件接口上, 本 文设计了一块 PCI- CAN 接口卡。采 用 PLX 公 司 的 PCI 目 标 接 口芯片 PCI9052 作为 CAN 卡中的 PCI 接口芯片, 负责与计算机 之间的数据通信。CAN 控制器采用 PHILIPS 公司的 SJA1000 芯
邮局订阅号: 82-946 360 元 / 年 -
viceNet 应用层协议对象模型结构如图 1 所示。整个协议的结构
是由对象为基本组 成 单 元 ; 对 象 之 间 通 过 数 据 交 换 相 互 联 系 。 刘丽娅 : 实验师
《 P LC 技术应用 200 例》
289 -
软件天地
据链路层的所有功能。
中 文 核 心 期 刊 《 微 计 算 机 信 息 》( 测 控 自 动 化 )2007 年 第 23 卷 第 12-1 期 用以上方法为其他事件创建消息和添加服务代码。
片。 经过简单连接的 SJA1000 可以完成 CAN 总线的物理层和数
(3) 定时 服 务 通 信 协 议 中 经 常 用 到 一 些 定 时 功 能 , 需 要 编
写定时处理程序, 周期性的为上层应用提供计时状态。在头文 件 中 定 义 了 global_timer 定 时 器 数 组 。 在 VC++6.0 中 可 以 使 用
(2) PCI- CAN 驱动程序 设备驱动程序是操作系统的 一 个 组成部分, 它由 I/O 管理器( I/O Manager) 管理和调动。 I/O 管 理 器每收到一个来自用户应用程序的请求就创建一个 I/O 请求包 ( IRP) 的数据结构, 并将其作为参数传递给驱动程序。驱动程序 通过识别 IRP 中的物理设备对象( PDO) 来区别是发送给哪一个
设备。驱动程序处理 完 这 个 请 求 后 , 在 该 结 构 中 填 入 处 理 结 果 的 有 关 信 息 , 调 用 IoCompleteRequest()将 其 返 回 给