9512.net
甜梦文库
当前位置:首页 >> >>

基于LabView的以太网数据的传输


您的论文得到两院院士关注 文章编号 :1008-0570(2008)11-3-0145-02

网络与通信

基于 LabView 的以太网数据的传输
An Ethernet Data Transmission Method Based On Labview
( 南 昌 航空 大学 )

王惠强 胡景春 卢小文 田 吉

WANG Hui-qiang HU J ing-chun LU Xiao-wen TIAN J i
摘要 : 在 以 太 网 络 虚 拟 仪 器 数 据 采 集 系 统 中 , 对 LabView 开 发 环 境 下 访 问 以 太 网 络 的 能 力 进 行 扩 充 , 采 用 CLF 节 点 技 术 调 用 动 态 链 接 库 , 应 用 WinPcap 技 术 实 现 以 太 网 络 数 据 采 集 。 关键词 : 以 太 网 ; 虚 拟 仪器 ; 动 态 链 接 库 中图分类号 : TP393.1 文献标识码 : A

Abstract: In the article, a method of acquiring data under LabVIEW developing workbench through Ethernet is chiefly introduced. In order to rectify the drawbacks of accessing Ethernet in LabVIEW development ,the technology of calling dynamic link library by CLF node is presented . Key words: Winpcap; virtual instrument; LabView; dynamical-link library; Ethernet
本 文中 主要 用到的 编 程 接 口 有 :

1 引言
Visual Instrument (VI , 虚 拟 仪 器 ) 是 以 计 算 机 强 大 的 软 硬 件
资 源 作 为 仪 器 的 支 撑 ,利 用 高 性 能 的 模 块 化 硬 件 ,结 合 高 效 灵 活 的 软 件 组 成 的 ,来 完 成 各 种 测 试 、测 量 和 自 动 化 的 应 用 的 各 种 各 样 的 仪 器 系统 。 随 着 计算 机 网 络 的 发 展 , 虚 拟 仪 器 与 网 络 技术的 结 合为 虚 拟 仪器 网 络 化 提 供了 良 好 的 实现 平 台 。 美 国 NI 公 司 的 LabVIEW 是 目 前 在 虚 拟 仪 器 中 使 用 较 为 广 泛 的 图 形 化 设 计 语 言,它 对 软 件 对 象 “虚 拟 仪 器 ”进 行 图 形 化 的 组 合 操 作 。 由于 LabView 开 发 环境 访 问 底 层 网 络 能 力方 面 的 不 足 , 无 法 对 底 层 的 数 据 包 进行 分 析 , 因 而 存 在一 定 的局 限 。 本 文 介 绍 在 LabView 开 发 平 台 上 结 合 WinPcap 技 术 实 现 以 太 网 数 据 采集 传 输 。

图 1. IEEE802.3 标准 数 据 包 的 格 式 (1 ) 查 找 设 备 : 捕 获 数 据 的 第 一 步 是 确 定 在 哪 个 网 络 。 连 接 方 法 是 调 用 pcap_findalldevs 进 行 监 听 调 用 函 数 寻 找 本 机 可 用的网 络 接 口 。 当 不 再 需 要 网 卡 列 表 时 , 用 函 数

技 术 创 新

pcap_freealldevs 释 放 空 间 。 (2 ) 打 开 设 备 与设 置操 作 : 就 是 建立 监 听 对 话 , 可 以 打 开 设 立 监 听 会 话 的 函 数 是 pcap_open_live 它 们 将 返 回 一 个 包 捕 获 器
的 描述 符 , 如 果调 用 成功 , 用 作后 面 函 数 调 用的 参数 。 打 开 正 确 适配 器后 , 应 设 置 监 听 模 式 为 混 杂 模 式 。 (3 ) 数 据 包 的 捕 获 及 处 理 : 调 用 函 数 pcap_next_ex 来 捕 获 数据包。 (4 ) 简 单 数 据 包 的 发 送 : 调 用 函 数 pcap_sendpacket 来 发 送 数 据 包 。 该 函 数 要 一 个 装 有 要发送 数 据 的 缓冲 区 。 注 意 缓冲 区 中的 数 据 将 不 被 内核 协 议 处 理 , 只 是 作 为 最 原 始 的 数 据 流 被 发 送 , 所 以 我 门 必 须 按 IEEE802.3 标 准 填 充 好 协 议 头 以 便 正 确 的 将数 据发送 。

