EM200在分布式探测站组网通信的应用
扫描二维码
随时随地手机看文章
摘要:针对分布式无源探测信息融合系统中各探测站与融合中心组网通信要求,构建了一套基于CDMA网络的收发系统,满足在各种地理环境下的使用需求。以LPC2214为控制核心结合CDMA模块EM200构成了该系统的收发终端,针对其中发送端存在的问题给出了硬件解决方案,并结合实时操作系统分别阐述收发端软件架构。此外还引入中间转发平台用作TCP服务器实现作为TCP客户端的收发终端间的数据交换。与传统GPRS方案相比,该系统低延时的特性使其更适合实时性要求较高的分布式信息融合系统的需求。
关键词:CDMA;收发系统;中间转发平台;实时操作系统
相比传统有源探测手段,当前分布式无源探测并采用信息融合的探测系统显示出相当大的优势,尤其在目标的跟踪与识别上展现出显著效果,具有重要的军事意义和广阔的应用前景。作为整个分布式探测系统的重要环节——各探测站与信息融合中心的组网通信,针对探测站与融合中心能够在各种地理环境与车载移动条件下的使用要求,构建了一套基于EM200模块的CDMA实时收发系统。与传统的远程无线通信GPRS系统相比,该CDMA系统在稳定性和带宽上都优于GPRS,更适合于时延要求较严格的分布式信息融合系统。
1 系统架构
如图1所示,该分布式探测网由收发终端和中间转发平台构成。发送端经RS 232口接收来自探测站的数据并经CDMA网络发送出去,接收端将自CDMA网络收到的数据送至信息融合中心。鉴于通信的可靠性要求,该系统全部采用TCP通信协议,收发终端均作为TCP的客户端,位于公网上的中间转发平台用作TCP服务器端,实现收发端之间的的数据交换。
2 通信终端硬件设计
2.1 收发端硬件基本框架
图2列出了通信终端基本的硬件框图,主要分为电源模块、微控制器(MCU)及其配套单元、CDMA模块和其他辅助单元。收发端的硬件结构完全相同。当前串口仍是最为通用的接口之一,大多数无线通信模块均经过串口与外界进行串行通信,EM200同样如此。此处选用的MCULPC22 14具有两组串口,分配串口0用作收发端与外界交换数据(发送端经串口0接收来自探测站的数据,接收终端经串口0将数据发送给融合中心),串口1用作微控制器与EM200通信接口。
2.2 EM200相关电路设计
此处列出与EM200模块相关的电路设计,图3是EM200模块的主体电路,其中LPG脚和VDD-IO脚分别通过一个三极管驱动LED以指示模块的工作状态。外部的开启和重启模块信号引脚同样通过三极管驱动EM200。
[!--empirenews.page--]
图4是模块与UIM卡的连接电路,其中33 pF电容用于滤去射频电路产生的干扰。
目前大多数ARM7都具有两组以上串口,其中通常有一组带有完整的调制解调器接口,如LPC2214的串口。LPC2214作为DTE(数据终端设备)通过串口1与作为DEC(数据通信设备)的EM200相连,需要注意的是DTE与DCE之间的连接不需要交叉TXD/RXD线。
3 双串口的管理
如图2所示,收发端均需要管理两组串口。对于接收端而言,当获取来自CDMA网络的数据后,MCU从串口1接收EM200的数据包,解包分析后将有效数据通过串口0发送给融合中心。如图5所示,此时MCU只需处理串口1的接收中断,串口0可以采取查询方式发送。
在发送端,MCU从串口0接收来自探测站的数据,并将数据按AT指令TCP发送格式打包,经串口1发送给EM200。由于AT指令的操作是交互式的,在MCU发出下一条TCP指令给EM200前,必须确认已收到EM200之前AT指令执行后的应答响应,否则极可能导致发送失败。由于需接收AT指令执行后的应答响应,串口1既要发送也要接收,再加上串口0的接收中断,MCU需要同时处理两组串口中断,如图6所示。
3.1 发送端面临的问题
发送端面临的最大问题是如何兼顾两组串口的接收中断,即当两个串口同时接收到数据时,如何保证无丢失地全部接收。
虽然LPC2214的两个16C550标准串口自带16 BFIFO缓存,却仍难以同时兼顾两个串口的接收操作。
具体问题为,在两个串口同时接收到超过其FIFO缓冲容量的连续数据时,MCU只能响应高优先级串口中断,在低优级串口中断被暂时屏蔽期间,低优先级中断的串口会因自身FIFO缓存溢出导致数据丢失。
实际使用中,MCU一方面需要接收来自探测站的数据,另一方面还要接收EM200返回的之前AT指令执行后的应答响应。工作中TCP发送指令执行后的应答结果为“CRLF%TCPSEND:1,XCRLF”,其中CR和LF分别表示回车和换行,X代表发送指令中的有效数据个数,可能是1~1 024之间的任意数值,另外在1和X前面还分别有一个空格。应答结果共计18~21 B,超过了串口的16 B FIFO缓存容量,在中断被屏蔽而得不到及时响应时,无疑会导致FIFO缓存溢出。[!--empirenews.page--]
3.2 解决途径
鉴于探测站发送的数据量和发送周期的不确定性,设计时必须考虑满负荷的工作状态,即连接探测站的串口0一直处于接收峰值的状态。为确保无丢失地接收探测站数据,串口0中断优先级必须高于串口1。在此前提下,问题可归结为当串口1中断被暂时屏蔽得不到及时响应时,如何完整接收超过串口1缓存容量的AT指令应答响应,解决途径是扩大串口1的FIFO缓存。
由于TCP发送指令返回的应答响应在18~21 B之间,所以串口1的接收缓存必须大于等于21 B,需另选大容量缓存的专用串口芯片来替代LPC2214串口1。这里采用具备64 B FIFO缓存的并转串芯片TL16C752B。值得注意的是虽然TL16C752B符合8080并行总线接口要求,但其写操作时序与相当部分的MCU不匹配,而绝大多数MCU没有调整此部分时序的功能,其中就包括此处选用的LPC2214。这就需要外加一片用作时序匹配的CPLD,此处选用了EPM240,该部分电路示意图如图7所示。
MCU以中断方式经串口0接收探测站的数据,并将其按AT指令TCP发送命令格式传至EM200模块。EM200在完成当前TCP数据包发送处理后,将执行后的结果通过串口1返回给MCU,若MCU正忙于接收来自探测站的数据,则AT指令执行结果被压入TL16C752B接收缓存,并通过中断提示MCU此时串口1接收到数据,一旦MCU从串口0接收中断释放就立即转去处理串口1接收中断,足够大的缓存保证了EM200响应结果能被完整接收。
4 软件设计
4.1 转发平台的软件设计
由于EM200仅支持TCP协议中的客户端模式,而各个TCP客户端之间是不能直接通信的。因此在收发系统中必须引入中间转发平台作为TCP服务器端,通过TCP服务器对收到的客户端数据进行转发处理从而间接实现在客户端间的数据交换。TCP服务器端的软件编写较为容易,由于该软件最终运行在公网的PC上,可以在VB环境下利用WinSock组件来实现。TCP服务器开启两组监听端口分别监听来自接收端和发送端的链接请求,当建立起与发送端和接收端的TCP链接后,将发送端链接收到的数据从接收端链接发送出去,如此完成转发操作。
4.2 收发终端软件设计
针对分布式无源探测网络较高的实时性要求,若仍采用无限循环的前/后台软件架构是不合适的,而引入实时操作系统(RTOS)一方面可以提高整体的响应时间,另一方面可以将复杂的应用分解成多个相对独立子功能模块,降低了软件编写复杂程度。此处选择μC/OS-Ⅱ,其较少的硬件资源开销很适合ARM7这类MCU。
4.2.1 发送端软件设计
发送端可以拆分成三个进程,每个进程都是一个无限循环,依靠μC/OS-Ⅱ内核的调度机制,MCU在三个进程之间切换执行,实现发送端对探测站数据的接收和CDMA发送操作。
进程1的优先级最高,其任务是读取串口0收到的数据并将其压入在RAM中开辟的缓冲区。串口0的读取操作是由中断服务程序ISR配合RTOS中的信号量实现的。具体过程是在进程1中调用RTOS的OSSemPend函数阻塞当前进程,当串口0收到数据并触发中断后,在中断服务程序ISR中读出的串口0缓存数据,并调用RTOS的OSSemPost函数释放相应的信号量,则原先被阻塞的进程继续执行,此时将ISR中读出的数据压入RAM中开辟的缓冲区,完成一次循环,如图8所示。
进程2负责从串口1接收来自EM200模块的AT指令应答结果,由于预先得知TCP发送指令执行后的应答响应不会超过串口1的64 B FIFO缓存容量,因此实时接收的要求不如串口0严格,所以进程2优先级可低于进程1。进程2的架构与进程1基本相同,惟一区别是将读出的应答响应存到指定的AT指令暂存缓冲区,如图9所示。
[!--empirenews.page--]
进程3负责从RAM缓冲区中截取一段之前串口0接收到的数据,并按AT指令TCP发送格式打包并发送给EM200模块,然后检测AT指令暂存缓冲区中的应答响应结果,判断是否立即发出下一轮TCP发送指令给EM200,如图10所示。进程3对串口1执行发送操作,实时性相对进程1和进程2要求更低,因此进程3的优先级可设为三者中最低一级。
4.2.2 接收端软件设计
接收端也分为三个进程,依靠RTOS的调度机制,MCU在三个进程之间切换执行,实现接收端对来自CDMA网络数据包的接收并将解析后的有效数据发送给融合中心。
鉴于EM200收到自CDMA网络数据后会直接经串口将数据包输出的特性(不同于其他模块会将数据暂存在模块内部,只有当收到AT指令读命令后才会输出数据包),因此最高优先级进程1的任务就是通过串口1接收自EM200的数据包并将其压入在RAM开辟的缓冲区。如图11接收端的进程1架构与发送端进程1类似。
由于进程1中收到的数据包含有部分无效字符,因此中等优先级进程2负责解析缓冲区数据包中的有效数据,若检测到缓冲区中无完整的数据包,则调用RTOS提供的OSTimeDlyHMSM函数延时一定时间,在延时期内主动释放MCU的使用权,若检测到一个以上的完整数据包,则在解析处理后将有效数据送入在内存中开辟的串口0发送缓冲区,该进程架构如图12所示。
低优先级的进程3负责检测串口0的发送缓冲区是否为空,若不为空则通过串口0将缓冲区中数据发送出去,如图13所示。
只有在进程2延时期内且进程1处于挂起状态,负责串口0发送任务的进程3才得以执行。由于采用了延时的方式主动释放对MCU的使用权,因此延时的大小决定了进程3每次的执行时间,延时若设得过大可能会造成数据包解析不及时从而导致串口1收到的数据包在接收缓冲区中大量堆积,使得实时性大大降低。延时若设得过小则会导致进程3在发送一段较长的数据时被经常打断,微控制器的处理资源被浪费在频繁的进程切换上,综合考虑此处将延时设定为50ms。
5 结语
本文介绍了一套基于EM200模块的CDMA数据收发系统,利用该系统组建的分布式探测网络可适应各种地理环境,结合CDMA系统较短的传输时延配以合理的软硬件设计,能够确保整个网络较高的实时性能,满足分布式无源探测信息融合系统组网通信要求。