1、基于 Windows 的 Powerlink 主从站通信 一、设计任务(要求) 二、总体方案 三、硬件原理图 四、软件框图 五、设计总结 6、参考文献 一、设计任务(要求) 1、设计要求 两人一组,一人作为主站(MN),一人作为从站(CN),实现 Windows 下的 Powerlink 主从 站通信,在两台 PC 的控制台分别显示 MN:姓名和学号 CN:姓名和学号 2、课程设计任务及工作量的要求 根据任务书要求,完成以下设计任务: 1 参考学习Powerlink 实现以太网教程相关部分,学习怎样修改 openPowerlink 源代码,怎样使用 openConfigurator 配置从站网
2、络参数和映 射参数 2 掌握 Powerlink 工作原理 2在 Windows 系统下安装 Visual Studio 2008,编译 openPowerlink 开源代码 3. 利用开源配置工具 openConfigurator 配置网络参数和映射参数,将产生的 mnobd.cdc 和 xap.h 文件放置正确的目录下 4. 根据配置参数,修改源代码相关部分, ,重新编译源代码,完成主从站通信 功能,并在控制台显示各自的姓名和学号 5. 通过 wireshark 进行功能演示。 2、Powerlink 工作原理 现 场 总 线 由 来 已 久 , 几 种 出 现 较 早 、 应 用 较 多
3、 的 现 场 总 线 , 如 CAN、 deviceNet、 modBus、 RS485 等 , 这 些 总 线 速 度 慢 、 每 次 传 输 的 数 据 包 小 。 随 着 工 业 自 动 化 由 低 速 向 高 速 、 由 低 精 度 向 高 精 度 、 由 集 中 式 控 制 向 分 布 式 控 制 的 发 展 , 对 现 场 总 线 的 传 输 速 度 和 数 据 量 都 提 出 了 新 的 要 求 。 于 是 就 有 很 多 厂 家 提 出 了 基 于 以 太 网 技 术 来 实 现 现 场 总 线 , 由 此 诞 生 了 POWERLINK、 EtherNet/IP、 ModBu
4、sTCP、 ProfinetRT、 EtherCat、 MECHATROLINK 等 这 些 工 业 实 时 以 太 网 的 技 术 。 目 前 高 速 实 时 现 场 总 线 种 类 繁 多 , 很 多 厂 家 都 在 推 广 自 己 的 总 线 协 议 , 这 些 协 议 从 性 能 上 可 分 为 两 类 : 高 实 时 总 线 和 低 实 时 总 线 。 高 实 时 性 的 总 线 : POWERLINK, EtherCat, MECHATROLINK。 POWERLINK 实 际 的 实 时 性 能 最 高 为 100us 的 循 环 周 期 , EtherCat 实 际 的 实 时
5、 性 能 最 高 为 250us 的 循 环 周 期 ( 这 里 指 的 是 实 际 实 时 性 能 , 而 不 是 理 论 值 , 因 为 EtherCat 的 宣 传 资 料 中 的 性 能 为 理 论 值 )。 在 这 三 种 总 线 中 EtherCat 和 MECHATROLINK 需 要 用 专 用 的 ASIC 才 能 实 现 , 之 所 以 采 用 ASIC 芯 片 来 实 现 是 为 了 能 够 控 制 市 场 , 使 他 们 处 于 有 利 地 位 。 众 所 周 知 , 工 业 自 动 化 行 业 的 厂 家 在 2009、 2010 年 取 得 了 大 丰 收 , 很
6、多 公 司 的 业 绩 翻 了 一 倍 。 他 们 不 缺 客 户 、 不 愁 订 单 , 但 是 发 愁 芯 片 , 由 于 很 多 芯 片 采 购 不 到 , 而 不 得 不 丢 掉 很 多 客 户 。 提 供 ASIC 解 决 方 案 的 公 司 , 目 的 就 是 通 过 ASIC 来 控 制 市 场 、 控 制 竞 争 对 手 。 EtherCat 和 MECHATROLINK 只 解 决 了 数 据 链 路 层 和 物 理 层 , 而 没 有 实 现 应 用 层 。 用 户 买 了 ASIC 芯 片 , 还 不 得 不 自 己 来 实 现 应 用 层 ( 如 CANopen) ,
7、这 需 要 花 费 用 户 很 长 时 间 。 此 外 不 同 用 户 实 现 的 应 用 层 往 往 不 同 , 这 就 造 成 同 样 都 是 基 于 EtherCat 的 设 备 , 却 相 互 不 能 通 信 。 POWERLINK 是 一 个 可 以 在 普 通 以 太 网 上 实 现 的 方 案 , 无 需 ASIC 芯 片 , 用 户 可 以 在 各 种 平 台 上 实 现 POWERLINK, 如 FPGA、 ARM、 x86CPU 等 , 只 要 有 以 太 网 的 地 方 , 就 可 以 实 现 POWERLINK。 POWERLINK 公 开 了 所 有 的 源 码 ,
8、任 何 人 都 可 以 免 费 下 载 和 使 用 ( 就 像 Linux) 。 POWERLINK 的 源 码 里 包 含 了 物 理 层 ( 标 准 以 太 网 )、 数 据 链 路 层 ( DLL) 、应用层( CANopen) 三 层 完 整 的 代 码 , 用 户 只 需 将 POWERLINK 的 程 序 在 已 有 的 硬 件 平 台 上 编 译 运 行 , 就 可 以 在 几 分 钟 内 实 现 POWERLINK。 POWERLINK 是 一 个 易 于 实 现 的 、 高 性 能 的 、 不 被 任 何 人 垄 断 的 、 真 正 的 互 连 互 通 的 平 台 。 低 实
9、 时 性 的 总 线 : EtherNet/IP, ModBusTCP, ProfinetRT。 这 三 种 总 线 可 以 用 普 通 的 以 太 网 实 现 , 但 是 他 们 基 本 上 是 对 TCP/IP 协 议 的 修 改 或 补 充 , 没 有 从 根 本 上 解 决 实 时 的 需 求 。 而 POWERLINK 完 全 丢 掉 了 TCP/IP, 定 义 了 一 个 精 简 的 、 实 时 性 极 高 的 数 据 链 路 层 协 议 , 同 时 定 义 了 CANopen 为 应 用 层 协 议 。 这 样 用 户 在 实 现 了 POWERLINK 的 同 时 , 也 实
10、现 了 CANopen。 在 纷 繁 的 总 线 协 议 中 , POWERLINK 将 是 实 时 以 太 网 的 未 来 , 原 因 如 下 : 1. POWERLINK 是 一 项 开 源 技 术 , 开 放 性 好 , 无 需 授 权 , 无 需 购 买 。 2. POWERLINK 基 于 标 准 的 以 太 网 , 无 需 专 用 的 ASIC 芯 片 , 有 以 太 网 的 地 方 , 就 可 以 实 现 POWERLINK, 硬 件 平 台 多 种 多 样 ( ARM, FPGA, DSP, X86 等) ,不依 赖 于 某 一 个 公 司 。 3. POWERLINK 速 度
11、 快 , 支 持 10M/100M/1000M 的 以 太 网 。 以 太 网 技 术 进 步 , POWERLINK 的 技 术 就 会 跟 着 进 步 , 因 为 POWERLINK 是 基 于 标 准 以 太 网 的 。 4. POWERLINK 性 能 卓 越 , 使 用 价 格 低 廉 的 FPGA( 几 美 元 ) 来 实 现 POWERLINK, 性 能 也 能 达 到 100-200us 的 循 环 周 期 。 5. POWERLINK 支 持 标 准 的 网 络 设 备 , 如 交 换 机 、 HUB 等 。 支 持 所 有 以 太 网 的 拓 扑 结 构 , 使 得 布 线
12、 更 自 由 、 更 灵 活 。 2.1 POWERLINK 是 IEC 国 际 标 准 POWERLINK 是 IEC 国 际 标 准 , 同 时 也 是 中 国 的 国 家 标 准 。 通 信 描 述 : IEC61784-2 服 务 和 协 议 : IEC61158-300 IEC61158-400 IEC61158-500 IEC61158-600 设 备 描 述 : ISO15745-1 2.2 OSI 模 型 OSI 是 一 个 用 于 开 放 信 息 处 理 系 统 标 准 化 的 通 信 模 型 , 它 是 当 今 许 多 通 用 无 数 据 优 先 级 传 输 协 议 的 参
13、 考 模 型 。 这 个 模 型 将 数 据 传 输 的 任 务 分 为 7 层 , 每 层 ( 除 了 最 底 层 ) 建 立 在 另 一 层 的 基 础 之 上 。 POWERLINK 是 一 个 三 层 的 通 信 网 络 , 它 规 定 了 物 理 层 、 数 据 链 路 层 和 应 用 层 。 2.3 POWERLINK 的 物 理 层 POWERLINK 的 物 理 层 采 用 标 准 的 以 太 网 , 遵 循 IEEE802.3 快 速 以 太 网 标 准 。 这 意 味 着 无 论 POWERLINK 的 主 站 还 是 从 站 , 都 可 以 运 行 于 标 准 的 以 太
14、 网 之 上 。 这 带 来 的 好 处 是 : 1. 只 要 有 以 太 网 的 地 方 就 可 以 实 现 POWERLINK, 例 如 你 的 PC 机 上 可 以 运 行 POWERLINK、 一 个 带 有 以 太 网 接 口 的 ARM 可 以 运 行 POWERLINK、 一 片 FPGA 也 可 以 运 行 POWERLINK。 2. 以 太 网 的 技 术 进 步 , 就 会 带 来 POWERLINK 的 技 术 进 步 。 因 为 POWERLINK 是 站 在 标 准 以 太 网 的 肩 膀 上 , 而 标 准 的 以 太 网 是 一 个 开 放 的 、 全 民 的 网
15、 络 , 在 各 个 领 域 广 泛 应 用 , 各 行 各 业 的 人 不 断 地 为 以 太 网 的 升 级 而 奋 斗 。 目 前 POWERLINK 支 持 10M/100M/1000M 的 以 太 网 。 只 需 在 硬 件 驱 动 程 序 中 做 小 小 的 改 动 ,POWERLINK 就 可 以 支 持 10G 的 以 太 网 。 3. 实 现 成 本 低 。 如 果 用 户 的 产 品 以 前 是 基 于 ARM 平 台 , 一 般 ARM 芯 片 都 会 带 有 以 太 网 , 这 样 用 户 无 须 增 加 任 何 硬 件 , 也 无 需 增 加 任 何 成 本 , 就
16、可 以 在 产 品 中 集 成 POWERLINK, 用 户 所 付 出 的 只 是 把 POWERLINK 的 程 序 集 成 到 应 用 程 序 中 , 而 POWERLINK 的 源 程 序 又 是 开 放 且 免 费 的 。 用 户 可 以 购 买 普 通 的 以 太 网 控 制 芯 片 ( MAC) 来 实 现 POWERLINK 的 物 理 层 , 如 果 用 户 想 采 用 FPGA 的 解 决 方 案 , POWERLINK 提 供 开 放 源 码 的 openMAC。 这 是 一 个 用 VHDL 语 言 实 现 的 基 于 FPGA 的 MAC, 同 时 POWERLINK
17、 又 提 供 了 一 个 用 VHDL 语 言 实 现 的 openHUB, 支 持 16 个 端 口 。 如 果 用 户 的 网 络 需 要 做 冗 余 , 如 双 网 、 环 网 等 , 就 可 以 直 接 在 FPGA 中 实 现 , 易 于 实 现 且 成 本 很 低 。 此 外 由 于 基 于 FPGA 的 方 案 , 从 MAC 到 数 据 链 路 层 ( DLL) 的 通 信 , POWERLINK 采 用 了 DMA, 因 此 速 度 更 快 。 2.4 POWERLINK 的 数 据 链 路 层 POWERLINK 的 数 据 链 路 层 : 也 就 是 POWERLINK
18、的 核 心 , 主 要 包 括 如 下 功 能 : 1. 构 建 /解 析 数 据 桢 、 对 数 据 桢 定 界 、 网 络 同 步 、 数 据 桢 收 发 顺 序 的 控 制 。 2. 传 输 过 程 中 的 流 量 控 制 、 差 错 检 测 、 对 物 理 层 的 原 始 数 据 进 行 数 据 封 装 等 。 3. 实 时 通 信 的 传 输 控 制 。 4. 网 络 状 态 机 。 在 POWERLINK 网 络 中 , 至 少 有 一 个 设 备 做 为 主 站 (MN) , 其 他 的 设 备 做 为 从 站(CN)。 每 个 从 站 设 备 都 有 唯 一 的 节 点 号 (
19、 NodeId) , 该 节 点 号 是 用 来 区 分 网 络 中 的 设 备 , 取 值 范 围 为 1-239。 主 站 设 备 ( MN) 的 节 点 号 为 240, 主 站 的 作 用 是 为 了 为 协 调 各 个 从 站 , 合 理 分 配 总 线 使 用 权 , 避 免 冲 突 , 实 现 实 时 通 信 。 POWERLINK 的 实 时 通 信 机 制 : POWERLINK 有 两 种 通 信 机 制 , 基 于 请 求 /应 答 模 式 和 基 于 定 时 主 动 上 报 模 式 ( PRC 模式) 。 2.4.1 基 于 请 求 /应 答 模 式 该 种 模 式 主
20、 站 ( MN) 轮 询 所 有 从 站 ( CN) 。 首 先 主 站 发 送 Preq 数 据 帧 ( PReqCN1) 给 1 号 从 站 , 该 数 据 帧 是 单 播 的 , 只 有 1 号 节 点 接 收 , 其 他 节 点 不 接 收 。 在 该 数 据 帧 中 包 含 了 主 站 ( MN) 要 发 送 给 1 号 从 站 的 数 据 。 当 1 号 节 点 收 到 来 自 主 站 的 Preq 数 据 帧 , 就 会 上 报 一 个 Pres 数 据 帧 ( PresCN1) , 该 数 据 帧 是 广 播 的 , 除 了 主 站 可 以 接 收 到 以 外 , 网 络 中
21、其 他 任 何 一 个 从 节 点 都 能 收 到 。 主 站 ( MN) 与 1 号 从 节 点 (CN1)一 来 ( Preq) 、一往( Pres) ,就 完 成 了 一 次 信 息 交 互 ; 接 下 来 主 站 ( MN) 与 2 号 从 节 点 (CN2)的 信 息 交 互 , 以 此 类 推 , 将 网 络 中 所 有 的 节 点 扫 描 一 次 , 称 为 一 个 循 环 周 期 。 假 定 循 环 周 期 为 200us, 那 么 网 络 中 的 每 个 设 备 每 200us 就 有 一 次 收 取 /发 送 数 据 的 机 会 , 而 且 不 会 与 其 他 设 备 造
22、成 冲 突 。 该 种 模 式 下 的 性 能 : 完 成 一 个 站 的 通 信 所 需 要 的 时 间 , 取 决 于 物 理 层 的 传 输 速 度 和 需 要 传 送 的 数 据 包 大 小 。 假 定 物 理 层 为 100M 以 太 网 , 该 种 网 络 的 传 输 速 度 为 12.5bytes/us, 假 定 数 据 包 大 小 为 64bytes( 每 个 Preq 和 Pres 数 据 帧 最 大 可 传 输 1490bytes 的 数 据 ) , 那 么 完 成 一 个 站 的 通 信 所 需 要 的 时 间 : T=Tpreq+Tgap+Tpres Tpreq: 主
23、站 发 送 Preq 数 据 帧 给 从 站 , 时 间 长 度 为 64/12.5=5.12us Tpres: 从 站 发 送 Pres 数 据 帧 给 主 站 , 时 间 长 度 为 64/12.5=5.12us Tgap: Preq 数 据 帧 与 Pres 数 据 帧 之 间 的 时 间 间 隙 , 约 为 2us 因 此 完 成 一 个 站 的 通 信 , 总 时 间 长 度 为 12.24=5.12+2+5.12 2.4.2 PRC 模 式 在 基 于 请 求 -应 答 模 式 ( PREQ-PRES) 通 信 时 , 从 节 点 什 么 时 候 上 报 自 己 的 数 据 , 取
24、 决 于 主 站 什 么 时 候 发 生 请 求 ( PREQ) 给 它 。 该 种 模 式 省 掉 了 主 站 的 Preq 数 据 帧 , 取 而 代 之 的 是 一 个 挨 一 个 的 Pres。 有 人 会 问 各 个 从 站 如 何 知 道 自 己 应 该 在 什 么 时 候 上 报 数 据 ? 是 否 会 出 现 两 个 或 多 个 从 站 同 时 上 报 数 据 ? 这 样 岂 不 是 发 生 了 冲 突 ? 该 种 模 式 下 , POWERLINK 主 站 在 开 始 通 信 之 前 , 会 去 配 置 从 站 的 参 数 , 告 诉 每 个 从 站 应 该 在 循 环 周
25、期 的 哪 一 时 刻 上 报 。 举 个 例 子 : 假 定 我 们 有 3 个 从 站 , 主 站 可 以 通 过 配 置 , 让 1 号 从 站 在 收 到 PresMN 后 的 第 5us 上 传 PresCN1 数 据 帧 , 而 2 号 从 站 在 收 到 PresMN 后 的 第 15us 上 传 PresCN2 数 据 帧 , 而 3 号 从 站 在 收 到 PresMN 后 的 第 22us 上 传 PresCN3 数 据 帧 。 这 样 就 避 免 了 冲 突 。 因 为 POWERLINK 是 基 于 时 间 槽 的 通 信 , 而 且 POWERLINK 支 持 158
26、8 分 布 式 时 钟 协 议 , 每 个 POWERLINK 节 点 都 有 一 个 时 钟 , 因 此 POWERLINK 很 方 便 实 现 这 种 通 信 模 式 。 在 该 种 模 式 下 的 性 能 : 完 成 一 个 站 的 通 信 所 需 要 的 时 间 , 取 决 于 物 理 层 的 传 输 速 度 和 需 要 传 送 的 数 据 包 大 小 。 假 定 物 理 层 为 100M 以 太 网 , 该 种 网 络 的 传 输 速 度 为 12.5bytes/us。 假 定 数 据 包 大 小 为 64bytes( 每 个 Preq 和 Pres 数 据 帧 最 大 可 传 输
27、1490bytes 的 数 据 ) 。 那 么 完 成 一 个 站 的 通 信 所 需 要 的 时 间 T=Tgap+Tpres Tpres: 从 站 发 送 Pres 数 据 帧 给 主 站 , 时 间 长 度 为 64/12.5=5.12us Tgap: Preq 数 据 帧 与 Pres 数 据 帧 之 间 的 时 间 间 隙 , 约 为 2us 因 此 完 成 一 个 站 的 通 信 , 总 时 间 长 度 为 7.12=5.12+2 这 种 通 信 比 基 于 请 求 /应 答 模 式 至 少 能 提 高 30%的 效 率 。 PRC 模 式 的 通 信 过 程 : 1. 主 站 发
28、 生 广 播 数 据 帧 PresMN, 主 站 把 多 个 从 站 需 要 的 数 据 在 该 数 据 帧 里 打 包 , 然 后 以 广 播 的 方 式 发 送 出 去 , 各 个 从 站 根 据 配 置 信 息 , 从 该 数 据 帧 中 取 走 相 应 的 数 据 。 该 数 据 帧 为 标 准 的 以 太 网 数 据 帧 , 最 大 有 效 数 据 容 量 为 1490Bytes。 2. 从 站 接 受 到 PresMN 以 后 , 根 据 主 站 配 置 的 上 报 时 间 , 来 决 定 什 么 时 候 该 上 报 PresCN, 当 定 时 器 到 了 上 报 时 间 , 从
29、站 就 以 广 播 的 方 式 上 报 PresCN。 该 数 据 帧 包 含 了 主 站 以 及 其 他 从 站 需 要 的 数 据 信 息 。 3. 主 站 和 从 站 是 支 持 PRC 模 式 , 还 是 支 持 请 求 /应 答 模 式 , 是 由 它 自 身 的 参 数 决 定 的 。 可 以 通 过 参 数 设 置 , 在 一 个 周 期 内 , 让 某 些 从 节 点 采 用 PRC 模 式 , 而 另 外 一 些 从 节 点 采 用 请 求 /应 答 模 式 。 这 种 搭 配 使 得 网 络 容 量 可 以 灵 活 搭 配 。 2.4.3 多 路 复 用 在 一 个 系 统
30、 中 , 通 常 有 多 种 不 同 类 型 的 设 备 , 如 有 伺 服 驱 动 器 、I/O、 传 感 器 、 仪 表 等 。 不 同 种 类 的 设 备 对 通 信 周 期 和 控 制 周 期 的 要 求 往 往 不 同 。 假 设 现 在 有 3 种 设 备 : 伺 服 驱 动 器 、 I/O、 传 感 器 。 伺 服 的 控 制 周 期 为 200us, 而 I/O 的 控 制 周 期 为 1ms, 传 感 器 却 不 定 时 的 上 传 数 据 。 面 对 如 此 应 用 , POWERLINK 如 何 来 解 决 ? 首 先 解 决 伺 服 的 200us 和 I/O 的 1m
31、s 的 配 置 。 因 为 两 种 设 备 需 要 的 循 环 周 期 不 同 , 如 果 将 循 环 周 期 设 为 200us, 伺 服 没 有 问 题 , 可 是 I/O 却 会 由 于 通 信 过 于 频 繁 而 反 应 不 过 来 ; 如 果 将 循 环 周 期 设 为 1ms, 那 么 伺 服 会 由 于 控 制 周 期 太 长 , 而 达 不 到 精 度 的 要 求 。 POWERLINK 采 用 多 路 复 用 来 解 决 这 个 问 题 。 在 这 里 , 可 以 将 循 环 周 期 设 置 为 200us, 将 伺 服 配 置 成 每 个 循 环 周 期 都 参 与 通 信
32、 , 将 I/O 配 置 成 每 N 个 循 环 周 期 参 与 一 次 通 信 , N 是 一 个 参 数 , 可 以 设 置 为 任 意 整 数 ( 在 这 里 N 的 值 为 5) 。 这 样 就 可 以 达 到 伺 服 的 通 信 周 期 为 200us, I/O 的 通 信 周 期 为 200 x 5=1ms。 如 下 图 所 示 , 有 11 个 节 点 要 通 信 , 其 中 1、 2、 3 这 三 个 节 点 每 个 循 环 周 期 都 通 信 ; 而 4、 5、 6、 7、 8、 9、 10、 11 这 8 个 节 点 为 复 用 节 点 , 这 些 节 点 每 3 个 循
33、环 周 期 才 通 信 一 次 。 这 样 就 可 以 把 快 速 设 备 和 慢 速 设 备 经 过 合 理 配 置 达 到 系 统 最 优 。 2.4.4 异 步 阶 段 以 上 提 到 了 三 种 不 同 设 备 , 伺 服 的 控 制 周 期 为 200us, 而 I/O 的 控 制 周 期 为 1ms, 传 感 器 却 不 定 时 的 上 传 数 据 。 上 一 节 讲 述 了 快 速 设 备 ( 伺 服 ) 和 慢 速 设 备 (I/O) 的 合 理 配 置 。 接 下 来 讲 如 何 配 置 不 定 时 上 传 数 据 的 设 备 ( 传 感 器 ), 这 种 类 型 的 设 备
34、 称 为 异 步 设 备 。 一 个 完 整 的 POWERLINK 周 期 分 为 两 个 阶 段 : 同 步 阶 段 和 异 步 阶 段 。 同 步 阶 段 用 来 传 输 周 期 性 通 信 的 数 据 ; 异 步 阶 段 用 来 传 输 那 些 非 周 期 性 的 通 信 数 据 。 非 周 期 通 信 数 据 包 括 : 1.异 步 设 备 的 通 信 数 据 , 如 这 里 所 说 的 传 感 器 ; 2.一 些 设 备 偶 尔 需 要 传 送 的 参 数 , 例 如 在 某 些 应 用 场 合 伺 服 周 期 性 传 输 位 置 数 据 , 但 可 能 偶 尔 传 输 一 下 扭
35、 矩 或 者 温 度 数 据 , 这 些 非 周 期 性 传 输 的 数 据 , 就 叫 异 步 数 据 。 这 些 异 步 数 据 会 在 通 信 周 期 的 异 步 阶 段 来 传 送 。 从 SoC 数 据 帧 开 始 到 SoA 数 据 帧 的 时 间 段 为 同 步 阶 段 , SoA 和 AsyncData 为 异 步 阶 段 。 SoA 数 据 帧 包 含 了 请 求 哪 个 从 站 上 报 数 据 , 而 AsyncData 数 据 帧 为 该 从 站 上 报 的 数 据 。 在 每 个 循 环 周 期 , 只 能 有 一 个 从 节 点 上 报 异 步 数 据 , 如 果 有
36、 多 个 从 节 点 需 要 异 步 通 信 , 那 么 需 要 在 多 个 周 期 内 完 。 2.5 POWERLINK 的 同 步 机 制 POWERLINK 支 持 1588 分 布 式 时 钟 协 议 , 每 个 循 环 周 期 的 开 始 , 主 站 都 会 广 播 一 个 SoC 数 据 帧 到 网 络 上 , 该 数 据 帧 包 含 了 两 个 重 要 信 息 : 网 络 的 绝 对 时 间 和 相 对 时 间 。 绝 对 时 间 信 息 : 年 、 月 、 日 、 时 、 分 、 秒 、 毫 秒 、 微 秒 、 纳 秒 。 如 下 所 示 : 相 对 时 间 信 息 : 从
37、网 络 开 始 工 作 , 到 现 在 一 共 运 行 了 多 少 us。 SoC 数 据 帧 有 两 个 功 能 : 时 钟 同 步 和 动 作 同 步 。 时 钟 同 步 : 网 络 中 的 节 点 需 要 有 一 个 统 一 的 网 络 时 间 利 用 网 络 时 间 来 同 步 网 络 中 所 有 设 备 的 分 布 式 时 钟 , 让 网 络 中 所 有 节 点 的 时 钟 有 一 个 共 同 的 基 准 。 POWERLINK 主 站 ( MN) 在 每 个 循 环 周 期 的 开 始 将 SoC 数 据 帧 广 播 到 网 络 上 , 该 数 据 帧 包 含 了 网 络 时 间
38、信 息 , 网 上 的 各 个 从 节 点 可 以 将 这 个 时 间 作 为 统 一 的 网 络 时 间 。 动 作 同 步 : 网 络 中 的 节 点 需 要 同 时 去 做 一 件 事 情 在 POWERLINK 协 议 中 有 两 种 方 法 去 触 发 一 个 同 步 的 事 件 : 1.通 过 从 节 点 自 己 的 时 钟 触 发 ;2.通 过 SoC 数 据 帧 触 发 。 这 里 主 要 讲 通 过 SoC 数 据 帧 触 发 同 步 事 件 的 原 理 。 在 POWERLINK 数 据 链 路 层 里 , 每 当 收 到 了 SoC 数 据 帧 , 会 触 发 一 个 同
39、 步 的 回 调 函 数 , 用 户 可 以 将 同 步 执 行 的 程 序 写 在 该 函 数 里 , 这 样 就 可 以 执 行 同 步 动 作 。 举 例 来 说 , 假 设 有 一 个 运 动 控 制 器 , 要 控 制 10 台 伺 服 做 同 步 运 动 , 例 如 需 要 10 台 伺 服 同 时 启 动 。 每 个 循 环 周 期 , 运 动 控 制 器 ( 作 为 POWERLINK 的 主 站 ) 将 10 台 伺 服 所 需 要 的 新 的 位 置 信 息 依 次 传 给 各 个 伺 服 。 每 个 伺 服 收 到 新 数 据 的 时 间 是 不 同 的 , 第 一 个
40、和 最 后 一 个 得 到 位 置 数 据 的 时 间 可 能 会 差 100 多 us。 如 果 收 到 新 数 据 , 伺 服 就 开 始 启 动 , 那 么 就 会 出 现 这 种 情 况 : 第 一 个 伺 服 已 经 开 始 运 转 , 而 最 后 一 个 伺 服 还 没 有 收 到 数 据 , 这 显 然 不 是 我 们 想 要 的 结 果 。 因 此 我 们 需 要 一 个 同 步 信 号 , 使 所 有 的 伺 服 都 得 到 新 数 据 以 后 , 同 时 启 动 。 这 个 同 步 信 号 就 是 SoC。 主 站 在 上 一 个 循 环 周 期 结 束 ( 即 下 一 个
41、 循 环 周 期 开 始 ) 时 广 播 一 个 SoC 数 据 帧 , 基 本 上 所 有 的 从 站 会 同 时 收 到 这 个 数 据 帧 。 该 信 号 触 发 一 个 同 步 回 调 函 数 或 者 硬 件 中 断 , 来 处 理 同 步 事 件 。 因 为 在 SoC 数 据 帧 之 前 , 每 个 从 站 都 已 经 从 主 站 ( 控 制 器 ) 那 里 得 到 了 新 的 位 置 信 息 , 因 此 SoC 信 号 触 发 的 同 步 事 件 中 可 以 同 时 启 动 , 运 行 到 设 定 位 置 。 如 果 是 星 形 拓 扑 , 各 个 从 站 收 到 该 信 号 的
42、 时 间 差 取 决 于 线 缆 的 长 度 , 电 信 号 可 以 认 为 是 以 光 速 在 导 线 中 传 播 , 因 此 用 户 可 以 计 算 出 该 时 间 差 。 可 近 似 为 1 米 为 3.3ns。 这 个 级 别 的 时 间 差 基 本 上 可 以 忽 略 。 如 果 你 采 用 的 是 菊 花 链 连 接 , 那 么 没 经 过 一 级 hub 会 有 40ns 的 延 迟 , 再 加 上 线 缆 的 延 迟 , 第 一 个 从 站 和 最 后 一 个 从 站 在 接 受 到 SoC 信 号 的 时 间 差 可 能 会 达 到 几 百 纳 秒 甚 至 微 秒 , 用 户
43、 需 要 根 据 应 用 场 合 的 需 要 来 决 定 该 延 迟 是 否 可 以 忽 略 , 如 果 不 可 以 忽 略 ,POWERLINK 提 供 了 测 量 机 制 , 可 以 测 出 来 相 邻 两 个 节 点 的 传 输 延 迟 。 用 户 根 据 这 些 延 迟 时 间 给 各 个 节 点 做 一 个 补 偿 , 从 而 达 到 各 个 节 点 在 同 一 时 刻 做 同 步 事 件 。 综 上 , 介 绍 完 了 POWERLINK 数 据 链 路 层 的 整 个 工 作 原 理 和 过 程 。 3、总体实现方案流程 1. 所需软件和硬件:需要准备两台电脑,一台作为主站,一台
44、作为从站;操作系统 为 Windows XP; 需要安装 VS2008 开发环境;需要安装 WinPcap 或者 Wireshark。 2. 将 POWERLINK 的源码分拷贝到要作为主站和从站的电脑上,随便选哪台电脑 做主站都可以,主站和从站上的程序有所不同。 3. 打开主站ExamplesX86WindowsVC9demo_pcap 下的工程,使用 VS2008 打开, 此外为了能在 Windows 上运行 openPOWERLINK,你需要安装 winpcap 或 wireshark 软件,因为 openPOWERLINK 将 pcaplib 作为网卡驱动程序。 4. 修改主站上的网络
45、参数和映射参数,假定我们要通信 2 个参数,一个参数是主 站发 送给从站,另一个是主站接收来自从站的数据。打开 objdict.h 文件。首先确定要 把 哪 个 object 作 为 主 站 发 送 给 从 站 的 参 数 , 我 们 注 意 到 源 码 里 有 一 个 Object0X2000/01,可以将该 object 作为主站发送给从站的参数。 因此我们配置发送的网络参数和映射参数: 将 0x1801/0x01 的值设为 1,即发送数据给 1 号节点: 将 0x1A01 的参数设置为如下的值: 5. 修改主站上的源程序。打开 demo_main.c 文件,将 NODEID 改为: #d
46、efine NODEID 0xF0 /=MN,主站的 nodeid 为 240 即 16 进制的 FO 6. 定义一个变量( BYTE output8) ,与 0X2000/01 link 起来。 POWERLINK 实时以太网教程 59 在 main.c 中,将与 0x2000/0x01 连接的代码修改如下: 至此,我们就映射了一个 object,并把他和我们自己定义的一个变量 link 起来。 接下来我们再映射一个 object,用来接收数据。 7. 接收的网络参数和映射参数: 我们注意到源码中有索引为 0x2200 的对象字典,可以将 0x2200/02 作为接收的 objcet。 将
47、0x1402 作为接收 1 号节点的网络参数。将 0x1402/0x01 的值设为 1,即接 收来自 1 号节点的数据。 相应的映射参数为 0x1602,将 0x1602 的参数设置为如下的值: 8. 定义一个变量( BYTE input8) ,与 0X2200/02 link 起来。 POWERLINK 实时以太网教程 60 在 main.c 中,在 main.c 中,将与 0x2200/0x02 连接的代码修改如下: 至此,我们映射了一个 object,并把他和我们自己定义的一个变量 link 起来。接 下来 我们将 AppCbSync 修改如下,这段代码的意思是我们把主站要发给从站的数据
48、不 断的累加, 同时打印出来自从站的数据。 6.1.2 设置从站的参数 设设置置从从站站的的参参数数 设置从站的参数 1. 从站需要 2 个参数,一个参数用来接收来自主站的数据,另一个参数发送给主 站。 打开 objdict.h 文件。首先确定我们要把哪个 object 作为发送给主站的参数,我们 注 意到源码里有一个 Object0X6000/01,可以将该 object 作为从站发送给主站的参 数。 因此我们配置发送的网络参数和映射参数: 将 0x1800/0x01 的值设为 0。 POWERLINK 实时以太网教程 61 将 0x1A00 的参数设置为如下的值: 2. 修改从站上的源程序
49、。打开 demo_main.c 文件,将 NODEID 改为: #define NODEID 0x01 /=从站的 nodeid 取值范围 1-239 3. 定义一个变量( BYTE output8) ,与 0X6000/01link 起来。 在 main.c 中,将与 0x6000/0x01 连接的代码修改如下: ObdSize=sizeof(output8); uiVarEntries=1; EplRet=EplApiLinkObject(0x6000, if(EplRet!=kEplSuccessful) Goto ExitShutdown; 至此,我们就映射了一个 object,并把他和我们自己定义的一个变量 link 起来。 接下来 我们再映射一个 object,用来接收数据。 4. 接收的网络参数和映射参数。 我们注意到源码中有索引为 0x6200 的对象字典,可以将 006200/01 作为接收的 objcet。 POWERLINK 实时以太网教程 62 将 0x1400 作为