2 winpcap 技 术
winpCap 是 UNIX 下 的 libpcap 移 植 到 windows 下 的 产 物 。 主要 功能 就 是 捕 获 原 始 数 据 报 , 包括 在 共享网 络 上 各 主机发送 /
接收和互之间交换的数据报; 以及在数据报发往应用程序之 前 , 按 照 自 定 义 的 规 则 将 某 些 特 殊 的 数 据 报 过 滤 掉 。 WinPcap 提 供了 一 套 标准 的 抓 包接 口 , 与 libpcap 兼 容 , 可 使 得 原 来 许 多

UNIX 平 台 下 的网 络 分 析 工 具 快 速 移 植 过 来 , 以 用 于 开 发 各 种
网 络 分 析 工 具 ,其 充 分 考 虑 了 各 种 性 能 和 效 率 的 优 化 ,包 括 对 于 NPF 内核 层 次 上的 过 滤 器支持 , 支持 内核态 的 统 计模 式 , 提 供了 发送 数 据 包 的 能 力 。

3 重 写 DLL
由于 Labview 缺 少 内 存 指 针 数 据类型 , 因 而 无 法 直 接 调 用 Wpcap.dll 中 的 函 数 , 必 须 重 新 生 成 dll 文 件 。 重 写 时 可 将 函 数 pcap_findalldevs ,pcap_open_live 和 pcap_freealldevs 一 起 写 成 对 网 络 接 口 进 行 查找 设 置 的 初 始 化 函 数 void eth_set() 。 其 中 对 网 络 适配 器进行 模 式设 置 的 代 码 如 下 :

winpcap 工 作 在 网 络 数 据 链 路 层 , 其 捕 获 的 数 据 包 为 帧 , 在
结构上符合链路层的相关标准。 以太网数据包的格式的

IEEE802.3 标准 如 图 1 所 示 。 WinPcap 为用 户 编 程 提 供 了一 系 列 功能 强 大 的 函 数 调 用 ,
王 惠 强: 硕 士 基金 项 目 : 基 于 网 络 的 制 造 设备 自 动 监控 管 理 技 术 , 江 西省 2006 年 自 然 科学 基金 (0611092), 南 昌 航 空 大学 2006 年 创新 基金 《 P LC 技术应用 200 例 》

if ( (adhandle= pcap_open_live(d->name, // 设 备名称 65536, // portion of the packet to capture. 1, // 混 杂 模 式 1000, // 读 超 时 为 1 秒 errbuf // error buffer
邮局订阅号 :82-946 360 元 / 年 - 145 -

网络与通信

中 文 核 心 期 刊 《 微 计 算 机 信 息 》 ( 管 控 一 体 化 )2008 年 第 24 卷 第 11-3 期 完 成 即 把 用 户自 定义 程 序 与 LabVIEW 的 CLF 节 点 连 接 起 来 。

技 术 创 新

) ) == NULL) { pcap_freealldevs(alldevs); return ; } 用 void eth_send(CStr input,int i) 调 用 pcap_sendpacket 发送 数 据 帧 。 其 中 input 是 必 须 按 IEEE802.3 标 准 填 充 的 数 据 报 缓 冲 区 的 指 针 ,i 为 发送 数 据 报 的 最 大 值 ( 包括 目的 地 址 及 源 地 址 在 内 )。 void eth_send(CStr input,int i) //_stdcall { if(adhandle== NULL)return; pcap_sendpacket(adhandle,input,i); return; } 用 int eth_rec (CStr mac_head,CStr mes) 调 用 pcap_next_ex 捕 获 帧 , 其 中 mac_head 为 所 需 帧 的 头 部 规 格 ,mes 为 去 帧 除 地 址 后 的 长 为 mes_length 的 数 据 , 返 回 1 时 为 成 功 捕 获 , 为 0 未 捕 获 ,-1 为 错 误 。 int eth_rec(int mes_length,CStr mac_head,CStr mes)//_stdcall { int i ,mes_length=18; int rec; struct pcap_pkthdr *header; const u_char *pkt_data; unsigned char *tempch; while ((rec = pcap_next_ex ( adhandle, &header, &pkt_data)) >= 0) { if(rec == 0)return 0; for(i=0;i<12;i++)if(pkt_data[i]! =localmac[i])return 0; tempch=(unsigned char *)(pkt_data+12); i=0; while(tempch[i]&&i<mes_length){mes[i]=tempch[i];i++;} return 1; } if(rec == -1)return -1; }

