DIY编程器网
标题:
用于单片机的以太网网关
[打印本页]
作者:
liyf
时间:
2012-1-27 19:47
标题:
用于单片机的以太网网关
摘要:“网络通”是基于普通单片机的廉价以太网测控网关。它可以将具有RS-232、RS-485等接口的测控设备简单而且直接地连接在以太网(因特网)上,利用丰富的现成的以太网资源,组成一系列以太网的分布式测控系统。
关键词:以太网分布式测控系统 以太网测控网关 网关 网络通
1 概 述
利用现有以太网(因特网)的丰富资源,组建以太网分布式测控系统是一种低成本、高可靠性、快捷的技术方案。组建以太网分布式测控系统的关键设备是以太网测控网关,而以太网测控网关的组成方式有以下三种。
第一种是在20世纪90年代中期,人们采用PC机+网卡+采集插卡组成以太网测控网关,进行协议转换,将由现场总线连接测控设备组成的分布式测控系统接入以太网,将管理PC机放在以太网内,组成一个较大的自控系统。这种组成方式成本很高,只适用于大的自控系统。
第二种是在近几年,人们采用嵌入式系统+以太网卡+采集卡来组成以太网测控网关。嵌入式系统实际上是在硬件和软件上均可按用户需要进行剪裁的PC机。例如,PC-104实际就是一台没有显示器、键盘、硬盘、软盘的PC-486DX计算机,有电子硬盘及各种I/O插口,可装入Windows CE和其他PC机应用软件。所以,实际上它是第一种网关的简化和微型化。它的成本比第一种有所下降,但价格还是较高。另外,利用了PC机的软件,开发速度较快。
第三种是今年以来,人们利用单片机加上以太网接口芯片组成以太网测控网关。这实际上是嵌入式网关向大众化、普及化的进一步发展。它以单片机取代PC机,用以太网接口芯片取代以太网卡,使测控网关的价格下降到几百元。这就使测控设备能以低廉的费用,以简捷的方式接入以太网,使网络家电变为现实,使以太网分布式测控系统能得到迅速的发展。
本文重点介绍我们研制的基于单片机的以太网测控网关--"网络通"的结构、原理和应用。
2 网络通的组成
"网络通"是以太网测控网关。它主要在网络层完成以太网TCP/IP协议和测控设备现场总线RS-232、RS-485、并口通信等协议的转换,完成以太网和现场总线网络间的互联,实现不同以太网和现场总线网络之间的数据交换。
"网络通"的组成如图1所示,由单片机和以太网接口芯片组成。
以太网接口芯片可选用符合IEEE802.3协议的10Base-T通用接口芯片,如UM9003、RTL8019、DM9008等芯片。这些芯片完成与以太网在物理层上的通信任务,采用RJ-45插口,可以直接连接到以太网上。
"网络通"对单片机没有什么独特的要求,可选用普通的单片机,如80C51等。单片机内用汇编语言写入TCP/IP通信协议,以及RS-232、RS-485等现场总线及并行总线通信协议。它负责完成数据链路层、网络层的协议转换,数据交换任务。它将从以太网接收来的IP包,进行拆包,取出数据,再按RS-232、RS-485等现场总线或并行总线通信协议重新组成帧,发送给测控设备;或者将测控设备发送来的数据帧,重新打成IP包,向以太网发送。
由于"网络通"具有RJ-45、RS-232、RS-485及并行通信总线等多种接口,是异型网互联、协议转换的网关,所以使用"网络通"可以很容易将具有RS-232、RS-485、CAN、双口RAM等接口的测控设备连接到以太网上,构建基于以太网的分布式测控系统。
由于"网络通"的接口丰富,且价格低廉,所以它既可以作为网关连接以太网和RS-485、CAN等现场总线网,也可以直接将具有各种接口的测控设备接入以太网,组成以太网分布式测控系统,而不需要再架设现场总线,如图2所示。
3 上位PC机软件
"网络通"为了方便测控设备通过以太网和以太网上任一PC节点进行数据通信,特意设置了VB下的专用控件lenlib.ocx,用户只需在PC机上安装10/100 Base-T以太网卡,在WIN98平台上即可调用该控件。控件lenlib.ocx提供以太网上接收和发送"网络通"产品数据的软件接口。嵌入lenlib.ocx控件可设计开发出"网络通"的各种网络控制系统应用软件,实现各种基于以太网的分布式测控系统。
lenlib.ocx控件是一种ACTIVEX控件,使用lenuser对象。它向应用开发者提供了一个属性remoteip,3个方法GetData()、SendData()、Link()和1个事件dataarrival()。其调用步骤如下。
① 首先连接PC机和"网络通"。remoteip属性赋值"网络通"的IP地址,再用Link()方法连接。当收到"ACK"字符串表示连机成功时,可以进行下一步通信。
② 通信。连通后,GetData()用来接收网络数据,SendData()用来发送数据到网络上。PC机收到"网络通"发数据后,触发DataArrival()事件,使用 DataArrival 事件内的 GetData 方法来获取已发送的信息,获取当前的数据块并将其存储在变体类型的变量中。
③ SendData,GetData,link语法:
返回值 Void
a. object.SendData data
b. object.GetData data, [type,] [maxLen]
通常总是将GetData方法与 DataArrival事件并用,而 DataArrival 事件包含totalBytes参数。如果指定一个比totalBytes参数小的maxLen,则将得到警告10040,以此指出剩余的字节将丢失。
c. object.link
参数如表1所列。
表1
[table]
部 分[/td]
描 述[/td][/tr]
Object[/td]
对象表达式,其值是控件的对象Lenuser1[/td][/tr]
Data[/td]
在SendData方法中,是要发送的数据,对于二进制数据应使用字节数组
在GetData方法成功返回之后存储获取数据的地方。如果对请求的类型没有足够可用的数据,则将data设置成Empty[/td][/tr]
Type[/td]
可选的。获取的数据类型,如下例“设置值”所示[/td][/tr]
MaxLen[/td]
可选的。在接收到字节数组或字符串时所需大小。如果对字节数组或字符串参数丢失,则将获取所有可用数据。如果提供的数据类型不是字节数组或字符串,则忽略这个参数[/td][/tr]
欢迎光临 DIY编程器网 (http://diybcq.com/)
Powered by Discuz! X3.2