您的当前位置:首页正文

基于独立协议的数据通讯与采集功能实现

2021-02-09 来源:个人技术集锦
56 基于独立协议的数据通讯与采集功能实现 Realizing Data Communication and collection With Protocol Independence 王理冬 汪光阳 (安徽工业大学计算机学院,安徽马鞍山243002) 摘 要 通过对某冷轧生产过程实绩数据采集的实例讲解,详细介绍了利用Pcap工具通过分组进行独立于协议的数据通讯。 对开放系统五联参考模型和TCP/IP协议分层体系结构进行了分析,论证了所采用方法的可行性。 关键词:数据采集,数据通讯,协议,报文 Abstract Through explaining the instance of producing actual data collection at a cold strip roiling production,this paper intro— duces how to protocol independently communicate with packet using Pcap tool The Reference ModeI of Open Systems In— terconnection and TCP/IP Protocol System are also analyzed in this paper.which prove the feasibility of this method. Keywords:data collection,data communication,protocol,packet 某冷轧机组的计算机系统的设计根据酸轧连续生产的特点 Microsofl也已经放弃了对Win9x的开发。因此本文相关的程序 进行,主要生产镀锡板与汽车板两种产品 .随着产品以技工艺的 也是面向Windows NT/2000/XP用厂1的。其实WinPcap中的 发展以及用户要求的不断提高,特别是对板形质 要求也越来 面向9x系统的概念和NT系统的非常相似,只是在某些实现.卜 越高,这就需要在实际的牛产控制过程r{1结合现场设备能力,尽 点差异,比如说9X只支持ANSI编码,而NT系统则提倡使用 可能地提高板彤的控制精度。 Unicode编码。 为r提高板形控制精度,技术人员需要对现有的板形控制 为了配合Pcap的使用,开发语占使用的是标准C,其同样 系统进行分析,找出有效的改进方法。最有效最常用的 法使川 具有很强的町移植性和高效的功能,两者是最好的搭配选择。 些统计上具,对生产过程实绩数据进行数理分析。由于以前生 2.2可行性分析 产过程实绩数据只用于生产中的设定调节,并不保存,很难进行 2_2,1 WinPcap 数据分析。因此,必须丌发收集l牛产过程实绩数据的功能,为板 WinPcap的主要功能在于独 于主机协泌(如TCP/IP)而发 形数据统计与分析提供数据基础。 送和接l恢原始的Packet。也就是说,WinPcap不会阻塞,过滤或 1 现状分析 控制其他应用程序Packet的发收,它仅仅只是监听共享网络上 在该板形控制系统中,首先根据模型汁箅设定值,在生产过 传送的数据报。冈此,它不能用于QoS凋度程序或个人防火墙。 程中测量过程实绩,以此进行自学爿及白适应,调节设定值。其 而WinPcap的这个特性 是本文所论及的基于一般工业 中,测量所得的过程数据是在电气r]动化(L1)Lj计算机过程控 以太网的通讯所需要并t1.nf以应用的。将网卡设置为混杂模式, 制(L2)之间的网络中传送的,其中有部分通讯使用的是西¨子 其就_白J以捕状到所有流经其网卡的Packet和帧,也就是说可以 Tl业以太网,它是基于0SI/RM模型的,另一部分使用TCP/tP 实时监听网络中的通讯,得到所需要Packet的一份拷贝,并且 协议通讯。由于这两个协议无法进行直接转换通讯,为了收集实 小影响其 常收发通讯,保汪生产的使用和正常进行 .换句话 绩数据,只能往更底层的通讯方式寻求解决方案。根据0SI/RM 说,通过住WinPcap开发的数据收集模块可以在不影响当前网 模 与TCP/IP协议。侄他们相对 的l圳络层可能存在解决方 络砸荷以及网络= 点机系统配置的情况下实现网络豁昕和数据 法。由于两者的通讯传输单位都足分组(Packet),通 方式电较 收集 这一优点 是本文所涉及的生产现场所需要的,并E-町以 类似,由此得 一个实验方案,即使用分组的方式进行通 ,实 得到应用的。 现数据收集以及统计的目标。 2 2 2 0SI/RM 2实施步骤 “ 放系统瓦联参考模 ”(The Reference Model 0f 2 1开发环境设定 0pen Systems lnferconneclion,简称为OSI/RM)嘲采用分层 针对分组通讯模式。Pcap足1F常有效且实用的上具,主要 化设 技术,其中包括:物理层、数姑铸路层、网络层、传送层、会 原因为:Pcap可以直接访『廿]网络,具有很强的独立性,不依赖于 务层、表示层、应』}J层,下『向按自下而卜的顺序对0SI/RM各个 网络配适器所使用的协议;Pcap可以处理较底层的网络通讯, 次的功能作简要说明。 进行监视,接收发送数据;Pcap有Windows版奉和UNIX版 物坪层(Physical Layer)为它的上一层对等宴体问提供建 本,主要的功能接几都相同,其仃很强的 移棺 ,耷迎选择的 立、维持和拆除物理链路所必 的特性,}I的 于保证可靠的比 是Windows版本, WinPcap。 特信 传输。 WinPcap(windows packet capture)I 足Windows平台下 数据链路 (Data Link Layer)是 …条物理链路 础L 个免费。公』£的网络访问系统.目前,WinPcap开发的主要划 建 起l求的具有它由 的数据传输格式(帧)干“传输控制功能的 象是Windows NT/2000/XP,这上 足 为在使ft1 WinPcap 点一节点州“逻辑连接” 的』H tl1只有一小部分是仪使川Windows 95/98/Me,并且 网络层(Network Layer)电称为“通信于l救j层”,为进入通信 《工业控制计算E}2006年19卷第5期 子网的报文提供具体的数据通路,并控制子网有效地运行。 传送层(Transport Layer)的主要功能是为两个会话实体提 供透明的“端到端”数据传输连接。 会话层(Session Layer)的主要任务是为两应用进程I白.J建 立起进行一次“对话”的逻辑连接关系。 表示层为应用层提供对数据的表示、格式、处理等方面的 “语法”变换服务。 应用层是OSI/RM最高的一层,其功能与系统应用所要求 的网络服务F{的有l芙。 2 2 3 TC P/IP TCP/IP协议分层体系结构只包含4个功能层,即:网络接 口层、网际互联层、传送层和应用层。 网络接i--I层是没有经过严格定义且末指定协议的一个层 次.它负责主机与其体物理网络的子网接FI,并从网络接收和向 网络发送数据单元。 网际互联层是实现异构网络 联最关键的一个协议层,又 称为IP层。它使用网际 议IP(Internet ProtocaI)使不同物理 网络在逻辑上互联起来,从而完成主机一主机之间的“端到端”lP 数据报传输的连通性。 传输层是实现主机进程之间的“端到端”可靠数据传输的协 议层,又称为TCP层.tj OSl/RM中定义的传送层基本相同。 凼特网的应川层与OSI/RM中的应用层差别很大,它不仅 包括_r从会话层以上三层可能有的所有功能,而且还延伸到包 括l本地应用进程奉身在内。 2.2.4分析论证 仔细比较TcP/IP和OSl/RM两者不难得出结论,前者使 用的是一1、既简 很实际的分层方法。它把网络层以下的部 分 给了各个物理网络自己,这里只需要考虑对这种子网的接 f]j皂系H口可,简化r高层部分而形成单一的应用层,并将应H】层 功能一直延伸HiJ主机的啦用进程(即包括完整的应用程序),而 不像OSI/RM那样应用层只涉及应用服务接【I。 所以,存TCP/IP和OSI/RM相对啦的底层数据链路 磋一对报文进行处理,就能够实现同时与两种协议的通讯。 2.3功能实现 前屯, 了,实现通讯功能,必须先满足下列条件,主要操作 步骤盘¨下、、 2 3 1网络适配器的获得 为了寅观网络监听,首允要获得系统 fI可用的网络适酉亡器。 可以通过蛹数捌JH获得系统中町刚的通讯接口列表,其中包括 网络适 器的名称千口说叫,但不是所有的设备邯会被列 ,I:L ̄H 进程没有足够的权 去打丌某没备用于捕捉,那么它就不会 现侄列丧中,雠留门己所需要的一个或多个设备的名称,然后释 放其余资源_lll』以采用和用户交互的疗式来选择特定的设备。也 可以采用参数或配置文件方式进行指定 2 3 2网络适配嚣的歼肩 抉得I删络适配器名称以后,口J_以凭此扦肩网络适配器进行 监 ,”往其llfj设定所需的参数,得到自己需要的报文,比如:没 宅所扶取的 戈K 最_人优,这个数值廊小大于65536,如l粜设 定为65536,邯幺MAC j H}=_的所订报文部会被捕获;混杂模 式 设定为1,可以临听H络 所有的通汛,包括那些并不是发 送争本饥的报文;陵取超时以毫秒~单f ,设定后允许没备不必 茂到报义就返回, 是等待-段时间查看足 有其他报文到 达,然 ,次叮谴取多个报l迁,如 系统不支持这个功能的话, 这个参数会傲忽略 57 2.3,3报文的获取 打开网络适配器并设为混杂模式后,便可以实施网络监听, 为了持续获得报文,通常采用以下两种方式: 使川pcap—loop 函数,它本身具有循环功能,每捕捉到一个报文都会返回一个 值,用户可以自己编写一个函数来处理每个捕捉到的报文,并把 这个函数名作为参数传递给pcap—loop;②使用pcap—next_ex 函数,其本身没有循环功能,可以自行使用循环语句,作为循环 条件,报文捕捉正常时,pcap—nexLex函数的返回值应不小于 O,用户自已的处理过程可以写在循环体内。两种方式实现的功 能并没有太大差异,都返回报文的头部和数据指针,只是前者模 块结构清晰,方便灵活调用;后者的处理过程在循环体内,变量 的凋用处理会更直接方便,但程序结构则会 得相对冗长。 2.3.4报文的处理 接收到报文以后,用户可以自行处理和解包。对此要首先了 解电文结构,包括报文头部和其中的内容结构。lP数据报头部的 结构主要包括版本号、协议、标头长度、总长度、服务类型、分片标 志、片偏移、重装标识、生存期、标头检验、源IP地址、日的lP地址 等,其中,我们最关心的是lP地址、端口和长度。通过对lP地址的 检验可以只留下所需要的报文,这个操作可以在网络配适器开启 时加设过滤器来实现,也可以自行通过程序榆验,前者效率较高 也方便实现,但后者更灵活且功能更强。然后部分解包,解析出电 文号,由此得知电文中数据对应的结构并进行解包。对于两门子 工业以太网的报文,也可以使用相似的处理步骤,但是由于不适 用lP地址,地址检测时需自行通过程序检验,且所使用的是 MAC地址,它也同样具有唯一性,可以作为检验的条件。 3结果对照 经过一段时间实际生产的检验,通讯质量稳定,监听所获得 的报文与实际生产中发送的电文节奏相一致,解包所采集的生 产灾绩数据也与生产数据相符,能做到及时准确,达到r预期的 效果 所采集的数据经数据库处理后,经统计分析并制成图表, 结果清晰明了,为改进板形控制系统提供_r数据基础 在实现了两台主机问通讯的基础上,迩想再进一步进行多 台主机阃的通讯,保证数据收集的完整。有别于一对一通汛的 足:多台主机间通讯的网络数据流碹成倍增长,已开发的程序将 无法及时处理,造成数据堆积。为此,我们对程序结构进行了改 进,首先开辟了一块缓冲池,当报义被采集到时,并不直接进行 处理,而是放人缓冲池中,这样就提高了处理速度,然后开启多 个线程对采集到的报文分别进行处理解包 通过这样的分工,处 理效率成倍提高,效果相 令人满意 4结束语 利用Pcap_T具实现了独立于协议的数据通讯,避免r审 复的开发,也提高了系统资源的利川率。但由于是荩丁报义本身 进行开发的,需要对报文的结构 常了解,而且々 性比较强, 需要对程序进行修改 能寅现移植。以这样的^式进行独立于 协议的数据交换开肩了l诎】络调讯的另一帛窗。 参考文献 【1]Loris Degioanni,NetGroup.Politecnico di Torino.WinPcap Doc— umentation 3 0 【2j林生计算机通讯与网络教稗[M J北京:清华人学出版利,1999 [3]休俊杰Visual C++程序设汁经典『M]北柬:科学出版社,1999 I 4]Robin Burk,David B Horvath UNIX技术大 }1M J J匕康:机械工业 出版社,1999 i收稿日期:2005 12 27] 

因篇幅问题不能全部显示,请点此查看更多更全内容