5 Labview 中 太 网 数 据 采 集 的 实 现
以 发送 简 单数 据 包 为例 , 如 图 2 :

图 2 发送 数 据 包 图 中 对 于 输 入 的 物 理 地 址 , 仅 限 制 了 12 位 字 符 输 入 ( 即 6 字 节 mac 地 址 ),未 判 断 是 否 满足 16 进 制 输入 。 其 中 第一 个 CLF 节 点 为 调 用 eth_set 函 数 节 点 , 第 二 个 CLF 节 点 为 调 用 eth_send 节 点 ,入 口 参数 为 发送 数 据 字 符串 及 发送 数 据 包 的大 小 。 发送 数 据 必须 按 IEEE802.3 标准 填 充 。 子 Vi 作 用是 把 目的 地 址 , 源 地 址 和 要 发送 的 信 息 , 结 合 在 一 起 形 成 完 整 的 数 据 包 , 然 后 调 用 CLF 节 点 发送 数 据 包 。 由 于 所 用 地 址 为 物 理 地 址 , 而 输 入 为 字 符 串 形 式 ,故 必 须 将 物 理 地 址 转 化 为 字 符 串 形 式 。 其 转 化 程 序 如 图 3。

图 3 字 符串 转 化 为 物 理 地 址 数 据 包 捕 获 的 CLF 节 点 的 连 接 如 图 4 :

图 4 数据包捕获 图 中 第 一 个 CLF 节 点 为 调 用 eth_set 函 数 节 点 , 第 二 个

CLF 节 点 为 调 用 eth_rec 函 数 节 点 , 入 口 参数 mac_head 是由目
标 地 址 和 源 地 址 连 接 的 物 理 地 址 头 ,表 示 选 择 目 的 地 址 与 本 机 物 理 地 址 源 地 址 与 参数 源 地 址 相 同的 数 据 包 。 第 二 个 参数 为 长 度 为 mes_length=18 的 一 个 字 符 串 , 由 于 要 对 内 存 进 行 写 操 作 , 因 而 必须 生 成 相 应 长 度 的 字 符串 。 设 置好 后进行 两 机互 联 , 两 机 通信 的前 面 板 如 图 5 :

4 CLF 调 用 动 态 链 接 库
LabVIEW 环境 中 提 供 的 CLF(Call Library Function) 节 点 用
于 实 现对 用 户 自己 开 发 的 动 态 链 接库 文 件 进行 调 用 , 从而 完 成 一 些 特 殊 功 能 。 在 利 用 winpcap 生 成 所 需 要 的 动 态 链 接 库 后 ,

labview 用 CLF 的 功能实现 调 用 。 使 用 CLF 节 点 调 用用 户自 定
义 的 动 态 链 接库 文件 其 创 建过 程 及 一 些 要 点 如 下 : 图 5. 两 机 通信 的前 面 板 显示 前 者 为 主 机 ,从 本 机 地 址 发 送 简 单 信 息 到 目 标 地 址 ;后 者 为 监 控 机 , 监 控 从 源 地 址 发送 到目 标 地 址 2 的 信 息 , 参数 output

1) 编 译 DLL 文 件 时 , 要 将 Winpcap 的 Include ,Lib 目 录 添 加 进 VC6.0 的 环 境 变 量 中 ; 先 用 VC 打 开 项 目 , 然 后 在 "Project->Settings" , 标 签 栏 出 选 择 "C/C++" , 在 "Preprocessor definitions" 的 输 入 框 里 添 加 "WPCAP" , 再 选 择 "Link" , 在 "Object/library modules" 的 输入框 里 添 加 "wpcap.lib Packet.lib" 2) 在 CLF 节 点 的 弹 出 configure 菜 单 的 对 话 框 进 行 相 关 设
置 ,如 动 态 链 接 库 的 路 径 、名 字 、参 数 类 型 及 返 回 类 型 等 ,设 置

