一种基于嵌入式MODEM 最小系统的设计与应用

2012-12-23 04:51
武汉船舶职业技术学院学报 2012年2期
关键词:振铃串口应用程序

彭 鹏 章 波

(湖北交通职业技术学院,湖北武汉 430079)

随着电子和通信技术的飞速发展,越来越多的工控和检测设备被应用在现场,但随之而来的程序升级和数据采集成为限制工控检测设备大量应用在现场的一个重要因素。基于嵌入式MODEM 的应用有着极为广阔的前景,与通用Modem 相比,嵌入式Modem 具有体积小、易维护、外围电路简单、成本低廉等优点,布线安装仅仅需要普通电话线,连接简单,可移动性好。同时,由于公用电话网的覆盖范围在空间范围上的优越性,可以快速构建跨地区、跨区域的数据采集系统。相对于目前市场上的数据采集产品,大多数需要架设专门的工业以太网和现场总线网的情况,基于嵌入式MODEM 的应用无疑有着极大的优势,并且它同Internet网的结合应用,更将这种优势推动到了一个新的台阶。

由于篇幅所限,本文主要给出系统的整体设计思想和软件详细设计,并给出部分结果。

1 嵌入式MODEM 最小系统总体设计方案

1.1 系统的总体构想

由于嵌入式MODEM 多用于现场数据采集,安装的现场环境有可能比较恶劣,因此在设计时需要充分考虑到各种干扰。此外采用外接电源的方式会增加系统硬件的体积和成本。

我们都知道,电话线路在挂机状态下两线间有-48V 的电压,电流很小,但在摘机状态下两线间的电压降到了-12V 左右,电流为20mA 左右,而嵌入式MODEM 最小系统大部分时间都处于待机状态,只需要很小的电流就可以维持整个系统的工作。因此,本系统的工作电源可以考虑直接从PSTN线路上进行馈电,这样一来就决定了系统的器件选型都必须基于低功耗进行考虑。主控CPU采用的是三菱公司的16位单片机M30620SFP,该单片机外部资源丰富,且功耗极低。

1.2 系统的硬件结构

系统硬件部分采用PSTN 线路馈电方式进行供电,由于很多地方的电话线路还是架空线缆,容易遭受雷击的影响,因此需要在入口前端增加防雷电路,以增强系统的抗干扰能力。

系统的馈电,以及线路的摘挂机检测和数据的传输都经过PSTN 线路,因此线路接口电路相对来说是本系统的最关键部分,也是难点部分。首先需要考虑到线路的馈电能力,还要考虑到极性检测,振铃检测,此外,为了提高数据传输的稳定性,需对消侧音电路重点进行调试。

为了方便和上位机进行通信,本系统中提供了232串口进行连接。由于232电平的高电平为-3V~-12V,低电平为+3V~+12V,不能直接和单片机的串口进行连接,因此需要电平转换电路。此外,为了实现数据缓冲,需要增加存储器,为了方便记录某些数据的采集时间,系统还自带了实时时钟。所设计的嵌入式MODEM 最小硬件系统如图1所示。

图1 嵌入式MODEM 最小硬件系统

1.3 系统的软件结构

本系统软件实现分上呼和下传两个方面。上呼就是当下位机采集完数据后,定时将数据发送到处于远方的主机服务器或由上位机通过命令来控制MODEM 进行数据上传,这时就需要先呼叫服务器号码,然后进行MODEM 协议的自动识别也就是握手处理,和服务器侧建立连接后,通过相关的网络协议将数据上传到服务器。而下呼则是一个相反的过程,此时的下位机处于被叫状态,主机服务器通过呼叫下位机号码要求下位机将数据上传。系统的软件在此需要首先判断是处于发起方还是处于应答方(MODEM 应用里的专业用语),然后实现链路层的自动握手处理,握手通过后,通过TCP/IP 协议实现数据通信。软件总体设计框图如图2所示。

图2 软件总体设计框图

2 系统软件详细设计

2.1 线路状态处理程序

当嵌入式MODEM 处于闲置状态时,最主要的就是进行线路状态处理,此时主要进行上位机的AT 命令解析,并根据相应的命令来进行相关操作,或者收到服务器的呼叫进行振铃提示后由上位机决定是否进行摘机处理。

