基于Ethernet 的冗余CAN 总线协议转换器设计
CAN 总线冗余控制程序的基本设计思路为:在上电初始化时同时激活两个总线控制器的中断,在节点设备向上位机发送数据的情况下,单片机通过两路CAN 总线向上位机发送相同内容的数据来实现冗余效果.在节点设备接收通信数据的情况下,当两个总线控制器同时接收到来自上位机的报文时,将分别通过不同的中断端口向单片机发出中断请求,单片机在响应先到达的中断请求信号后进入中断服务程序关闭中断,并在对数据进行处理完成后,清除中断并在一段延时后再打开所有中断,这样就可以屏蔽后到的另一个CAN 控制器中断信号.如果一路CAN 总线接口电路出现故障,那么它就不会产生中断信号,单片机只能接收到另一路正常CAN 总线控制器的中断信号,从而通过正常的CAN 总线接收数据,这样就可以实现双通道冗余的目的;在节点设备与上位机之间完成数据发送和接收后,节点设备会通过两路CAN 总线以每秒1次的频率交替向上位机发送“心跳”信号,并接收上位机回传的响应信息,如果一路CAN 总线状态异常,不能正常发送“心跳”信号,则节点设备的单片机就不会收到响应信息,从而无法对错误计数器进行清零,当错误计数器的值累加到设定值时,单片机就会对异常的CAN 总线接口电路复位,重行初始化使其恢复正常,保证双通道CAN 总线冗余电路的正常.
2. 2 CAN / 以太网协议转换程序
CAN/ 以太网协议转换程序的大致流程如下:在系统接收到数据后会先对数据的数据类型进行判断,如果接收到的数据是以太网数据,就会依次去掉IP 头.TCP 或UDP 头和应用层头 ,然后将解析后的数据封装为CAN 报文格式,并存人CAN 接口电路发送缓冲区,由CAN 接口电路发往CAN 总线中相应的节点设备.如果接收到的数据是CAN 协议报文,便解析出数据部分,然后将报文数据部分封装成规定的应用层格式并存入以太网接口发送缓冲区,最后将数据封装成以太网帧格式后通过以太网接口电路发往至以太网.
协议转换流程图见图5.
2. 3 以太网通信程序
以太网通信程序主要包括CP2200 初始化程序.以太网数据发送程序和接收程序.CP2200 芯片的初始化程序的作用主要是对芯片寄存器进行常规配置 ,这里就不进行详细说明.
以太网数据的发送和接收程序:由于主控芯片C8051F340 的处理速度以及内部集成的资源有限,不可能集成所有的TCP/ IP 协议,因此需要对TCP/ IP 协议进行适当的剪裁后才能使用 .在本设计中的协议栈主要包括IP 协议.ICMP 协议.TCP 协议.ARP 协议 .
本设计的嵌入式TCP/ IP 协议栈的流程见图6.
基本流程为在CP2200 芯片从以太网接收到有效数据后,单片机会调用相关程序将该数据包从CP2200 的接收缓冲区读取,然后判断该数据帧是IP 数据包还是ARP 数据 ,如果判断为接收到的是IP 数据包时,那么就继续判断是UDP 数据包还是ICMP 数据包,如果是UDP 数据包,就根据UDP 数据包首部的读取结果来处理相应数据,完成CAN 协议数据的提取并将其存储到相应的数据缓冲区,从而实现以太网数据的解码;如果判断结果是ICMP 数据包那么就处理该数据包并进一步处理IP 数据包;如果接收到的是ARP 数据,就判断其是ARP 请求还是ARP 应答并根据结果进行相应的处理,如果该数据帧既不是IP 数据包又不是ARP数据,那么就将该数据视为无效数据而抛弃,并初始化数据接收缓冲区.
3 结束语
通过在航天器地面仿真测试设备上的实际应用,表明该以太网与双通道CAN 总线协议转换器可以满足使用要求,性能稳定,可实现CAN 总线数据的监测.总线参数的设计.总线数据的收发,并且其具有的低成本.高可靠性等特点还可以扩展应用于工厂.变电站等工业场合,实现分布式控制系统中管理监控层与生产测控层之间的远程互联.
- 工业以太网EtherNet/IP性能分析(12-20)
- 基于工业Ethernet的某产品装配生产线(12-20)
- 多运动物体检测与跟踪算法实现,高精度室内定位系统设计(05-23)
- ControlNet和EtherNet/IP现场总线(03-20)
- Devicenet与Ethernet网络在PLC制造厂的应用(03-14)
- 基于工业Ethernet的现场实际应用及其策略(04-13)