param=1 表 示 捕 获 成功 ,string 2 显示 捕 获 信息 。

6 结束语
数 据 包 捕 获 技术是网 络 管理 系统 的关 键 技术 , 利 用 一 般 的

Labview 网络插件捕获数据包有十分明显的缺点 。 (下 转 第 142页 )

- 146 - 360 元 / 年 邮局订阅号 :82-946

《 现 场 总线 技术应用 200 例 》

网络与通信
编码表作特殊处理。

中 文 核 心 期 刊 《 微 计 算 机 信 息 》 ( 管 控 一 体 化 )2008 年 第 24 卷 第 11-3 期

要 特 殊 情 况 :b6 中 b111000 、b000111 ,b4 中 1100 、b0011 , 根 据

平 台 上 进行 综 合 , 实现 。 各 个 仿真 波 形 如 图 所 示 。

测 datain 是 否 在 12 种 K 码 中 , 如 果 不 是 则 用 k_err 指 示 出 错 , dout 输 出 为 0 ; 否 则 根据编 码 表 对 应 输 出 10bit 符 号 。

技 术 创 新

测 输入 的 10B 符 号是 不 是 许 用 码 字 、K 码 还 是 D 码 。 如 果 传 输 过 程中 出 错 出现 禁 字 或 者 是 出现 RD 违 规 , 用 code_err 表 示 ; 字符。

在 altera 和 xinlinx 的 不 同 系 列 芯 片 中 都 有 一 个 很 好 的 性 能 , 最

高工 作 频 率 都 能 达 到 250MHz , 满 足 PCI Express 的 高 速 数 据 传

输 性 能 , 如 表 1 所 示 。 这 里 采 用 altera 的 系 列 芯 片 可 以 跟 参考 文 献 5 作 比 较 , 经 过 代 码 的 优 化 , 提高 了 编 解 码 器 的 性 能 , 特 别 是 所能 工 作 的 最 高 频 率 , 满足 了 高 速 传 输 的 要 求 。

8BlOB 编 码 器 是 设 计 PCI Express 总线 的 一 个 重 要 部 分 。 本 方法创新 点 是 使 用 少 量 逻 辑 实 现 了 8B10B 编 解 码 , 在 ISE 上 进 行 功 能 综 合 、 时 序 仿 真 , 并 下 载 到 FPGA 器 件 上 进 行 测 试 , 实 验 结果 很 好 , 满足 PCI Express 的 高 速数 据 传 输 性 能 , 实 现 了 一 个 性 能 良 好 的 8B10B 编 解 码 系统 ; 同 时 它 具 有 很 好 的 可 移 植 性 , 可 作 为 软 核 嵌 入 到 需要 8B10B 编 解 码 的 电 路 设 计 中 , 具 有 一 定
的实用价值。

参考文献

[1]PCI-SIG.PCI Express Base Specification Revision 1.0a. 2003. [2]Intel Corporation.PHY Interface for the PCI Express Architec- ture Draft Version 1.86, February, 2006. (美 ) [3] Ravi Budruk Don Anderson Tom Shanley 等著,田玉敏等
- 142 - 360 元 / 年 邮局订阅号 :82-946

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?       ?          ! "   #     ! "  # $ %  & 1 2 3 ' # 4 ( 5 ) % 7 6 0 8 E 9 $ @ A F G B H F C D I 7 ?P
3 编解码仿真分析
根 据 上 面 的 设 计 方 案 , 在 modelsim 上 进 行 仿 真 , 并 ISE9.1i

译.PCI Express 系统体系结构标准教材 [M].北京:电子工业出版 社,2005. 吴晴.PCI Express (下一代内部互联技术) 在嵌入式系 [4]董铁庄, 统中的应用 [J] .微计算机信息, 2005, 21-3: 99-100. [5]李宥谋. 8B/10B 编码器的设计及实现[J].电视技术,2005 年,第六期.
作者简介 : 林 锦 棠 (1983 一 ) , 男 , 福 建 泉 州 人 , 通 信与 信 息 工程 专

图 3 编 码 器 的 仿真 波 形

如 图 3 编 码 器 的 仿 真 波 形 中 , 可 以 看 出 contrl 为 1 时 , 检

