基于89C51和MODEM的远程通信系统设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

摘要:介绍了一种以89C51单片机为基础的二次仪表远程通讯方案,利用MODEM和实现了低成本的远距离数据传输。该系统可随时上传下位机采集到的历史数据,同时还可以通过上位机对下位机进行简单的控制。关键词:通信;调制解调器;单片机远程数据采集和下位机系统控制是工业测控系统的主要任务。在这些系统中由单片机或PLC完成现场数据的采集与预处理,由系统机完成数据的汇总、查询、统计、报表等综合处理。上位机和下位机之间通常采用RS232或RS485协议进行通讯[1]。但这种方法仅适用于通讯距离较近的场合,许多情况下要求通信距离在几公里甚至十几公里以上,这时采用RS232或RS485协议就难以满足要求。实践表明,在此情况下,如果对系统的通信速度要求不高,则理想的通讯方案是利用调制解调器(MODEM)。1MODEM通信的特点利用MODEM进行上位机与下位机之间的远程低速通讯具有很多优点:首先,通信距离可以扩展到几十甚至上百公里,只要电话线路质量较好通信距离基本不受限制;其次,MODEM通信利用电信部门的电话线路和交换网络,不需要单独布线,不需亲自维护,尽管需交纳一定的月租费用,但仍节省了大量的精力和资金;再者,在不需要进行数据传输时,线路可以作为普通的电话线路用于语音通信或收发传真等,一线多用;最后,利用MODEM通信速率最高可达50?kbps左右(取决于线路质量),可以满足大多数设计要求,而且MODEM本身技术成熟、性能可靠、价格也不高。使用成品的调制解调器还可以避免通信接口的设计调试过程,缩短了开发周期,降低了开发成本,同时提高了系统的可靠性。MODEM通信也有一定的不足:一是不适合对实时性要求严格的场合,因为MODEM拨号、应答需要一定时间,还有可能出现占线等问题;二是传输速率不是很快,MODEM使用串行通信,理论上MODEM的最高通信速率时56?kbps,实际的单片机系统一般采用9?600?bps以下的速率。此外,普通的调制解调器还存在掉线等问题,在系统设计过程中要认真考虑解决。2系统的结构框图整个系统由上位机、MODEM、下位机、二次仪表组成,如图1。图中给出的是我们为某热电厂设计的远程抄表系统。其中下位机与二次仪表和MODEM之间,以及上位机与MODEM之间都使用RS232接口联系。实际系统中,上位机位于热电厂的中心控制室,图1系统结构框图下位机位于各用气单位的入口,上位机和下位机之间用MODEM通过电信的电话网联系。在系统中,下位机负责从仪表中采集数据,并将其存放于E2PROM之中。同时,下位机还负责MODEM的初始化工作。上位机主要任务是通过电话网拨通下位机,建立起联系后,从下位机接收存储的历史数据和当前数据,如有必要,发出指令控制下位机(如同步系统时间等)。3系统硬件原理下位机硬件系统的原理框图如图2。由于采用ATMEL公司的AT89C51单片机,单片机内部集成了程序存储器,图2系统原理框图所以只需扩展数据存储器即可。系统中采用E2PROM存储器X28C256作为数据存储器,这是因为本系统要求的通信数据量不大且实时性不强,这时每次采集结束后就向上位机传送一次数据是不合适的。而如果将采集到的数据暂存在RAM中,到一定数量后集中发送又必须考虑掉电保护问题。因为下位机工作在现场,掉电事故是可能发生的。为此,我们在设计中采用了E2PROM作为数据存储器,一方面保证掉电后数据不致丢失,另一方面允许单片机系统随时对数据进行更新。MAX232是232接口电路,完成单片机与二次仪表或MODEM之间的电平转换,其特点是仅使用单+5V电源,故简化了电源电路。模拟开关采用的是CD4066,其功能是根据需要切换二次仪表和MODEM的数据线,这样,使用一个MAX232就可以分别完成与二次仪表及MODEM的通信。我们使用的二次表本身具有串行通讯功能,MODEM是市面上常见的普通外置式MODEM。3.1AT89C51的结构特点AT89C51是ATMEL公司生产的电可擦除8位单片机[2],其指令系统和管脚均与MCS-51系列完全兼容,有超强的加密功能,数据可保持十年,价格便宜。其内含4?kB的闪速存储器,128字节的RAM,可在线编程。3.2E2PROM简介设计中我们使用CMOS型微功耗高速并行E2PROM芯片X28C256[3],此芯片在参考文献[3]中介绍较详细,此处仅强调使用过程中需要注意的两个问题:(1)尽管E2PROM的读出速度很快,与普通RAM相当。但写入速度相对而言要慢得多。X28C256的写入可分为字节写入和页写入两种。前者每次只写入一个字节,后者每次写入不超过一页(64个)的数据。无论那种写入方式,在写入后都需要等待一段时间twc后才能进行下一次读写操作,在此期间读写数据无效;(2)每次写入后要检查写周期是否结束。检查方法有两种:一是读出数据最高位DQ7,这一位在写操作过程中为反码,只有当写操作完成后才变为写入数据的原码,由此可判断写入周期是否结束;二是在CMOS型E2PROM中可采取的新方法,即利用DQ6检查写周期是否结束。其原理为DQ6在写入过程中读出的是“1”、“0”反复的状态标志,只有当写操作完成后,才停止反复,读出值为原写入值。为保证在写周期结束前不进行下一次的读写操作。可用汇编语言编写写操作结束检查子程度如下,本例中检测DQ7,是否为原码,适用于字节写入或页写入。CHECKEEPROM:MOVR6,ACHECKTEST:MOVXA,@DPTRXRL??A,R6JBACC.7,CHECKTESTRET3.3下位机系统软件下位机系统软件包括下面几个模块:数据采集、数据存储、通信模块、控制模块,如图3。数据采集模块负责每分钟与二次仪表通信一次,实时取出表中的数据。数据存储模块根据当前的系统时间和系统设定的存储间隔时间确定是否将数据保存在E2PROM中。通信模块负责设置MODEM为自动应答状态,并在MODEM自动应答时响应中断,在中断服务子程序中与上位机联络,接收上位机发送的控制信息或给上位机发送数据。控制模块负责根据上位机发送的控制信息修改存储时间间隔及同步系统时间。参见图4、图5,系统工作过程为:首先,单片机在复位后初始化,设置好基本的环境参数。然后初始化MODEM,使其处于自动应答状态,随时准备与上位机进行通讯。而后定时采集二次表中的数据(每分钟一次),根据需要选择合适的数据存储在E2PROM中备用(如每小时存一次)。当上位机需要采集数据时,由上位机拨号,单片机处MODEM自动抬机响应,开始向上位机发送E2PROM中的数据。为及时响应上位机的通信请求,应将MODEM的OH(抬机)信号通过MAX232接至89C51的INT0,传送数据在中断服务子程度中完成。中断服务子程度中首先接收上位机发来的控制符,判断是发送数据还是接收控制数据。如果是发送数据,则将下位机中的历史数据和当前数据上传;如为接收控制数据,则开始接收上位机发出的存储时间间隔和当前系统时间,对系统进行更新。3.4使用中应注意的问题(1)E2PROM指针用于断点保护,它对应E2PROM有效数据的位置。在系统第一次使用前将其初始化为0000H,以后每写入一个字节的数据,对应的将E2PROM指针加一。即使系统意外断电后重新开机,由于指针保存在E2PROM中故其值保持不变,从而保证下一次写入的数据是接着断电前的数据存放的。这样,尽管在断电期间无法采集数据,但断电前、后的数据都将正确保存。每次向上位机传送历史数据结束后,此指针将被复位为0000H。(2)实际的MODEM有时存在掉线问题,而下位机系统应该是免维护的,所以在系统设计过程中无论硬件还是软件上都要考虑避免无法拨通的情况,一般在出现故障的时候应该使系统自动复位。(3)在远程通信的过程中,数据传输错误是不可避免的,因此必须采用相应的查错、纠错方法。本系统中,每组数据都连续传送三次,只有连续两次传输的数据完全一样才表示收到的数据无误,否则重新传输数据。(4)在下位机端和上位机端RTS的设置必须保持一致,最好都使用硬件RTS控制。4上位机程序简介为便于软件系统的开发与升级,上位机的软件系统采用VC++语言编写完成,由于采用了基于Windows的窗口化程序设计方法,人机界面生动直观,操作简单。参见图6,上位机软件系统包括MODEM通信、数据库管理、显示监控界面、报表输出等功能模块。鉴于篇幅,本文仅介绍与MODEM通信相关的程序流程。首先,上位机完成MODEM的初始化,在需要采集数据时,上位机先通过MODEM拨号,拨通后建立数据传输链路,然后发控制符确定是进行远程控制还是接收所有数据,最后接收下位机发送来的数据(一组或多组),在传输完成后挂断电话。此后,上位机根据用户设定的采集周期,等待一段时间后进行下一次数据采集。本例中的远程控制仅包括更改下位机的系统时间和存储数据的时间间隔,如果需要进行远程控制,则上位机先拨通下位机,而后发送控制符表明准备发送,继而发送新的时间和存储时间间隔。5结论本文介绍的系统方便的实现了二次仪表的远程数据传输,其传输距离远、系统成本低、便于维护。由于采用了E2PROM,一方面避免了意外停电的影响,提高了系统的适用性。另一方面减少了通信次数,提高了通信效率并降低了通信费用。此外,系统还具有远程修改下位机时间和存储时间间隔的功能。本方案在某热电厂远程测控系统中已投入使用,效果良好。参考文献

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功