当前位置:首页 > tcpip
  • 浅谈IP地址分配与中继设备

    浅谈IP地址分配与中继设备

    1. TCP/IP模型 TCP/IP协议是在OSI参考模型出现之间就被开发的,并广泛部署在计算机网络中。但是,后来由于概念混淆,TCP/IP模型的层次和名称往往与OSI模型的层次名称相互借用。如图1.所示。 图1. OSI模型与TCP/IP模型对比 TCP/IP是一个由许多单独协议组成的开放的协议栈,TCP/IP四层协议分别是指:应用层、传输层(也称,主机到主机层)、网际层和网络接入层,各层的协议如图2.所示。 图2. TCP/IP协议栈包含的协议 2. IP地址表示及分类 IP地址等于网络地址加上主机地址,网络地址表示其属于互联网的哪一个网络,主机地址表示其属于该网络中的哪一台主机。二者是主从关系。IP被分为A、B、C、D、E五类,如表所示。其中D类子网被用于多播,E类子网被保留将来使用。IP地址由四段组成,每段一个字节八位。 图3. IP地址分类 A类:(1.0.0.0-126.0.0.0)第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络。 默认子网掩码:255.0.0.0或 0xFF000000 其中私有地址范围是:10.0.0.0~10.255.255.255 B类:(128.0.0.0-191.255.0.0)前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。 默认子网掩码:255.255.0.0或0xFFFF0000 其中私有地址范围是:172.16.0.0~172.31.255.255 C类:(192.0.0.0-223.255.255.0)前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络。 子网掩码:255.255.255.0或 0xFFFFFF00 其中私有地址范围是:192.168.0.0~192.168.255.255 D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户。 E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。 在这些IP地址中,按照用途的范围又可以分为公有地址和私有地址两大类,公用地址在Internet中使用,可以在Internet中随意访问。私有地址只能在内部网络中使用,只有通过代理服务器才能与Internet通信。使用保留地址的网络只能在内部进行通信,而不能与其他网络互连。因为本网络中的保留地址同样也可能被其它网络使用,如果进行网络互连,那么寻找路由时就会因为地址的不唯一而出现问题。 子网掩码的作用是计算网络标识,即IP地址 & 子网掩码 = 网络标识。 图4. 网络标识计算 3. 网络中继设备 计算机网络由不同类型的网络相互连接组成,将这些网络单元连接起来的设备称之为中继,根据中继系统所在的层次,可以将中继分为如下几类: 图5. 中继设备的分类 各类设备的功能可以概括为: 转发器:用于连接多个以太网段并且侦听每个网段,主要功能是延伸网段和改变传输媒体,从而实现信息位的转发。 交换机:交换机工作于OSI参考模型的第二层。交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习它的MAC地址,保存成一张ARP表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口。如果MAC地址表中没有,将数据发给所有端口进行广播。如果广播后还没有回应,则将数据发送给上级的路由器。 路由器:连接广域网使用,接收到LAN口的数据,转发给WAN口,然后根据路由表来选择路径进行转发。 网关:一种复杂的网络连接设备,可以支持不同协议之间的转换,实现不同协议网络之间的互连。网关具有对不兼容的高层协议进行转换的能力,能够实现异构设备之间的通信。 下图为网络设备连接拓扑图: 图6. 网络连接拓扑图

    时间:2020-05-21 关键词: tcp tcpip

  • 重磅!华为要重构全球互联网!已向ITU提交新标准

    重磅!华为要重构全球互联网!已向ITU提交新标准

    据外媒消息,中国已向联合国建议对互联网的运作方式进行彻底的改变,以支持诸如全息图和自动驾驶汽车之类的尖端技术。 在联合国国际电信联盟(ITU)的会议上,华为与中国联通和中国电信以及工信部共同提议采用一种新的核心网络技术新标准,名为“New IP”。 华为声称:支撑全球网络的现有互联网基础设施(名为TCP/IP)“不稳定”且“效率严重低下”,到2030年无法满足数字世界的要求,包括自动驾驶汽车、无处不在的物联网和“全息感知的隐形传态”。 该提案建议ITU“从长计议”,“承担起为未来网络采用自上而下的设计这一责任”。 华为表示,开发New IP纯粹是为了满足快速发展的数字世界的技术要求,它并没有将任何一种控制机制做入到设计中。华为称,它在ITU领导的一个小组专注于未来网络技术。 华为发言人补充说:“New IP的研究和创新向全世界的科学家和工程师开放,他们可以参与进来,并为之贡献。” 据了解,该提案已获得了俄罗斯的支持,可能会获得沙特阿拉伯的支持。华为曾表示,在多个国家政府和公司的帮助下,新网络架构技术的一些部分已经在建造中,但不方便透露那些参与者的身份。华为还表示,相关部分准备好在2021年初之前进行测试。 据了解,联合国国际电信联盟(ITU)秘书长为赵厚麟,他于2014年首次当选,并于2018年再次高票连任。据专家们声称,ITU代表近200个成员国,ITU批准的标准通常被非洲、中东和亚洲的发展中国家采用。华为和其他合作开发者计划11月份在印度举行的ITU重大电信会议上能促使该New IP标准被通过。 New IP到底有何优势? 据英国《金融时报》的报道,New IP被华为称作是“更加动态的IP寻址系统”。华为的工程师认为,互联网正在日益演变成几个独立的网络,例如专用通信网络和卫星传送信号的网络等,由于不兼容的寻址机制,这些网络之间的互联是一大挑战。New IP将提供一种更高效的寻址系统,从而使同一网络中的设备可以彼此直接通信,而不必在互联网上发送信息。 网友的评论 TCP/IP之于有线世界,犹如DNA之于生物世界,可是现在,这个互联网最基本的协议TCP/IP已经不堪重负了,而新的协议是否如华为的New IP能解决面临的挑战呢? 有网友评论认为:TCP/IP协议越来越臃肿,且运行效率低下,网络核心构架也非常不合理,地址分配歧视严重,早该彻底重写了。 甚至有网友认为:这是准备颠覆互联网啊!如果成功必将改变世界! 华为所倡导的New IP会如何发展?拭目以待!

    时间:2020-03-30 关键词: 华为 互联网 tcpip

  • RS232转TCPIP的TCP工作模式选择

    本文介绍在串口转TCP/IP中如何使用各种TCP工作模式,根据不同的应用如何进行灵活选择TCP客户端、TCP服务器、UDP、UDP组播。 1.TCP&UDP工作模式   TCP/IP是网际互联的基本协议,TCP/IP实际涉及网络协议的两层:网络层和传输层。IP属于网络层,而TCP属于传输层,实际上TCP/IP协议还有另外部分协议即UDP协议,UDP协议和TCP协议共同组成了TCP/IP协议的传输层。而TCP协议有具有客户端和服务端两种工作模式。在RS232/RS485联网模块应用中,主要在UDP、TCP客户端、TCP服务器3种模式之间进行选择。如图1所示。 1.1 TCP和UDP的区别和比较 图1.TCP&UDP各种工作模式演示   TCP(Transmission Control Protocol)是可靠连接协议。我们可以用打电话来类比TCP协议。使用TCP协议进行数据传输,首先需要建立连接;就如在通电话前需要先拨通电话一样。TCP是可靠传输的,即你传输的数据有误或者丢失,则会自动重新传输以保证数据正确;这正如打电话的时候,如果信号不好,收方会说:“听不清,请再说一遍。”   UDP(User Datagram Protocol)是报文传输协议。我们可以用手机短信来类比UDP协议。使用UDP协议,你无需先征得对方的同意(无需先建立连接),可以随时发送。但是UDP协议是不可靠传输的,你发送出去的数据不能够保证正确地被对方收到;   所谓“正确接收”,它包括3方面的内容:1.丢失问题:数据丢失后可以重传。2.误码问题:数据内容错误能被检测并重新发送。3.顺序问题:UDP无法保证数据的顺序,例如在发送长文字的短信的时候,有可能后半部分短信内容先收到,然后再收到前半部分短信内容。这给接收者较大的迷惑,TCP协议没有这个问题。 UDP协议的也有自身优点。1.简单性、方便性,UDP协议非常类似串口通信,因为串口发送数据本身基于非连接(报文)的。此时在串口转以太网的时候,使用UDP协议符合原来的思维。2.UDP协议具有广播、组播功能,可以实现一对多通信。 表1. TCP与UDP的区别    TCP UDP 需要连接 是 否 占用线路 是 否 可靠传输 是 否 简单易用 否 是 支持广播 否 是 1.2 TCP客户端和TCP服务器的区别   在选择TCP进行通信的时候,通信的双方,必须一方为TCP客户端(TCP Client),一方为TCP服务器(TCP Server)。以打电话来类比,打电话的人是TCP客户端,接电话的一方为TCP服务器。TCP/IP协议中的IP地址类似电话号码,而TCP/IP中的端口号类似电话分机号。客户端(拨电话者),首先需要知道对方的IP地址和端口(电话号码和分机号),先连接上TCP服务器端(接听者的电话摘机),才能进行数据传输(通话)。和一般电话不同,在这里TCP服务器可以同时接入多个TCP客户端,就如有多路线路的电话,不会因为一路电话在接通中而不能接入其它电话。   在ZLSN联网模块的RS232转网络中,TCP的长连接和短连接。TCP长连接就是连接建立后不断开,直到断电。TCP短连接是指需要通信的时候建立连接,通信完毕后立即关闭连接。 2.工作模式的选择 2.1 TCP和UDP的选择   TCP协议有很多优点,这里只介绍何时使用UDP协议。 1.节省上位机的线路资源。在ZLSN模块的串口转以太网应用中,如果选择TCP协议,且为TCP客户端的话,那么TCP连接是在模块上电之后就开始连接的,属于“长连接”。这就使得TCP协议一直占用一条通信线路(一个socket接口),如果联网模块个数很多(例如上万个),那么用TCP协议占用较多资源。 2.简化上位机编程的复杂性。基于UDP的socket编程相对于TCP要简单些。 3.需要广播或者组播的应用。 2.2 客户端和服务器的选择 1. 一个监控中心还是多个监控中心。   一个监控中心:在单个监控中心的集中监控系统中,分散在各个采集点的ZLSN模块将采集数据传送到中心计算机,此时最好采用ZLSN模块为TCP客户端的方式,因为此时每个模块只要设置一个目的IP(中心计算机的IP地址)即可。当然也可以采用中心为客户端、模块为服务端方式,但是此时中心必须记住每个模块的IP地址,不利于系统的延展性和配置的灵活性。   多个监控中心:现在有多个中心计算机需要监控联网模块,由于TCP客户端模块只能连接一个中心,所以多个中心无法监控一个模块(除非或者采用卓岚的“硬件TCP/IP协议栈”功能,让模块可以根据需要连接到不同的中心)。此时应该采用模块为客户端的方式。 2.知道对方IP地址。如果通信的AB双方中如果有一方A不知道对方B的IP地址,那么A必须作为客户端。这是因为A不知道B的IP地址,也无法进行连接操作。在ZLSN联网模块大量应用的网络中,ZLSN联网模块的IP地址通过动态获取,所以中心并不知道所有模块的IP地址,所以此时模块应该作为客户端。 3.主从关系。在主从关系的通信模式中,主机总是先发送数据,从机给出应答。在TCP短连接应用中,主机应该采用客户端。这是因为短连接采用有数据发送的时候建立TCP连接的方式,只有主机才知道何时需要发送那个数据合适需要建立连接,所以主机为客户端。 2.3 TCP短连接和TCP长连接的选择   TCP短连接由于占用的TCP线路资源少,一般效率优于长连接。但是以下情况下采用长连接:通信的双方没有主从关系。任何一方都有首先发送数据的可能,所以要保持TCP连接一直保持。选择长连接的时候需要注意,在连接建立到当前,中间网线是否有断开,需要时时检测连接的可用性,短连接无该问题,使用较为方便。

    时间:2011-05-30 关键词: rs tcp 232 tcpip

  • 基于ARM LPC2292 的CAN总线和以太网间的网关设计

    0 引言   CAN 总线是一种设备互连的总线型控制网络,与其它的现场总线相比,CAN 总线的数据通信具有突出的可靠性、实时性和灵活性。这些特点使得其能同时满足过程控制和制造业自动化的需求,因此被认为是最具有发展前途的现场总线之一。但是,由于其收发器驱动能力的限制,约束了CAN 总线的最远直接传输距离和总线上可以挂接的最大节点数,给系统组网带来了一定的困难。而另一方面,由于以太网的低成本、开放性、应用软硬件的支持以及强大的组网能力,目前已经是应用最广泛的局域网络技术,越来越多的工程师们开始采用CAN 总线与以太网结合的技术。针对这样一种情况,本文提出一种CAN 总线和以太网互连系统的设计方案,实现CAN 总线网和以太网的数据互连。  1 系统结构   用网关连接CAN 现场总线和以太网的网络架构图如图1 所示。 图1 系统网络结构示意图  网关的嵌入不仅使管理深入到控制现场,同时给系统组网带来了很大的方便。  1.1 网关嵌入的益处   ① 增大了系统的最大CAN节点数  在不接中继器的条件下,一个CAN 子网内最多可以挂接110 个节点,而每个网关下可以连接一个子网,通过多个网关可以把多个子网联系在一起,从而增加了系统的节点数。  ② 扩大了系统的组网范围  CAN 的直接通信距离大概只有10km 左右,系统按照现场区域和节点数构建子网,子网与子网通过以太网连接,从而突破了区域和距离的限制。  ③ 实现了具有不同传输速度的现场总线子网的相互通信网关提供一个友好的人机接口,用户可以根据需要设置IP 地址和CAN 控制器的波特率。  1.2 网关嵌入的问题   网关的应用给系统带来方便的同时,也付出了一定的代价,在设计中必须考虑这些问题,以提高系统的整体效率。这些问题表现在:  ①实时性  由于使用网关,对数据的处理必须经历先存储,再转换,最后再发送的过程,增加了一些存储转发延时。因此在设计中必须考虑系统的实时性,要求系统能在存储新接收到的数据后立即启动协议转换和数据转发任务,尽量减小系统延时。  ② 安全性  若网关出现故障,会对CAN 子网和以太网间的通信产生影响,甚至会瘫痪这个子网与整个系统的通信。因此在硬件设计中,要尽量避免干扰等问题的出现;软件设计必须能对一些可纠正错误及时作出反应,并把错误信息返回给用户。  2 网关硬件设计   网关硬件设计分为CAN 接口、以太网网络接口和人机接口等3 个部分。  2.1 主控制器的选择   主控制器采用Philips 的ARM 控制器LPC2292。LPC2292 基于一个支持实时仿真和跟踪TM 的16/32 位ARM7TDMI-SCPU。CPU 内核工作电压为1.8V,引脚工作电压为3.3V。   LPC2292 带有256 k 字节(kB)嵌入的高速Flash 存储器,完全可以满足系统代码的容量要求,无需外扩存储器;独特的加速结构使32 位代码能够在最大时钟速率下运行,可实现TCP/IP 协议栈中的ARP、TCP、UDP、ICMP 等网络协议。   LPC2292 内部集成两个CAN 控制器,方便系统采用冗余设计。CAN控制器主要特性有:单个总线上的数据传输速率高达1Mb/s;32 位寄存器和RAM 访问;兼容CAN2.0B,ISO11898-1规范;全局验收滤波器可以识别所有的11 位和29 位Rx 标识符;验收滤波器为选择的标准标识符提供了FullCAN-style 自动接收。   CPU 外部静态存储器控制器为CPU 内部系统总线和外部存储器或外部I/O 器件提供了一个接口。利用这种外部总线可以方便与以太网网卡控制器进行连接。  2.2  CAN 接口  考虑系统的安全性,CAN 接口部分采用冗余设计。当正常通道发生故障时自动调用冗余通道进行传输;如果冗余通道也发生故障,则进入故障处理。其硬件接口示意图如图2 所示。LPC2292 两路通道分别通过高速总线驱动器TJA1050 与总线相连。总线驱动器采用带隔离的DC/DC 单独供电,不仅实现了两路通道之间的电气隔离,也实现了网关与总线之间的电气隔离。  2.3  网络接口   网卡控制器采用台湾RETACK 公司的10M 以太网控制芯片RTL8019 ,支持全双工工作模式,软件兼容8 位或16 位的NE2000 模式;内部集成DMA 控制器、ISA 总线控制器以及16kRAM 、网络PHY 收发器等。RTL8019 使用LPC2292 外部存储控制的BANK3 部分,它的数据地址范围为0x83400000~0x8340001F 。RTL8019 的工作电压为+5V,而LPC2292 的引脚工作电压为3.3V ,所以还应在连接线上串联470 Ω 的保护电阻。网络采用双绞线传输。 图2 网络硬件结构示意图  2.4  人机接口   除了上面的主要部分外,还有LED 数码管显示和键盘部分,LED 用来显示工作状态,键盘根据具体实际情况修正总线波特率和网关的IP 地址。  3 软件设计   3.1  引入RTOS   网关设计对系统的实时性要求比较高,而采用传统的前后台设计方法又会显得过于复杂,实时性得不到保证。解决这个问题的最好方法就是采用实时操作系统RTOS 。目前世界上已有一大批成熟的嵌入式操作系统,其中μC/OS-II 操作系统是一种源代码公开的嵌入式操作系统,具有代码短小精悍、简单易学的特点,针对网关的设计,这是一个理想的选择。  μC/OS-II 完全是占先式的实时内核,是基于优先级的,即总是让就绪态中优先级最高的任务先运行,因此实时性比非占先的内核要好。它的绝大部分代码是用C 语言编写的,可移植性强。 图3 嵌入式计算机系统 [!--empirenews.page--]  3.2  系统构成   嵌入式网关的功能主要是进行以太网数据报文和CAN 数据帧之间的协议转换,实现以太网和CAN 总线的互连;其次是根据应用环境,通过人机交互接口改变网关的IP 地址和CAN 总线的波特率。整个嵌入式系统的构成如图3 所示。在进行任务设计之前的前期工作有:  ① 实时操作系统的移植。μC/OS-II 可以在绝大多数8 位、16 位、32 位、以至64 位微处理器、微控制器、数字信号处理器(DSP)上运行。μC/OS-II 在LPC2292 上的移植可参考文献[1]。  ② TCP/IP 协议和CAN 协议的嵌入。由于μC/OS-II 操作系统只包含了实时内核、任务管理、时间管理、任务间的通信同步(信号量、邮箱、消息队列)和内存管理等功能,所以用户必须根据自己的需要添加一些功能模块。网关的设计将TCP/IP 和CAN 协议嵌入到操作系统中,并提供一些API 接口函数供用户调用。   3.3 系统实现   采用RTOS 使整个设计简单且易调试,各个任务相互独立,而且各个任务具有不同的优先级可以保证紧急任务及时响应,从而能有效地对任务进行调度。系统软件设计由操作系统和一系列用户应用程序构成。 主函数是程序首先执行的一个函数。该函数永远不返回,主要实现系统的硬件(包括中断、键盘、显示等)和操作系统(包括任务控制块、事件控制块)的初始化,而且在启动多任务调度之前,必须至少创建一个任务。在本系统中创建了一个启动任务,主要负责时钟的初始化和启动、中断的启动、CAN 控制器的初始化与启动、端口与IP 地址的初始化和RTL8019 的初始化与启动,并且对各个应用任务进行了划分。在交出CPU 的使用权之后自做一些空闲处理。   3.3.1  任务的划分  要完成多任务系统的各种功能必须对任务进行划分。本程序根据各个任务的重要性和实时性,把整个模块分成7 个具有不同优先级的应用任务:系统监控、CAN 数据发送、键盘扫描、以太网数据发送、协议转换、LED显示、系统配置等。表1 所示为任务划分表。 表1  任物划分表 除了7 个主要应用任务之外,还有两个中断服务子程序:一个时钟节拍中断,提供周期性信号源;另一个接收中断,把接收到的数据写入缓冲区。  3.1.2  任务的具体实现任务划分后,各任务具有独立的堆栈空间,彼此争夺CPU 的使用权。一旦获得CPU 的使用权,就会独立运行而完成特定的功能。  CAN 总线通信模块包括数据传输和总线管理两个部分。数据传输实现的功能有CAN 初始化、CAN 报文发送和CAN 报文接收。CAN 初始化及报文的接收在启动任务与中断服务程序中实现,CAN 报文发送和总线管理作为一个单独的任务独立运行。总线管理功能块实现的主要是总线检测,判断一路总线是否良好。如果不是,就进入另一路总线检测;如果冗余总线良好,就采用冗余总线通信。CAN 数据发送任务需要系统调度器通知是否有待发送数据进入发送队列,任务的实现如图4 所示。图4 数据发送任务实现图  以太网通信模块由以太网数据收发功能块和数据协议管理功能块构成。数据的收发功能块主要实现RTL8019 的初始化、数据报文的发送与接收。同理,RTL8019 的初始化在系统的启动任务中实现。数据的接收在RTL8019 的中断服务程序中实现。数据协议管理主要实现对接收数据报文的解析,以及给待发送数据添加协议报头。以太网数据发送与协议管理分别作为独立任务运行。  以太网数据发送任务同样需要系统调度器通知发送队列中是否有待发送的数据。若没有数据发送,则将 该任务挂起,系统运行其他任务。以太网数据发送任务通过对RTL8019 的操作完成,根据RTL8019 的状态,将发送队列中数据通过DMA 传送到8019 的发送缓冲区启动发送,并根据发送结果,对发送队列指针进行调整。   以太网协议管理即协议转换任务在用户数据与8019 驱动需要的数据报文之间进行协议转换。TCP/IP 协议为应用层、传输层、网络层和数据链路层等4 层模型,每层具有不同的功能,并对应相应的子协议,而且层与层之间在逻辑上是相互独立的。在编程时,可以直接调用嵌入的TCP/IP 协议的API 函数对数据报文进行分层。该任务对从8019 传过来的数据处理示意图如图5 所示。不同的子协议具有不同的功能号,任务根据功能号对协议进行区别。把用户数据传递给8019 驱动的示意图是图5 的逆序表示。图5  协议转换任务的数据处理的示意图   3.3.3 任务间的同步与调度  通常多任务操作系统的任务不同于一般的函数,它是一个无限循环,而且没有返回值。如果没有更高优先级的任务进入就绪态,当前任务是不会放弃对CPU 的使用权的。为了实现操作系统的正常运行和有关事件的同步,必须正确处理任务间的通信和事件标志的设置。整个系统的功能结构如图6 所示。图6 系统运行示意图  各个任务具有不同的优先级,通过调用系统挂起函数或延时函数可以启动具有更高优先级的进入就绪态的任务。高优先级的任务,例如1、2、3、4 号任务,往往由于申请某个资源而发生阻塞,进入挂起态。系统调度器启动低优先级的任务,通过对延时参数的设置,每隔一定时钟节拍就启动键盘扫描或LED 显示任务。如果其中有任何一事件发生就启动相关的任务,这个过程通过信号量的通信机制来实现。对每一个事件分配一个信号量,一旦事件发生就启动信号量的等待任务列表中进入就绪态的任务,从而保证任务与事件的同步。  4 结束语   在嵌入式硬件平台的基础上,用μC/OS-II 实时操作系统开发应用程序有其独到之处,用户可以直接利用系统的接口函数编写自己的应用程序,毋需另行开发,大大方便了用户编程,缩短了软件的开发周期,提高了开发效率;基于ARM LPC2292 CAN 总线和以太网间的网关,在实验调试过程中运行状况良好,工作稳定。

    时间:2009-02-22 关键词: 以太网 ARM 网关 can 总线 电源技术解析 基于 设计 lpc2292 ucos tcpip

  • 基于ARM LPC2292 的CAN总线和以太网间的网关设计

    0 引言   CAN 总线是一种设备互连的总线型控制网络,与其它的现场总线相比,CAN 总线的数据通信具有突出的可靠性、实时性和灵活性。这些特点使得其能同时满足过程控制和制造业自动化的需求,因此被认为是最具有发展前途的现场总线之一。但是,由于其收发器驱动能力的限制,约束了CAN 总线的最远直接传输距离和总线上可以挂接的最大节点数,给系统组网带来了一定的困难。而另一方面,由于以太网的低成本、开放性、应用软硬件的支持以及强大的组网能力,目前已经是应用最广泛的局域网络技术,越来越多的工程师们开始采用CAN 总线与以太网结合的技术。针对这样一种情况,本文提出一种CAN 总线和以太网互连系统的设计方案,实现CAN 总线网和以太网的数据互连。  1 系统结构   用网关连接CAN 现场总线和以太网的网络架构图如图1 所示。 图1 系统网络结构示意图  网关的嵌入不仅使管理深入到控制现场,同时给系统组网带来了很大的方便。  1.1 网关嵌入的益处   ① 增大了系统的最大CAN节点数  在不接中继器的条件下,一个CAN 子网内最多可以挂接110 个节点,而每个网关下可以连接一个子网,通过多个网关可以把多个子网联系在一起,从而增加了系统的节点数。  ② 扩大了系统的组网范围  CAN 的直接通信距离大概只有10km 左右,系统按照现场区域和节点数构建子网,子网与子网通过以太网连接,从而突破了区域和距离的限制。  ③ 实现了具有不同传输速度的现场总线子网的相互通信网关提供一个友好的人机接口,用户可以根据需要设置IP 地址和CAN 控制器的波特率。  1.2 网关嵌入的问题   网关的应用给系统带来方便的同时,也付出了一定的代价,在设计中必须考虑这些问题,以提高系统的整体效率。这些问题表现在:  ①实时性  由于使用网关,对数据的处理必须经历先存储,再转换,最后再发送的过程,增加了一些存储转发延时。因此在设计中必须考虑系统的实时性,要求系统能在存储新接收到的数据后立即启动协议转换和数据转发任务,尽量减小系统延时。  ② 安全性  若网关出现故障,会对CAN 子网和以太网间的通信产生影响,甚至会瘫痪这个子网与整个系统的通信。因此在硬件设计中,要尽量避免干扰等问题的出现;软件设计必须能对一些可纠正错误及时作出反应,并把错误信息返回给用户。  2 网关硬件设计   网关硬件设计分为CAN 接口、以太网网络接口和人机接口等3 个部分。  2.1 主控制器的选择   主控制器采用Philips 的ARM 控制器LPC2292。LPC2292 基于一个支持实时仿真和跟踪TM 的16/32 位ARM7TDMI-SCPU。CPU 内核工作电压为1.8V,引脚工作电压为3.3V。   LPC2292 带有256 k 字节(kB)嵌入的高速Flash 存储器,完全可以满足系统代码的容量要求,无需外扩存储器;独特的加速结构使32 位代码能够在最大时钟速率下运行,可实现TCP/IP 协议栈中的ARP、TCP、UDP、ICMP 等网络协议。   LPC2292 内部集成两个CAN 控制器,方便系统采用冗余设计。CAN控制器主要特性有:单个总线上的数据传输速率高达1Mb/s;32 位寄存器和RAM 访问;兼容CAN2.0B,ISO11898-1规范;全局验收滤波器可以识别所有的11 位和29 位Rx 标识符;验收滤波器为选择的标准标识符提供了FullCAN-style 自动接收。   CPU 外部静态存储器控制器为CPU 内部系统总线和外部存储器或外部I/O 器件提供了一个接口。利用这种外部总线可以方便与以太网网卡控制器进行连接。  2.2  CAN 接口  考虑系统的安全性,CAN 接口部分采用冗余设计。当正常通道发生故障时自动调用冗余通道进行传输;如果冗余通道也发生故障,则进入故障处理。其硬件接口示意图如图2 所示。LPC2292 两路通道分别通过高速总线驱动器TJA1050 与总线相连。总线驱动器采用带隔离的DC/DC 单独供电,不仅实现了两路通道之间的电气隔离,也实现了网关与总线之间的电气隔离。  2.3  网络接口   网卡控制器采用台湾RETACK 公司的10M 以太网控制芯片RTL8019 ,支持全双工工作模式,软件兼容8 位或16 位的NE2000 模式;内部集成DMA 控制器、ISA 总线控制器以及16kRAM 、网络PHY 收发器等。RTL8019 使用LPC2292 外部存储控制的BANK3 部分,它的数据地址范围为0x83400000~0x8340001F 。RTL8019 的工作电压为+5V,而LPC2292 的引脚工作电压为3.3V ,所以还应在连接线上串联470 Ω 的保护电阻。网络采用双绞线传输。 图2 网络硬件结构示意图  2.4  人机接口   除了上面的主要部分外,还有LED 数码管显示和键盘部分,LED 用来显示工作状态,键盘根据具体实际情况修正总线波特率和网关的IP 地址。  3 软件设计   3.1  引入RTOS   网关设计对系统的实时性要求比较高,而采用传统的前后台设计方法又会显得过于复杂,实时性得不到保证。解决这个问题的最好方法就是采用实时操作系统RTOS 。目前世界上已有一大批成熟的嵌入式操作系统,其中μC/OS-II 操作系统是一种源代码公开的嵌入式操作系统,具有代码短小精悍、简单易学的特点,针对网关的设计,这是一个理想的选择。  μC/OS-II 完全是占先式的实时内核,是基于优先级的,即总是让就绪态中优先级最高的任务先运行,因此实时性比非占先的内核要好。它的绝大部分代码是用C 语言编写的,可移植性强。 图3 嵌入式计算机系统 [!--empirenews.page--]  3.2  系统构成   嵌入式网关的功能主要是进行以太网数据报文和CAN 数据帧之间的协议转换,实现以太网和CAN 总线的互连;其次是根据应用环境,通过人机交互接口改变网关的IP 地址和CAN 总线的波特率。整个嵌入式系统的构成如图3 所示。在进行任务设计之前的前期工作有:  ① 实时操作系统的移植。μC/OS-II 可以在绝大多数8 位、16 位、32 位、以至64 位微处理器、微控制器、数字信号处理器(DSP)上运行。μC/OS-II 在LPC2292 上的移植可参考文献[1]。  ② TCP/IP 协议和CAN 协议的嵌入。由于μC/OS-II 操作系统只包含了实时内核、任务管理、时间管理、任务间的通信同步(信号量、邮箱、消息队列)和内存管理等功能,所以用户必须根据自己的需要添加一些功能模块。网关的设计将TCP/IP 和CAN 协议嵌入到操作系统中,并提供一些API 接口函数供用户调用。   3.3 系统实现   采用RTOS 使整个设计简单且易调试,各个任务相互独立,而且各个任务具有不同的优先级可以保证紧急任务及时响应,从而能有效地对任务进行调度。系统软件设计由操作系统和一系列用户应用程序构成。 主函数是程序首先执行的一个函数。该函数永远不返回,主要实现系统的硬件(包括中断、键盘、显示等)和操作系统(包括任务控制块、事件控制块)的初始化,而且在启动多任务调度之前,必须至少创建一个任务。在本系统中创建了一个启动任务,主要负责时钟的初始化和启动、中断的启动、CAN 控制器的初始化与启动、端口与IP 地址的初始化和RTL8019 的初始化与启动,并且对各个应用任务进行了划分。在交出CPU 的使用权之后自做一些空闲处理。   3.3.1  任务的划分  要完成多任务系统的各种功能必须对任务进行划分。本程序根据各个任务的重要性和实时性,把整个模块分成7 个具有不同优先级的应用任务:系统监控、CAN 数据发送、键盘扫描、以太网数据发送、协议转换、LED显示、系统配置等。表1 所示为任务划分表。 表1  任物划分表 除了7 个主要应用任务之外,还有两个中断服务子程序:一个时钟节拍中断,提供周期性信号源;另一个接收中断,把接收到的数据写入缓冲区。  3.1.2  任务的具体实现任务划分后,各任务具有独立的堆栈空间,彼此争夺CPU 的使用权。一旦获得CPU 的使用权,就会独立运行而完成特定的功能。  CAN 总线通信模块包括数据传输和总线管理两个部分。数据传输实现的功能有CAN 初始化、CAN 报文发送和CAN 报文接收。CAN 初始化及报文的接收在启动任务与中断服务程序中实现,CAN 报文发送和总线管理作为一个单独的任务独立运行。总线管理功能块实现的主要是总线检测,判断一路总线是否良好。如果不是,就进入另一路总线检测;如果冗余总线良好,就采用冗余总线通信。CAN 数据发送任务需要系统调度器通知是否有待发送数据进入发送队列,任务的实现如图4 所示。图4 数据发送任务实现图  以太网通信模块由以太网数据收发功能块和数据协议管理功能块构成。数据的收发功能块主要实现RTL8019 的初始化、数据报文的发送与接收。同理,RTL8019 的初始化在系统的启动任务中实现。数据的接收在RTL8019 的中断服务程序中实现。数据协议管理主要实现对接收数据报文的解析,以及给待发送数据添加协议报头。以太网数据发送与协议管理分别作为独立任务运行。  以太网数据发送任务同样需要系统调度器通知发送队列中是否有待发送的数据。若没有数据发送,则将 该任务挂起,系统运行其他任务。以太网数据发送任务通过对RTL8019 的操作完成,根据RTL8019 的状态,将发送队列中数据通过DMA 传送到8019 的发送缓冲区启动发送,并根据发送结果,对发送队列指针进行调整。   以太网协议管理即协议转换任务在用户数据与8019 驱动需要的数据报文之间进行协议转换。TCP/IP 协议为应用层、传输层、网络层和数据链路层等4 层模型,每层具有不同的功能,并对应相应的子协议,而且层与层之间在逻辑上是相互独立的。在编程时,可以直接调用嵌入的TCP/IP 协议的API 函数对数据报文进行分层。该任务对从8019 传过来的数据处理示意图如图5 所示。不同的子协议具有不同的功能号,任务根据功能号对协议进行区别。把用户数据传递给8019 驱动的示意图是图5 的逆序表示。图5  协议转换任务的数据处理的示意图   3.3.3 任务间的同步与调度  通常多任务操作系统的任务不同于一般的函数,它是一个无限循环,而且没有返回值。如果没有更高优先级的任务进入就绪态,当前任务是不会放弃对CPU 的使用权的。为了实现操作系统的正常运行和有关事件的同步,必须正确处理任务间的通信和事件标志的设置。整个系统的功能结构如图6 所示。图6 系统运行示意图  各个任务具有不同的优先级,通过调用系统挂起函数或延时函数可以启动具有更高优先级的进入就绪态的任务。高优先级的任务,例如1、2、3、4 号任务,往往由于申请某个资源而发生阻塞,进入挂起态。系统调度器启动低优先级的任务,通过对延时参数的设置,每隔一定时钟节拍就启动键盘扫描或LED 显示任务。如果其中有任何一事件发生就启动相关的任务,这个过程通过信号量的通信机制来实现。对每一个事件分配一个信号量,一旦事件发生就启动信号量的等待任务列表中进入就绪态的任务,从而保证任务与事件的同步。  4 结束语   在嵌入式硬件平台的基础上,用μC/OS-II 实时操作系统开发应用程序有其独到之处,用户可以直接利用系统的接口函数编写自己的应用程序,毋需另行开发,大大方便了用户编程,缩短了软件的开发周期,提高了开发效率;基于ARM LPC2292 CAN 总线和以太网间的网关,在实验调试过程中运行状况良好,工作稳定。

    时间:2009-02-22 关键词: 以太网 ARM 网关 can 总线 电源技术解析 基于 设计 lpc2292 ucos tcpip

  • 基于ARM LPC2292 的CAN总线和以太网间的网关设计

    0 引言   CAN 总线是一种设备互连的总线型控制网络,与其它的现场总线相比,CAN 总线的数据通信具有突出的可靠性、实时性和灵活性。这些特点使得其能同时满足过程控制和制造业自动化的需求,因此被认为是最具有发展前途的现场总线之一。但是,由于其收发器驱动能力的限制,约束了CAN 总线的最远直接传输距离和总线上可以挂接的最大节点数,给系统组网带来了一定的困难。而另一方面,由于以太网的低成本、开放性、应用软硬件的支持以及强大的组网能力,目前已经是应用最广泛的局域网络技术,越来越多的工程师们开始采用CAN 总线与以太网结合的技术。针对这样一种情况,本文提出一种CAN 总线和以太网互连系统的设计方案,实现CAN 总线网和以太网的数据互连。  1 系统结构   用网关连接CAN 现场总线和以太网的网络架构图如图1 所示。 图1 系统网络结构示意图  网关的嵌入不仅使管理深入到控制现场,同时给系统组网带来了很大的方便。  1.1 网关嵌入的益处   ① 增大了系统的最大CAN节点数  在不接中继器的条件下,一个CAN 子网内最多可以挂接110 个节点,而每个网关下可以连接一个子网,通过多个网关可以把多个子网联系在一起,从而增加了系统的节点数。  ② 扩大了系统的组网范围  CAN 的直接通信距离大概只有10km 左右,系统按照现场区域和节点数构建子网,子网与子网通过以太网连接,从而突破了区域和距离的限制。  ③ 实现了具有不同传输速度的现场总线子网的相互通信网关提供一个友好的人机接口,用户可以根据需要设置IP 地址和CAN 控制器的波特率。  1.2 网关嵌入的问题   网关的应用给系统带来方便的同时,也付出了一定的代价,在设计中必须考虑这些问题,以提高系统的整体效率。这些问题表现在:  ①实时性  由于使用网关,对数据的处理必须经历先存储,再转换,最后再发送的过程,增加了一些存储转发延时。因此在设计中必须考虑系统的实时性,要求系统能在存储新接收到的数据后立即启动协议转换和数据转发任务,尽量减小系统延时。  ② 安全性  若网关出现故障,会对CAN 子网和以太网间的通信产生影响,甚至会瘫痪这个子网与整个系统的通信。因此在硬件设计中,要尽量避免干扰等问题的出现;软件设计必须能对一些可纠正错误及时作出反应,并把错误信息返回给用户。  2 网关硬件设计   网关硬件设计分为CAN 接口、以太网网络接口和人机接口等3 个部分。  2.1 主控制器的选择   主控制器采用Philips 的ARM 控制器LPC2292。LPC2292 基于一个支持实时仿真和跟踪TM 的16/32 位ARM7TDMI-SCPU。CPU 内核工作电压为1.8V,引脚工作电压为3.3V。   LPC2292 带有256 k 字节(kB)嵌入的高速Flash 存储器,完全可以满足系统代码的容量要求,无需外扩存储器;独特的加速结构使32 位代码能够在最大时钟速率下运行,可实现TCP/IP 协议栈中的ARP、TCP、UDP、ICMP 等网络协议。   LPC2292 内部集成两个CAN 控制器,方便系统采用冗余设计。CAN控制器主要特性有:单个总线上的数据传输速率高达1Mb/s;32 位寄存器和RAM 访问;兼容CAN2.0B,ISO11898-1规范;全局验收滤波器可以识别所有的11 位和29 位Rx 标识符;验收滤波器为选择的标准标识符提供了FullCAN-style 自动接收。   CPU 外部静态存储器控制器为CPU 内部系统总线和外部存储器或外部I/O 器件提供了一个接口。利用这种外部总线可以方便与以太网网卡控制器进行连接。  2.2  CAN 接口  考虑系统的安全性,CAN 接口部分采用冗余设计。当正常通道发生故障时自动调用冗余通道进行传输;如果冗余通道也发生故障,则进入故障处理。其硬件接口示意图如图2 所示。LPC2292 两路通道分别通过高速总线驱动器TJA1050 与总线相连。总线驱动器采用带隔离的DC/DC 单独供电,不仅实现了两路通道之间的电气隔离,也实现了网关与总线之间的电气隔离。  2.3  网络接口   网卡控制器采用台湾RETACK 公司的10M 以太网控制芯片RTL8019 ,支持全双工工作模式,软件兼容8 位或16 位的NE2000 模式;内部集成DMA 控制器、ISA 总线控制器以及16kRAM 、网络PHY 收发器等。RTL8019 使用LPC2292 外部存储控制的BANK3 部分,它的数据地址范围为0x83400000~0x8340001F 。RTL8019 的工作电压为+5V,而LPC2292 的引脚工作电压为3.3V ,所以还应在连接线上串联470 Ω 的保护电阻。网络采用双绞线传输。 图2 网络硬件结构示意图  2.4  人机接口   除了上面的主要部分外,还有LED 数码管显示和键盘部分,LED 用来显示工作状态,键盘根据具体实际情况修正总线波特率和网关的IP 地址。  3 软件设计   3.1  引入RTOS   网关设计对系统的实时性要求比较高,而采用传统的前后台设计方法又会显得过于复杂,实时性得不到保证。解决这个问题的最好方法就是采用实时操作系统RTOS 。目前世界上已有一大批成熟的嵌入式操作系统,其中μC/OS-II 操作系统是一种源代码公开的嵌入式操作系统,具有代码短小精悍、简单易学的特点,针对网关的设计,这是一个理想的选择。  μC/OS-II 完全是占先式的实时内核,是基于优先级的,即总是让就绪态中优先级最高的任务先运行,因此实时性比非占先的内核要好。它的绝大部分代码是用C 语言编写的,可移植性强。 图3 嵌入式计算机系统 [!--empirenews.page--]  3.2  系统构成   嵌入式网关的功能主要是进行以太网数据报文和CAN 数据帧之间的协议转换,实现以太网和CAN 总线的互连;其次是根据应用环境,通过人机交互接口改变网关的IP 地址和CAN 总线的波特率。整个嵌入式系统的构成如图3 所示。在进行任务设计之前的前期工作有:  ① 实时操作系统的移植。μC/OS-II 可以在绝大多数8 位、16 位、32 位、以至64 位微处理器、微控制器、数字信号处理器(DSP)上运行。μC/OS-II 在LPC2292 上的移植可参考文献[1]。  ② TCP/IP 协议和CAN 协议的嵌入。由于μC/OS-II 操作系统只包含了实时内核、任务管理、时间管理、任务间的通信同步(信号量、邮箱、消息队列)和内存管理等功能,所以用户必须根据自己的需要添加一些功能模块。网关的设计将TCP/IP 和CAN 协议嵌入到操作系统中,并提供一些API 接口函数供用户调用。   3.3 系统实现   采用RTOS 使整个设计简单且易调试,各个任务相互独立,而且各个任务具有不同的优先级可以保证紧急任务及时响应,从而能有效地对任务进行调度。系统软件设计由操作系统和一系列用户应用程序构成。 主函数是程序首先执行的一个函数。该函数永远不返回,主要实现系统的硬件(包括中断、键盘、显示等)和操作系统(包括任务控制块、事件控制块)的初始化,而且在启动多任务调度之前,必须至少创建一个任务。在本系统中创建了一个启动任务,主要负责时钟的初始化和启动、中断的启动、CAN 控制器的初始化与启动、端口与IP 地址的初始化和RTL8019 的初始化与启动,并且对各个应用任务进行了划分。在交出CPU 的使用权之后自做一些空闲处理。   3.3.1  任务的划分  要完成多任务系统的各种功能必须对任务进行划分。本程序根据各个任务的重要性和实时性,把整个模块分成7 个具有不同优先级的应用任务:系统监控、CAN 数据发送、键盘扫描、以太网数据发送、协议转换、LED显示、系统配置等。表1 所示为任务划分表。 表1  任物划分表 除了7 个主要应用任务之外,还有两个中断服务子程序:一个时钟节拍中断,提供周期性信号源;另一个接收中断,把接收到的数据写入缓冲区。  3.1.2  任务的具体实现任务划分后,各任务具有独立的堆栈空间,彼此争夺CPU 的使用权。一旦获得CPU 的使用权,就会独立运行而完成特定的功能。  CAN 总线通信模块包括数据传输和总线管理两个部分。数据传输实现的功能有CAN 初始化、CAN 报文发送和CAN 报文接收。CAN 初始化及报文的接收在启动任务与中断服务程序中实现,CAN 报文发送和总线管理作为一个单独的任务独立运行。总线管理功能块实现的主要是总线检测,判断一路总线是否良好。如果不是,就进入另一路总线检测;如果冗余总线良好,就采用冗余总线通信。CAN 数据发送任务需要系统调度器通知是否有待发送数据进入发送队列,任务的实现如图4 所示。图4 数据发送任务实现图  以太网通信模块由以太网数据收发功能块和数据协议管理功能块构成。数据的收发功能块主要实现RTL8019 的初始化、数据报文的发送与接收。同理,RTL8019 的初始化在系统的启动任务中实现。数据的接收在RTL8019 的中断服务程序中实现。数据协议管理主要实现对接收数据报文的解析,以及给待发送数据添加协议报头。以太网数据发送与协议管理分别作为独立任务运行。  以太网数据发送任务同样需要系统调度器通知发送队列中是否有待发送的数据。若没有数据发送,则将 该任务挂起,系统运行其他任务。以太网数据发送任务通过对RTL8019 的操作完成,根据RTL8019 的状态,将发送队列中数据通过DMA 传送到8019 的发送缓冲区启动发送,并根据发送结果,对发送队列指针进行调整。   以太网协议管理即协议转换任务在用户数据与8019 驱动需要的数据报文之间进行协议转换。TCP/IP 协议为应用层、传输层、网络层和数据链路层等4 层模型,每层具有不同的功能,并对应相应的子协议,而且层与层之间在逻辑上是相互独立的。在编程时,可以直接调用嵌入的TCP/IP 协议的API 函数对数据报文进行分层。该任务对从8019 传过来的数据处理示意图如图5 所示。不同的子协议具有不同的功能号,任务根据功能号对协议进行区别。把用户数据传递给8019 驱动的示意图是图5 的逆序表示。图5  协议转换任务的数据处理的示意图   3.3.3 任务间的同步与调度  通常多任务操作系统的任务不同于一般的函数,它是一个无限循环,而且没有返回值。如果没有更高优先级的任务进入就绪态,当前任务是不会放弃对CPU 的使用权的。为了实现操作系统的正常运行和有关事件的同步,必须正确处理任务间的通信和事件标志的设置。整个系统的功能结构如图6 所示。图6 系统运行示意图  各个任务具有不同的优先级,通过调用系统挂起函数或延时函数可以启动具有更高优先级的进入就绪态的任务。高优先级的任务,例如1、2、3、4 号任务,往往由于申请某个资源而发生阻塞,进入挂起态。系统调度器启动低优先级的任务,通过对延时参数的设置,每隔一定时钟节拍就启动键盘扫描或LED 显示任务。如果其中有任何一事件发生就启动相关的任务,这个过程通过信号量的通信机制来实现。对每一个事件分配一个信号量,一旦事件发生就启动信号量的等待任务列表中进入就绪态的任务,从而保证任务与事件的同步。  4 结束语   在嵌入式硬件平台的基础上,用μC/OS-II 实时操作系统开发应用程序有其独到之处,用户可以直接利用系统的接口函数编写自己的应用程序,毋需另行开发,大大方便了用户编程,缩短了软件的开发周期,提高了开发效率;基于ARM LPC2292 CAN 总线和以太网间的网关,在实验调试过程中运行状况良好,工作稳定。

    时间:2009-02-22 关键词: 以太网 ARM 网关 can 总线 电源技术解析 基于 设计 lpc2292 ucos tcpip

发布文章

技术子站

更多

项目外包