文献标识码: B
文章编号: 0258-7998(2014)02-0016-03
广播系统是为井下的语音通信而设计的,主要用于煤矿调度室对井下工作人员喊话、传递通知、播放音乐、紧急情况通报以及引导科学避险等工作。在通信的过程中完全采用CAN总线或者是工业以太网[1-2]都是很困难的。因为CAN总线本身的优势在于控制功能方面,若单独采用CAN总线传输语音数据,则会在数据传输的效率方面大打折扣。而工业以太网具有传输数据的优势,但单独使用又不便于语音数据的传输控制。基于以上问题,本文设计了一个较为方便实用的转换器,可以使得煤矿企业方便地使用上位机通过工业以太网向井下设备传送语音数据,发挥现场总线和工业以太网各自的优势,打造一个高效、安全的煤矿网络。
1 煤矿井下广播系统介绍
煤矿井下广播系统由井上、井下两部分组成。井上部分位于调度室,由电脑、主站(负责语音编码发送)、网关组成;井下部分由网关、基站(负责语音的解码播放)组成,分布于井下的工作面、掘进面、运输巷等。
工作原理:主站将PC传来的语音数据进行编码,然后将编码后的数据经CAN总线传输到第一个网关,网关采用实时性较高的UDP协议作为传输层协议。网关接收到数据后立刻将CAN数据打包成以太网帧传输给第二个网关设备,该设备接收到以太网数据后根据协议转换规则将其转换成CAN总线数据,并传输给挂接到CAN总线上的基站,基站再对CAN数据进行解码并通过喇叭播放出来,这样就完成了语音传输的全部过程。本文主要针对此系统进行网关设计。
2 系统硬件设计
2.1 硬件系统框图
系统硬件主要由主控器、CAN收发器、以太网收发器、RJ45以及电源组成。系统主控器采用NXP的LPC2378[3],该主控器集成1个以太网接口和2个CAN接口,所以只要直接外接CAN收发器和以太网收发器即可实现协议转换功能,其结构框图如图1所示。
2.2 以太网接口模块
系统要实现与以太网的互连,就必须配备以太网接口。以太网接口包括MAC控制器、物理层接口PHY、网络变压器和网卡插座RJ45四部分[4-5]。
系统主控器件LPC2378内部集成了MAC控制器,所以不需外接MAC控制器。此处选用的PHY为DM9161A芯片。DM9161A是10/100M以太网物理层接口PHY收发器,符合IEEE802.3协议,采用3.3 V供电,支持MII和RMII接口。
网口插座采用RJ45插座HR911105A,它具有信号耦合、电气隔离、阻抗匹配、抑制干扰等优点。电路连接原理图如图2所示。
DM9161A的RMII接口包括发送数据脚TXD[0]、TXD[1]、发送数据使能脚TXEN、接收数据脚RXD[0]、RXD[1]、接收错误脚RXER、载波侦听脚CRS、参考时钟XT2,这些脚以及MII管理接口的管理数据时钟脚MDC、管理数据I/O脚MDIO等均与LPC2378相连。FDX/COLLED#/OP0、SPEEDLED#/OP1、LINK/ACTLED#/OP2均属于LED接口,分别与3个LED相连,表示了DM9161A连接的不同状态,FDX/COLLED#/OP0表示正在运行的是全双工模式,SPEEDLED#/OP1表示连接的速率为100 Mb/s,LINK/ACTLED#/OP2表示在100 Mb/s模式时连接良好。以太网PHY芯片的TX+、TX-、RX+、RX-、VDD_PHY和AGND信号与RJ45相连,即与其内部网络变压器相连。
2.3 CAN接口模块
CAN接口模块由CAN控制器和CAN收发器两部分组成。由于主控器LPC2378本身集成了CAN控制器,这里CAN收发器采用广州致远电子的CTM8251,该器件具有DC 2 500 V隔离功能、热保护、对电磁干扰具有高抗干扰性等特点。采用了一体化的隔离收发器,简化了电路。CAN控制器与CAN收发器电路连接如图3所示。
CAN收发器CTM8251采用5 V供电,它的RXD、TXD管脚分别接主控制器内部CAN控制器的RD、TD管脚,RXD用来接收CAN总线的数据,TXD则用来发送CAN数据。该模块预留有终端电阻的接口,当需要接入终端电阻时使用该接口,可接入120 ?赘的终端电阻,其作用是匹配总线电阻,提高数据通信的抗干扰性及可靠性。
3 软件设计
3.1 以太网通信模块
以太网主要功能是接收以太网数据,并将经过协议转换好的以太网数据发送出去[6-7]。
3.1.1 以太网通信模块的发送
(1)建立发送描述符
描述符中的指针设置为指向即将发送的一个数据帧或者帧片段。描述符命令区域中的Size应设置为片段缓冲区中的字节数,它使用减1编码,其他控制信息可以在描述符的控制区域中指示(interrupt、Last、CRC、Pad位)。在对描述符执行了写操作之后,通过将TxProduceIndex寄存器加1来将描述符移交给硬件。
(2)TxDMA管理器读取Tx描述符数组
在读取描述符之后,发送DMA引擎从存储器中读取相关的帧数据并发送。在传输完成之后,TxDMA管理器将状态信息写回状态区域的StatusInfo和StatusHashCRC中。TxConsumeIndex的值只有在状态信息提交给存储器之后才能更新。
(3)更新ConsumeIndex
每当TxDMA管理器向存储器提交一个状态字时,表明它完成了描述符的发送,并让TxConsumeIndex加1,将描述符移交给设备驱动软件。软件可在硬件移交完成之后重新使用描述符进行新的发送操作。设备驱动软件通过读取TxConsumeIndex寄存器的值来查看发送过程进行的程度,从而能够了解DMA管理器的进程。
3.1.2 以太网通信模块的接收
(1)建立接收描述符
初始化接收描述符和状态数组之后,必须在MAC1寄存器和控制寄存器中使能接收通道。在初始化过程中,将描述符中的每个指针设置为指向数据片段缓冲区。
(2)RxDMA管理器读取Rx描述符数组
将命令寄存器中的RxEnable位置位,RxDMA管理器读取由RxDescriptor和RxProduceIndex确定的存储器地址中的描述符。被读取的描述符大小由硬件拥有的描述符总数RxConsumeIndex-RxProduceIndex-1决定。
(3)RxDMA管理器接收数据
在接收了一个片段之后,RxDMA管理器将状态信息写回状态数组的StatusInfo和StatusHashCRC字中。以太网模块将描述符的片段缓冲区的字节数写入状态字的RxSize中。RxProduceIndex的值只在片段数据和片段状态已提交给存储器之后更新。RxDMA管理器继续接收帧信息,直到描述符数组为满状态。如果描述符数组已满,则以太网硬件将置位IntStatus寄存器的RxFinishedInt位,此时接收任何新数据都将产生溢出错误和中断。
(4)更新ProduceIndex
每当RxDMA管理器提交一个数据片段和相关的状态字给存储器时,表示它已完描述符的接收,并且让RxProduceIndex加1,将描述符移交给设备驱动软件。当处理完接收数据时,软件通过将描述符移交给硬件使得描述符能够重新用于新的接收操作。设备驱动软件通过读取RxProduceIndex寄存器来监视接收处理的进度。
3.2 CAN通信模块
3.2.1 CAN模块发送
发送程序负责将以太网传输来的UDP 数据包按照CAN 协议转换后的CAN报文传输到CAN 总线上[8]。LPC2378集成2路CAN控制器,每个CAN控制器都有3个发送缓冲器。发送数据时首先要查询对应状态寄存器(CAN1SR或CAN2SR);其次需要加载4个寄存器,分别是发送帧信息寄存器、发送标识符寄存器、发送数据寄存器A、发送数据寄存器B。发送帧信息寄存器主要用来表示发送的CAN帧的长度;发送表示符寄存器用来表示发送的CAN帧的标示符,发送数据寄存器A和B用来存放需要发送的CAN数据。每个寄存器可以存放4 B,所以每次发送的数据最多有8 B。最后在命令寄存器中选择发送请求,并选择相应的发送寄存器发送数据。
3.2.2 CAN模块接收
CAN控制器采用中断接收数据。首先对接收的CAN数据进行过滤,若符合设定的过滤规则,则会触发CAN中断程序。从接收帧状态寄存器可以读取接收数据的长度,在接收标识符寄存器可以查询到CAN总线数据的标识符,接收的数据则存放在数据寄存器A和接收数据寄存器B中,这两个寄存器每个能存放4 B,所以每次最多接收8 B的CAN总线数据。
3.3 协议转换程序设计
网关的基本功能是实现以太网与CAN总线之间的通信,所以协议转换部分是程序设计的关键所在[9],具体流程如图4所示。当CAN总线数据需要转换成以太网数据时,首先将CAN帧的数据长度、CAN标识符、纯数据提取出来组成以太网的数据区域,并按照UDP帧格式,依次添加UDP报头、IP报头,随后将打包好的IP数据传送给以太网PHY器件,对其添加以太网帧头并发送至以太网。当有以太网数据需要转换成CAN数据时,只要将上述打包顺序反过来就可以了,依次是:去除IP报头,去除UDP报头,将纯数据交由CAN控制器发送至CAN总线上。
本系统是基于煤矿井下的语音通信而设计的,选择集成了2路CAN控制器和1路以太网控制器的LPC2378为主控制器,采用实时性较高的UDP协议,有效地解决了在语音通信的过程中单独采用CAN总线数据传输效率低下、而单独采用工业以太网不便于语音传控制的问题。
参考文献
[1] 李正军.现场总线与工业以太网及其应用系统设计[M].北京:人民邮电出版社,2006.
[2] 夏继强,梁超众,刑春香.工业通用网关设计及其关键技术研究[J].电子技术应用,2010,36(2):118-121.
[3] LPC2378器件用户手册[Z].广州周立功单片机发展有限公司,2008.
[4] 郑建彬,杨亚莉.以太网和CAN现场总线间的嵌入式网关设计[J].信息技术,2002(11):14-17.
[5] 袁学文.CAN总线与以太网互连系统设计[D].武汉:武汉大学图书馆,2004.
[6] 叶加青,李军.CAN总线与Ethernet互连嵌入式研究与实现[J].计算机与现代化,2010(9):45-47,52.
[7] 王广维,张浩然.基于ARM和W5100的嵌入式以太网通信接口设计[J].微型机与应用,2011,30(5):50-53.
[8] 王保中,涂亚庆,张丽娟.工业以太网与CAN现场总线比较和应用方案分析[J].工业仪表与自动化装置,2006(5):10-12.
[9] 张涛,乔毅.一种现场总线与以太网互连中协议转换的设计[J].仪器仪表用户,2005(1):50-51.