图3为线路状态处理软件框图,ATA 为摘机应答,ATDT 后跟呼叫的号码为拨号呼叫命令,详细的命令请参考AT 命令集里的说明,在此不再赘叙。的通常状态,上电复位后进入该状态。在该状态下主要完成下述功能:

图3 线路状态处理

检测是否有主机命令下达;检测是否有振铃产生;分析主机命令,进行必要的设置;根据主机的摘机拨号命令进入主叫状态;或在检测到振铃后反馈给主机后在主机命令控制下进入MODEM 协议握手处理。

图3中,在收到主机摘机拨号的命令进入主叫状态,在该状态下主要完成下述功能:按照要求摘机;检测线路状态;检测信号音,如果有忙音,反馈主机;如果拨号音正常,用DTMF拨号;拨号后检测线路状态,是否是回铃音或忙音;如为忙音,通知主机并挂机;如回铃音则等待线路是否出现反极信号,超时退出该状态;有反极则进入MODEM 协议握手处理。

2.2 MODEM 握手处理

在嵌入式MODEM 里,采用的是V.32bis的协议,它的速率可以达到14.4KBPS,全双工工作。由于CMX869对V.32BIS等协议已经进行了自动封装,对MODEM 握手处理主要是对其相关寄存器进行设置和检测。握手处理的程序如下:

2.3 TCP/IP协议

对TCP/IP 协议族的实现,采用的是从网上移植的uIP协议,uIP是一个适用于8/16位机上的小型嵌入式TCP/IP协议栈,简单易用,资源占用少是它的设计特点。它去掉了许多全功能协议栈中不常用的功能,而保留网络通信所必要的协议机制。其设计重点放在IP、ICMP和TCP协议的实现上,将这三个模块合为一个有机的整体,而将UDP和ARP协议实现作为可选模块。

为了节省资源占用,简化应用接口,uIP在内部实现上作了特殊的处理。①注意各模块的融合,减少处理函数的个数和调用次数,提高代码复用率,以减少ROM 占用。②基于单一全局数组的收发数据缓冲区,不支持内存动态分配,由应用负责处理收发的数据。③基于事件驱动的应用程序接口,各并发连接采用轮循处理,仅当网络事件发生时,由uIP 内核唤起应用程序处理。这样,uIP用户只须关注特定应用就可以了。传统的TCP/IP实现一般要基于多任务处理环境,而大多数8位机系统不具备这个条件。④应用程序主动参与部分协议栈功能的实现(如TCP的重发机制,数据包分段和流量控制),由uIP 内核设置重发事件,应用程序重新生成数据提交发送,免去了大量内部缓存的占用。基于事件驱动的应用接口使得这些实现较为简单。

(1)uIP的接口技术

uIP可以看作是一个代码库为系统提供确定的函数。图1 展示了uIP,系统底层和应用程序之间的关系。uIP提供三个函数到系统底层,uip_init(),uip_input(),和uip_periodic()。应用程序必须提供一个回应函数给uIP。当网络或定时事件发生时,调用回应函数。uIP 提供许多函数和堆栈交互。

图4 uIP库

(2)uIP应用接口

uIP使用一个基于编程模块的事件,模块是实现应用程序作为一个C 函数被uIP 调用的地方,uIP响应一定的事件。uIP 调用应用在,当接收数据时,当数据成功送达另一方中止连接时,当一个新的连接建立时,或者当数据需要重发时。应用程序也周期性地循环等待新数据。应用程序只提供一个回应函数;它提升了应用程序处理不同的网络服务的不同的端口和连接的映射。

uIP与其它TCP/IP 栈不同的是,当正在重发工作,它需要应用程序的帮助。其它TCP/IP栈缓存传输数据在储存器里,直到在连接的最后数据确应成功发送。如果数据需要重传,堆栈在没有通知应用程序下监视着重传工作。通过这种方法,当要等待一个确应,数据必须缓存在储存器里,如果产生一个重发,应用程序可以快速重新生成数据。为了减少储存器的使用量,uIP 利用的论据是应用程序可以重新生成发送的数据和让应用程序参加重发。

(3)uIP系统接口

从系统的立场看,uIP 由3 个C 函数uip_init(),uip_input(),和ip_periodic()。uip_init()函数用于初始化uIP 堆栈和在系统启动期间调用。当网络设备驱动器读一个IP包到包缓存时,调用函数uip_input()。周期性运行是调用uip_periodic(),代表的是一秒一次。调用uIP函数是系统的职责。

