西门子6ES7222-1EF22-0XA0诚信经营
在一些应用中可能需要使用诸如VB来进行上位机监控程序的开发,而Modbus协议是这类应用中的通讯协议;Modbus协议以其简单易用,在工业领域里已广泛的为其他第三方设备所支持。这里对VB和TwidoPLC间的通讯进行说明。
对于大部分应用,TwidoPLC作为从站,它不需要编制通讯程序,只要把通讯口的参数设置好即可,例如下图表示此Twido通过编程口和上位机连接,其站号地址为2;波特率、数据位、校验、停止位和上位机设置保持一致。
VB程序通过利用MSComm控件很容易就能够实现。
1.通讯口初始化:
MSComm1.Settings = "9600,n,8,1"
MSComm1.CommPort = 1
MSComm1.SThreshold = 0
If NotMSComm1.PortOpen Then MSComm1.PortOpen = True
2.CRC校验码的计算方法,如以下函数,可以得到字节数组变量cmdbbbbbb指向的字符串的CRC校验码。
结合电话远程采集灌区水位/liuliang的研究课题,系统地介绍了采用89C51与通用异步收发器8250接口和控制智能MODEM以实现单片机与PC机在有线公共电话网中进行远程数据通信技术。
1、 引言
随着通信技术的不断发展,计算机网络系统通信是当今技术发展的一个重要的方向,在网络系统中利用现有电话网作为通信信道则是经济、方便和可靠的方法。当前现代电话通信网已经进入程控交换时代,技术比较先进,速度快,容量大,采用电话通信网建立数据通信系统确实具有其独特的优越性。
利用单片机系统采集灌区水位、水liuliang,实现无人职守和科学的管理水资源具有实际意义,特别对少雨缺水地区更具有应用价值。
2、 系统硬件设计
本系统采用了MODEM将前端单片机采集的数据通过电话网远程传输到中心站PC机,并实现一对多点通信(站点数、通信距离均不限),后台PC机通过拨号的方式对各站点进行数据接收并实时存储记录、查询、打印。系统框图如图1所示。
图1 系统框图
单片机系统从传感器(含数字编码器)直接采集数字信号,通过RS232接口送给本端的MODEM,MODEM将数字信号调制成音频模拟信号在电话线上传输,再经中心站MODEM调制成数字信号送往PC机。系统中MODEM采用外置式Hayes144型,用户使用贺氏标准AT命令呼叫和应答,实现与远程系统的通信。
上述单片机系统的硬件设计关键在于:(1)单片机89C51与异步收发器8250的接口,8250具有与MODEM接口和控制串行通信的能力。8250输入输出均为TTL电平,按EIA(国际电子工业合作会)RS232标准,采用串行收发驱动器芯片ICL232或MAX232进行电平转换和驱动。(2)SRAM的选择与连接,静态RAM保存加有时标的数据,选择DALLAS公司生产的DS1216D,内带有电池和实时日历时钟功能,内含RAM为628128,容量为128K,该芯片掉电自动保存数据和时钟运行。(3)MODEM的连接,采用9芯接口插座完成各信号的连接。具体电路原理如图2所示。
图2 单片机系统原理图
3、 系统软件设计
该系统前台机软件由MCS51汇编程序设计,后台机软件由VB5.0程序设计(略述),前台单片机系统通信软件主程序框图如图3所示。
图3 单片机系统程序流程图
3、1 MODEM通信中的AT命令
MODEM使用AT命令可以分三个阶段:初始化、呼叫与应答、拆链挂机。
MODEM初始化主要包括:设定振铃次数、设定返回结果码形式和复位MODEM ,例如:
ATS0=3V0 ‘3次响铃,结果码为数值型;
ATZ ‘复位MODEM ;
上述命令的句可以采用bbbbbbS95超级终端编程固化在MODEM内非易失性RAM中,也可以同ATZ一起放在8250初始化程序中。
MODEM具有自动呼叫与应答功能,在电话交换网中,MODEM之间如同普通电话机相互通信,只要呼叫方发出拨号命令:ATDT6688787(数字表示电话号),便可形成通信链路,该命令用在PC机通信软件的编程中。
通信完成后,双方MODEM要拆链挂机,在PC机通信软件的编程中采用如下AT命令完成挂机:
+ + + ‘转义序列
延迟1秒 ‘1s静寂
ATH0 ‘挂机
3、2 8250初始化
8250初始化主要包括四项内容:(1)波特率的设置,向地址为3F8H和3F9H两个寄存器置数,本系统采用2400bps;(2)对线控制寄存器设置字符代码传送格式参数,即:数据位、奇偶校验位、停止位;(3)对MODEM控制寄存器初始化,即控制发出发向对方的信号及管理中断;(4)对中断允许寄存器的初始化,用于决定在接收的数据准备好时,在发送保持寄存器空时、在接收字符出错及MODEM状态改变时是否发中断。
3、3 数据通信
当某一方单片机接收到呼叫振铃后,RI信号有效,8250的INTRPT引脚高电平中断,系统便进入数据通信状态,为了使数据传送准确无误,编程采用XMODEM协议对数据打包处理,单片机数据通信程序流程图如图4。
数据发送流程图
数据接受流程图
图4 单片机数据通信程序流程图
4、 结束语
本文就多点单片机与PC机的电话远程通信,比较详细地介绍了软、硬件设计思想,该系统由于采用普通电话网作为通信信道,实现一网多用,十分经济。后台PC机用VB5.0开发通信和数据管理系统软件既方便、可视又易操作、可靠。
引言
PDA即PersonalDigitalAssitant(个人数字助理)的缩写,是近年来继寻呼机和移动电话之后,在迅速崛起的便携式电子产品。目前,国内传统性能的PDA产品经过前几年的高速发展后,市场需求基本饱和。经过行业应用改造后的PDA产品,如文曲星、蓝火等已经在大显身手了。分析市场需求,我们研发了集成传呼功能的、专门面向交通行业应用的铁路交通信息系统PDA。本PDA系统除了具备传统PDA的个人名片管理、辞典检索、信息速记功能外,更重要的是提供交通领域的民航各种航班查询和全国铁路列车的刻表查询,通过传呼系统及时广播铁路和民航行业应用方面的如航班晚点、车次晚点、剩余piao额等相关行业信息。PDA系统属于便携式电子产品。这类产品,性能指标日益向实用化、方便化发展。产品不仅要求功能完备,用户界面友好,操作方便简洁,要求产品寿命长,功耗低。产品低功耗设计一般从硬件和软件两个角度来考虑。本文重点阐述该PDA系统所采用的降低系统功耗的各种措施。
1铁路交通信息系统PDA的体系结构
在分析本PDA系统的功能性和非功能需求,充分了解市场硬件行性的基础上,设计了本PDA系统,其硬件体系结构框图如图1所示。
嵌入式处理器EP7211(核心模块)进行数据处理,传呼译码芯片接收传呼信息并根据传呼协议自动译码;LCD提供数据显示输出,触摸屏提供用户输入接口;Flash用来存储可执行应用程序和数据;SRAM为程序运行提供内存空间;语音录放电路完成快速语音记忆功能;串口和红外口完成相关的数据通信工作;电源电路为嵌入式处理器和各外围设备提供所需要的工作电压。嵌入式处理器EP7211是CirrusLogic公司专门为低成本、超低功耗的嵌入式应用设计。它包含基于RISC体系结构的ARM7TDMI处理器内核和丰富的外围接口,如CODEC音频接口、SPI串行A/D接口、单色LCD接口、RAM接口、串行红外接口、PWM接口、实时时钟RTC以及电源检测接口等。这些丰富的外围接口,不仅降低了系统的设计难度,也tigao了系统工作的可靠性。EP7211的内核电路工作在2.5V,而外围电路工作在3.3V。它可根据具体情况对内核的时钟进行动态编程控制,可工作在18MHz、36MHz、49MHz和74MHz。EP7211还有三种基本的工作状态:正常操作(operating)、空闲(idle)和等待(standby)。在等待模式时,主时钟被关断,整个CPU及相关外围(除中断和RTC)关断,但可通过触摸屏中断、传呼中断或复位按钮来唤醒。系统软件开发平台采用了我们自主开发研制的、专门面向嵌入式应用系统开发的XGW平台。XGW开发平台措鉴bbbbbbs消息驱动机制,是用C语言开发实现的;它功能强大,模块化设计,扩展性强,产品升级容易,开发人员较为熟悉,开发成本低,其总体框架如图2所示。
图2全面反应了XGW软件开发平台的体系结构,包括事件消息驱动机制(XGW软件开发平台中的消息分为鼠标消息、键盘消息和定时器消息等三类)、内存管理、字符和图形显示输出、图形组件库等。图形组件库中的编辑框、列表框、按钮、进度条等图形控件为用户应用程序开发提供了应用编程接口API。XGW平台对于系统硬件的中断响应没有提供统一的入口和出口,需要开发人员单独处理。
2硬件低功耗
硬件低功耗主要从芯片制造工艺流程和硬件体系架构的角度出发,基本原理是尽量选用能够满足功能要求的功耗低的芯片。芯片自身的功耗参数由制造厂商来决定,此处主要阐述CMOS芯片动态功耗以及动态电源管理两个方面。(1)CMOS芯片动态功耗随着半导体制造技术的发展,数字电路从TTL工艺转向CMOS工艺。TTL工艺为电流注入型电路,静态和动态电流消耗接近。CMOS工艺是压控型的,理想情况下("0"、"1"的恒定状态)静态电流为0,实际情况下也是很小的。动态("0"、"1"间的跳变状态)电流消耗占主导地位。CMOS动态功耗计算公式为
式中:Pd--CMOS芯片动态功耗; Ce--CMOS芯片等效电容; V--CMOS芯片工作电压;f--CMOS芯片工作频率或工作状态的切换频率。从式(1)及各参数含义看,CMOS芯片动态功耗的数值正比于工作电压的平方,正比于工作频率。在满足系统功能需求的条件下,降低芯片工作电压和工作频率,都可以极大减少芯片的动态功耗。以处理器工作频率为例,如果工作频率降低一半,则该芯片动态功耗几乎也随之减半。在本PDA系统中,ARM7处理器提供了18MHz、;36MHz、49MHz和74MHz四种工作频率,但我们采用2.5V为低压供电,18MHz工作频率。这些参数在降低系统功耗的也满足了系统性能的需求。(2)动态电源管理动态电源管理技术是指有选择地将闲置的系统模块置于低能状态。一个较为复杂的嵌入式系统,除了处理器外还有很多外设电路模块,它们协调工作,共同完成系统功能。但在分析完成系统功能的过程中可以看出,并不是所有模块在任何时间都处在工作状态。除了嵌入式处理器外,绝大多数外设模块都是在执行某项具体功能的时候(它自己的有效操作期间)才需要供电。如音频模块,有语音输入或者输出时才需要工作;在进行串口通信时,串口芯片需要处在工作状态;而在更多的时间里,这些芯片都是不需要工作的。为了系统功耗小,动态电源管理的原则是系统完成某项功能,只有参与这项功能的模块才供电,其它模块设置在电源切断状态。在电路设计时,需要充分考虑到这个问题,尽可能为各外设模块提供切换供电机制的引脚控制信号,允许通过软件编程的措施来完成其电路开关的切换工作。本PDA系统中,除了嵌入式处理器外,还有异步串口、语音编译码芯片、音频功放、传呼、LCD、收音机等外部设备。传呼的接收具有随机性,需要一直处在工作状态。串口、语音芯片、功放电路、LCD等可以通过一定口地址的设置来控制电源开关,使之在工作的时候提供电压,在不工作的时候切断电源。各外设模块电源口地址配置如表1所列。
表1 口地址功 能工作条件PA4 LCD背光控制低电平 PA5~PA6 红外口控制取值00 PD1 LCD电源电路高电平 PD2 LCD点显示电路高电平 PE0控制语音播放高电平 PE1 控制音频功放低电平
3软件低功耗
嵌入式系统开发中除了硬件低功耗措施外,也可以从软件方面来设计。嵌入式系统软件低功耗措施一般涉及到处理器工作状态间的切换、应用模块软件算法的选择和系统整体的数据调度三个方面。
(1)处理器工作状态便携式系统工作过程中,处理器并不是任何时候都一直忙于运行,尤其是PDA来产品。如今的嵌入式处理器(包括EP7211)一般都为应用开发提供了三种工作状态:运行、空闲和休眠。大量的实际使用表明,更多情况下,大部分时间里系统是处在休眠状态的,一旦获得工作信号,会迅速切换到工作状态。当系统在工作状态下一定时间内没有获得下一次需要处理的信号时,则应该自动切空闲或者休眠状态。因为在不同的工作状态,处理器内部工作电路有所变化,功耗大小差别较大。本PDA系统采用的ARM处理器,在不同工作条件和状态下的功耗哪表2所列。
表2 名 称频率/MHz消耗电流大值/mA 条 件 休眠状态 300μA 32kHz时钟晶振工作,I/O口处于禁止 空闲状态 18 6晶振都在工作,LCDshua新处于激活状态,CPU是静态的 空闲状态 36 12 同上 运行状态 18 20整个系统处于激活状态,正在执行程序 运行状态 36 40 同上注:直流供电电压2.5V从表2中明显看出,处理器不同条件和状态下的功耗参数大小的差别。在18MHz频率下,运行功耗(20mA)是空闲功耗(6mA)的近4倍,空闲功耗又是休眠功耗300μA的20倍。我们的目的是在不影响系统正常运行的过程中,尽大可能使系统处在空闲休眠状态来降低系统功耗;我们应该通过预测系统执行过程的措施来切换处理器的工作状态。分析式(1)可知,我们又不能频繁过快地进行处理器状态切换,中间要留有一定的稳定时间间隔。XGW软件开发平台采用事件消息驱动机制。消息采用查询方式,能够实时响应外部中断。在消息循环过程中,系统需要查询消息队列:当有消息出队时,处理器在运行状态处理这个消息所对应的事件;如果一这时间间隔(如2s)消息队列一直是空,系统预测在近相当长的时间内不会有事件产生,软件编程措施把处理器从运行状态切到空闲状态;如果系统在更长的时间内(如20s)没有事件产生,则系统预测用户需要自动软关机,此时处理器进入休眠状态。在休眠状态下,处理器能够响应实时时钟匹配中断、传呼接收中断以及复位按键;一旦系统捕获到这类信号,则迅速转入到正常工作状态。处理器在运行状态和空闲状态间的切换间隔是必需的,如果切换速度过快,并不能达到降低系统功耗的目的。为了缩短处理器从空闲或者运行状态切换到休眠状态的时间,系统提供了用户手动软关机措施,即通过触笔直接点击屏幕某一指定区域来实现。本PDA系统中,ARM7处理器三种工作状态的转换如图3所示。
图3中各数字含义如表3所列。
表3 序 号状态转换条件 1、3系统20s内一直不能捕捉到消息或者人为点击屏幕某一指定区域 2 实时时钟匹配中断、传呼中断、按键唤醒 4运行状态下系统2s内一直不能捕捉到消息 5 产生中断信号、捕捉到消息事件
(2)软件算法的选择在应用程序编程实现过程中,求解同一个问题,可以有许多不同的算法。评价一个算法好坏的常用参数是算法时间复杂度、算法空间复杂度和算法的易理解编码和调试性。算法时间复杂度定义为算法的时间耗费,即算法所求解问题规模(求解问题的输入量)n的函数。时间复杂度一般用O(n)来表示,当n达到一定规模时,时间复杂度越小,执行效率越高,招待时间越短,系统功耗越低。算法空间复杂度定义为该算法所耗费的存储空间,它也是问题规模n的函数。我们总是希望选用一个所占存储空间小、运行时间短、其它性能也好的算法。实际上很难做到十全十美,原因是上述要求有时相互抵触,如节约算法执行时间需要以牺牲一定的存储空间为代价,亦然。我们只能根据具体情况有所侧重。在本PDA系统中具体硬件配置时,CPU工作频率不高,存储空间运行不大;但应用程序数据量大,某些应用程序如辞典互译、时刻表检索时数据运算量也大。如要在本PDA系统中实现英汉辞典互译,会想到采用顺序检索法。这种算法对用户输入词汇排列顺序没有要求,编程实现和理解起来都比较简单,其算法时间复杂度为O(n)=n。当n值较小时,这是可以允许的;当系统词汇量近10000个时,算法检索效率不高,表现为当词语位置偏后时系统检索延迟过大。为了tigao检索效率,满足一定的系统反应实时性要求,我们采用了有序表二分搜索算法,其算法时间复杂度O(n)=log2n。假设n=16384=2 14已经超出系统的数据规模(10000词左右)。二分检索所需要的坏检索次数是14次;对于顺序检索而言,在坏查找的情况下,检索次数是16384次,故效率tigao了16284/14=1170倍。这个数目是相当可观的,系统数据规模扩大,二分检索表现出来的所增加的检索次数也是很小的。辞典互译实现二分检索所要做的附加工作,就是将原来无序的辞典数据文件转换成有序的辞典数据文件。这个转换工作可以在PC机上完成从而减轻本嵌入式系统的负荷。辞典数据排序和检索过程中英汉辞典依据ASCII码进行,汉英辞典根据汉字的区位码进行。本PDA系统的民航时刻表、铁路时刻表等应用模块,也都涉及到了算法选择问题。
(3)数据调度在许多应用程序中,存储器访问是功耗的主要部分。有资料表明,内存传输是迄今为止CPU完成的操作中代价高的:一次内存传输消耗的能量是一次加法运算的33倍多。优化能量消耗的大收益之一,来源于合理组织内存中的数据和指令:一般措施是尽量做到数据的寄存器访问和缓存访问。随着存储技术理论的发展和工艺水平的tigao,现在存储器体系结构一般都是三级,支持虚拟存储技术,如图4所示。
处理器进行数据访问时,离CPU越近的地方,数据存取速度越快,功耗越低。本PDA系统中,由于Flash存储器(作为数据存储器件)写操作的特殊性(以扇区大小为单位、执行时间长、执行功耗大),要求尽量少地进行。基于这种策略,本PDA系统在数据安排方面采取了以下一些优化措施:①LCD帧缓存的安排。EP7211内置38400字节大小的RAM空间,LCD分辨率是320%26;#215;240,每像素4级灰度用2比特位表示,故显存大小为320%26;#215;240%26;#215;2/8=19200字节,被安排在内置RAM空间的前19 200字节。这样安排,加快了显示速度,减少了处理器访问片外SRAM空间。②个人传呼信息、公共传呼信息接收频度大,不需要存储;传呼接收过程需要开臂两块缓冲区,这些空间都被安排在内部RAM后19200字节,其目的是减少了CPu对片外SRAM的访问。③部分系统信息资源,如字库信息,在系统启动后直接从Flash存储区拷贝到固定位置的SRAM区,这样字符输出时直接从内存读取数据,而不需要访问Flash。④为减少Flash写操作执行次数,在电话簿、记事本、日程以及系统设定等编辑修改后,改动的信息是在内存中直接保存,等到用户是退出当前整个应用模块时,才进行一个性Flash写操作。⑤在进行复杂数据查找过程中,为减少数据访问量,可以通过建立若干级索引表方式加快数据检索速度。如在辞典文件的词汇排序过程中,建立了每个单词位置的数据索引,作为索引文件定改Flash。在查找过程中,索引项的存在能够减少检索次数,从而快速确定单词起始位置以及整个单词项目长度,供显示输出。在增加索引时,也会增加一定的空间复杂度。系统还可以通过代码压缩减少总线上的传输量;编译器优化,消除冗余代码;消除编程中的递归过程调用、减少函数调用的开销;有效使用寄存器等措施来降低系统功耗。有关这些措施请见参考文献[2]。
4低功耗设计综合阐述
以上分别从硬件和软件两方面阐述了嵌入式系统开发中低功耗设计的一些原则及在本产品中的某些具体体现。经试验测得,本PDA系统功耗如表4所列。
表4条件(18MHz、2.4V)消耗电流/mA 注 释 待机 79 系统全速执行条件下的功耗数据 开机 2527 收传呼 5558启动背光 8385 背光功耗 53 单功能模块功耗数据 LCD功耗 22 扬声器 10 语音编译码芯片 11 红外口 6本PDA产品除了提代外接电源供电电路,还提供内置可充镍氢双电池供电系统。设单节电池容量是500mA,则系统待机时间是1000小时/8=125小时,基本上可以满足实际应用的需要。随着对嵌入式系统低功耗设计的深刻理解和硬软件方面某些措施的改进,包括借鉴目前国内外一些厂家低功耗设计经验,则在改进的产品中,表4的某些数据还可能再降低一些,更好地满足产品的低功耗要求。
其实嵌入式系统开发中低功耗设计是个系统的概念,硬件上既要在单元级考虑,也要在单元逐步集成系统的阶段上全面评估。系统中每个模块都是严格采用低功耗设计的,但在集成整个系统时也不一定能完全保证整个系统是低功耗的,低功耗设计阶段应该在进行系统规划的就充分考虑进去,需要建立模型进行低功耗评估,一旦不满足设计要求导致偏差较大时,应该及时修正模型。应用软件在数据结构的安排上,也要考虑到具体的硬件配置。因为有些效率的tigao,比如考虑引表的建立,是以牺牲一定的存储空间为代价的。如果存储空间太小,就需要权衡两者的矛盾。