业 硕 士研究生 , 主要 研究方 向 : 光 通信 技术 与 应用 . Biography:LIN Jin -tang (1983 - ) male, Fu Jian Province , GuiLin University of Electronic Technology, graduate Student. Research area: Optical Communication Technique and Application. (541004 桂 林 桂 林 电 子 科技大学通信 与 信息工 程系 ) 林 锦 棠 (Dept. of Communication and Information Engineering , Guilin University of Electronic Technology , Guilin 541004 ) LIN Jin-tang 通讯地址 :(541004 桂 林 电 子 科技大学 研 F2 信 箱 ) 林 锦 棠
( 收稿日 期 :2008.10.23)( 修 稿日 期 :2008.11.18)

图 4 解 码 器 的 仿真 波 形 如 图 4 解 码 器 的 仿 真 波 形 中 ,可 以 看 到 解 码 中 ,就 是 要 检

( 上 接 第 146 页 )

主 要 是 它 捕 获 到 的 数 据 包 头 不 含 帧 信 息 , 也 不 能 接 收 到 与 IP 同 层 的 其 它 数 据 包 , 本 方 法 通过 利 用 Winpcap 技术 捕 获 以 太 网

如 果 是 K 码 , 用 k_out 表 示 ; 否 则 根 据 编 码 表 解 码 输 出 8bit

络 底 层 数 据 包 , 弥 补 了 LabView 开 发 环 境 访 问 底 层 网 络 能 力 的 本 文 的 创 新 点 是 : 把 虚 拟 仪 器 技 术 与 WinPcap 技 术 相 结

不足。

合 , 详 细 描 述了 LabVIEW 利 用 WinPcap 技 术 进 行 以 太 网 数 据

的 传 输 和 监 控的方法 , 该 方法 切 实 可 行 , 有 一 定 的 借 鉴 意义 。

图 5 编 解 码 的 仿真 波 形 通过 对 各 个 仿 真 波 形 分 析 , 该 编 解 码 能 很 好 的 工 作 。 同 时

表 1 各 个 平 台 的 性 能 指标

参考文献 [1]李机闯,胡景春,赵矿军.基于 Labview 的电表校验虚拟仪表接 口控制[J].微计算机信息,2007,10-1:124-126 [2] 马 芳 , 张 红 民 , 王 月 浩 , 马 金 超 . 基于 DLL 的 LabView 与 VC, Matlab 混合编程.现代计算机,2006,4:91-93. [3]徐美华,王振旗,韩秀娟.利用 WinPcap 技术捕获数据包. 第 二 十次全国计算机安全学术交流会论文 [4]简清明.基于 WinPcap 库的通用程序设计模型.计算机系统应 用,2007,2:91-93 [5]杨乐平,等.LabVIEW 程序设计与应用[M].北京:电子工业出版 社,2001,7. [6] 尤 文 坚 , 利 用 Winpcap 捕 获 网 络 底 层数 据 包 的方法 , 科 技资 讯, 2006, No.25:84-85
作者简介 : 王 惠 强 (1977- ), 男 ( 汉族 ), 福 建 惠 安人 , 硕 士 , 主要 研 究 方 向 : 嵌 入 式 系 统 ; 胡 景 春 , 男 ,1951.2-, 辽 宁 宽 甸 人 ( 满 族 ), 硕 士 , 主要从 事 计算机 智 能 控制 系统 及 虚 拟 仪 表 的研究

结论

Biography: WANG Hui -qiang, Male, the Han nationality,Born in 1977 in Huian, Fujian Province, Master, Major Research area: Embedded Control System (330063 南 昌 南 昌 航空大学 计 算机学院 ) 王 惠 强 胡 景 春
卢小文 田 吉

(Nanchang Hangkong University, School of Computer Science and Technology )WANG Hui-qiang HU Jing-chun LU Xiao-wen TIAN Ji 通 讯 地 址 :(330063 江 西 省 南 昌 市 丰 和 南 大 道 696 号 南 昌 航 空 大学 前 湖 校 区 93# 信 箱 ) 王 惠 强

( 收稿日 期 :2008.10.23)( 修 稿日 期 :2008.11.18)

《 现 场 总线 技术应用 200 例 》


赞助商链接

更多相关文章:
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图