3 运行结果及分析

为了验证系统的软件,需要搭建一个硬件测试环境,采用两台PC 机,其中一台PC 机通过串口和嵌入式MODEM 的串口连接,另一台PC 机的串口和商用 MODEM (型号为 TM-EC5658V)的串口连接,两个MODEM 的线路接口都各自接入一条内线电话线路(办公电话需要加拨4才能拨号外线),软件测试环境都是基于超级终端下进行,超级终端的通信波特率设置为19200bps,8位数据位,无效验方式。

首先进行MODEM V.32bis协议下的数据传输。在商用MODEM 下发送AT 命令“AT+MS=V32B”,将商用MODEM 的通信协议固定为V.32BIS协议后,发送“ATD4,87403039”命令呼叫嵌入式MODEM 的线路号码,呼叫建立后,嵌入式MODEM 线路上并联的话机开始振铃,并且每振铃一次,嵌入式MODEM 将相应的振铃信息发送到串口,如图5所示,此时输入摘机命令“ATA”进行摘机握手处理,嵌入式MODEM很快就和商用MODEM 握手成功,将相应的测试信息“CONNECT 19200”发送到串口,此时在商用MODEM 的超级终端界面上发送一串数据,嵌入式MODEM 能正确接收。然后采用MODEM的文件传输协议进行大文件传输,方法和上面一样,唯一不同的是握手成功后,不是直接发送数据,而是在商用MODEM 的超级终端界面下选择发送文件,采用Ymodem 协议发送文件进行大数据量传输,初步测试时,接收数据时有丢失字节的现象,针对该问题对软件部分进行了完善,修改主要针对V.32BIS协议,因为在此协议下,线路灵敏度很高,经常会收到误码,所以在修改时,软件部分将线路接收部分的优先级别提高,将数据缓冲区加大;同时将硬件接收电路部分的增益降低。进行几百K 的文件传输时通讯正常。发送“++++++++”命令退出链接。

图5 V.32bis协议下通讯测试

验证TCP/IP 协议也是在上面的测试环境下进行的。通过接拨武汉热线号码,握手通过,软件通过PPP协议发送用户名和密码,成功登录网络,测试界面如图6所示。登录成功后,显示嵌入式MODEM 的IP地址为“202.110.140.70”。

图6 TCP/IP协议测试界面

通过以上各项测试结果,嵌入式MODEM 的软硬件设计基本上达到了预期设定的目标,该系统适用于远程监控系统和工业测控系统,现场仅仅只需要有电话线路接入,就可以完成供电和通讯,特别适合于某些无人值守的现场使用,给远程数据采集带来了很大的方便。

4 结 语

本文对嵌入式MDOEM 的最小系统的实现进行了全面的介绍,对其相关硬件设计和软件实现进行了详细介绍,最终的最小系统的实现基本达到了预期设计,并且在软硬件联调过程和实际试验时,对相关的硬件电路参数进行了改进,使得嵌入式MODEM 的工作性能更加稳定。

硬件调试部分的难点在于提高通信的稳定性,也就是硬件电路中的消侧音和增益控制部分,对此部分电路先是在ORCAD 软件下进行了仿真测试,并结合实际测试情况对其进行了完善,目前在嵌入式MODEM 和另一台商用MODEM 之间进行MODEM 协议下的文件传输,通信正常,没有出现误码现象。

对网络协议部分软件的实现,软件程序的编写都是基于三菱M16C60的编译器NC30WA 下进行的,调试过程中也发现了三菱编译器的一个BUG,就是注释部分不能用“/*…..*/”进行注释,而只能用“//…..//”来进行注释。

1 陈连刊.嵌入式系统的设计与开发[M].清华大学出版社,2005

2 谬湘科等.Linux管理与开发指南[M].人民邮电出版社,1999

猜你喜欢
振铃串口应用程序
振铃现象对心电图分析和诊断的影响
CANFD通信信号质量分析和测试方法的研究
浅谈AB PLC串口跟RFID传感器的通讯应用
删除Win10中自带的应用程序
灰度极值加权求和图像振铃效应评价算法
谷歌禁止加密货币应用程序
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式
稳定控制回路振铃现象的消除及其关键参数的选择*