1.绪论
现场总线作为生产现的场数据通信与控制的网络技术,在测量控制领域随着信息技术的发展已得到广泛的应用。现在的工业现场总线控制网络技术已经被认为是一种比较的成熟的技术,同时也被认为是目前最具有前途的一种现场总线之一。然而,CAN现场总线作为一种面向工业底层控制的通信网络,其局限性也是显而易见的。首先,它不能与Internet互连,不能实现远程信息共享。其次,它不易与上位控制机直接接口。因此,我们在本文中引入以太网技术。
以太网是在上个世纪70年代为连接多个实验室而开发出的一种局域网技术,随着互联网技术和计算机的迅猛发展,以太网已成为当今世界上应用范围最广、最为常见的一种网络技术。他在工业控制中的优势是显而易见的:首先,基于TCP/IP协议的以太网是一种标准开放式的网络,由其组成的系统兼容性和互操作性好,资源共享能力强,可以很容易的实现将控制现场的数据与信息系统上的资源共享;其次,数据的传输距离长、传输速率高,而且很容易与Internet连接。
本设计利用基于ARM7内核的LPC2294处理器,在深入分析了以太网、TCP/IP协议和CAN总线的基础上,实现了两路CAN总线和以太网的通信互联。
2.系统硬件结构设计
本设计使用的处理器是PHIIPS公司推出的LPC2294,他是一款基于支持实时仿真和跟踪的ARM7TDMI内核,功能强大且功耗低。
其显着的优点是非常适合于通讯网关、协议转换器以及其它各种类型的应用。设计中围绕LPC2294内核,进行了最小系统和相应的扩展器件电路设计,设计里包括了复位电路、晶振电路、电源电路等关键电路。
2.1系统电源电路设计
由于核心控制器LPC2294需要2组电源:
1.8V的内核供电电源和3.3V的I\O口供电电源,而以太网控制器RTL8019AS需要的供电电源为5V.因此,我们设计了3个电压转换电路:采用降压稳压器LM1575将输入电压转换为稳定的5V输出,再通过低压差(LDO)稳压器SPX1117M-3.3把LM1575稳压输出的5V作为输入电源,转换为3.3V输出电源,同时利用SPX1117M-1.8得到了1.8V电源。
2.2以太网电路设计
以太网通信模块采用了以太网控制器RTL8019AS(5V供电)和隔离接口HR90117A的组合方式。设计中使用两路CAN进行数据采集,由于LPC2294具有4路CAN控制器,其功能与SJA1000相似,因此只需外接两个高速CAN隔离收发器便可达到通信的目的[2].
2.3 CAN电路设计
CAN总线模块是本设计的核心部分,负责实现数据采集的功能。设计中使用的CTM1050T是一款带隔离的高速CAN收发器芯片,该芯片内部集成了所有必需的CAN隔离及CAN收、发器件,这些都被集成在不到3平方厘米的芯片上,芯片的主要功能是将CAN控制器的逻辑电平转换为CAN总线的差分电平并且具有DC2500V的隔离功能及ESD(Electro-Static Discharge,静电释放)保护作用。
本记录仪使用CTM1050T向上兼容的3.3V和5V CAN控制器,实现了两路CAN数据采集,所以LPC2294和CTM1050T之间数据发送接收引脚可以直接连接,同时我们还需加入一个电阻阻值为20Ω的终端电阻来提高数据通信的抗干扰性及可靠性。
3.系统软件设计
3.1程序设计开发环境及设计流程
设计以VC++6.0为开发环境,C语言为开发语言,首先完成了系统的移植,接着完成了RTL8019AS软件设计与CAN控制器软件设计,实现了CAN与以太网网关协议转换。
3.2μc/os-Ⅱ的移植
为了使一个内核能够运行在微处理器或微控制器上,我们首先需要做的便是进行移植。完成移植的过程中我们修改了3个和CPU相关的文件,分别是os_cpu.h、os_cpu_a.asm和os_cpu_c.c,移植的过程中发现:
根据处理器的不同,一个移植实例需要编写或改写的代码数量不尽相同,可能介于50~500行之间。
3.3 RTL8019AS软件设计
RTL8019AS的工作模式有查询和中断两种模式,本设计中考虑到实时性、多任务,以最大限度的利用CPU与μc/os-Ⅱ系统的实时性、提高系统的响应速度为目的,采用了中断的方式来实现RTL8019AS的收发功能。
当所谓的中断过程既在中断服务子程序(ISR)的入口处,程序的走向由读取到的ISR的值来确定。如果收到一个新的帧,则首先清除接收中断标志,接着读取帧数据,等待接收缓冲区空;如果没有收到新的帧,则判断帧是否发送完毕,若一帧已发送完则清除发送中断标志并读取状态寄存器,并进一步判断发送队列是否还有未发送的数据帧,如果有则继续发送。如果全部数据发送完,则从中断子程序返回。主程序流程图如图1所示。
3.4 CAN控制器软件设计
设计中使用的处理器LPC2294内部集成了4个独立的CAN模块,并且为所有的CAN控制器提供了全局的可以接受标识符查询的功能。设计中只使用到CAN控制器1和CAN控制器2两个控制器,CAN模块的存储器在处理器中的地址映射如下:
AF RAM(2KB):E0038000~E00387FF;
AF RAM寄存器:E003C000~E003C017;
中央CAN寄存器:E0040000~E004000B;
CAN控制器1寄存器:E0044000~E004405F;
CAN控制器2寄存器:E0048000~E004805F;
CAN的驱动程序主要包括四个部分:CAN的初始化、CAN的数据接收、CAN的数据发送和异常处理。
另外,由于CAN通信中没有物理地址,只是采用软件ID辨识的方式来对总线上的信息进行过滤的,并且ID还决定当有多个节点需要同时传送数据时的优先级,故对ID设置要格外注意。
3.5 CAN与以太网网关协议转换
由于以太网和CAN是两个不同的通信系统,当连接在CAN总线上的设备向以太网发送数据时,数据必须通过CAN接口电路发送到主系统上,通过协议转换程序,提取要传送的数据,然后对数据添加TCP和IP协议所需要的帧信息。
在本设计中用到的μc/os-Ⅱ操作系统下,应用层功能是以5个主要的任务来实现的,按优先级从高到低依次为:CAN总线接收数据包;CAN总线发送数据包;TCP/UDP协议数据包接收;TCP/UDP协议数据包发送;主系统协议转换。
4.系统测试
接通电源,程序正常启动后,数据记录仪开始工作。连通后的ip地址为192.168.
1.102,物理地址为00-26-18-20-d9-f0,通过ping命令测试,证明数据包收发成功,设备联通正常。
程序运行后,依次完成获取数据容量、读取时间、设定时间、清空记录仪、获取坏块、初始化记录仪,接着数据记录仪开始工作,程序运行结果如图2所示。
5.结束语
测试证明:系统完成了CAN和以太网互联的功能,具有较高的可靠性和易用性。记录仪具备了在以太网高速数据传输下记录、储存、分析总线数据的能力,使设备在调试阶段、实际运行工作阶段以及日常维护阶段具备了完善的电子数据诊断和故障定位能力