《电子技术应用》
您所在的位置:首页 > 其他 > 设计应用 > 基于ISP技术的可远程升级抄表模块的设计
基于ISP技术的可远程升级抄表模块的设计
万水明1, 强 英2
摘要: 介绍了一种基于ISP技术可远程升级的集中抄表模块的设计技术。对其软硬件设计进行了详细讨论。
Abstract:
Key words :

    摘  要: 介绍了一种基于ISP技术可远程升级的集中抄表模块的设计技术。对其软硬件设计进行了详细讨论。
  关键词: 抄表模块  ISP(In-System Programming)远程升级  modem芯片  软件UART

   集中抄表模块通过485接口可以用于抄取多功能电表、居民楼中的水(电、气)表、工业现场的联网智能仪器的数据,并可通过扩充的I/O口,实现一定的数字量的输入采集和输出控制,其系统总体结构如图1所示。集中抄表模块通过Modem以公共电话网作为传输信道,将数据传输到运行数据管理软件的上位机系统中,完成数据的自动记录、管理、分析,并执行上位机的指令和实时监控,具有经济、省时省力、使用维护灵活、技术成熟等优点,具有很好的应用前景。目前这种技术在工业和民用方面都得到了越来越多的应用。

 


  基于以下三个方面的原因,对集中抄表模块进行远程软件升级是十分必要的:(1)所期望连接的仪表种类越多越好,使它变成一个相对通用的抄表模块。而不同的仪表所运行的通信协议都不尽相同,甚至有些协议还在不断的变化之中。(2)控制软件的设计需要不断修改完善,以消除bug、增加或删除某些功能。即使是已通过测试并在现场运行的抄表模块,其软件也有版本不断升级的需求。(3)远程软件升级给运行维护及开发人员可带来极大的便利性:如不用去现场、不用停电、不要开机箱等。
  随着半导体技术的发展,内置了Flash存储器、Flash擦除及烧录功能的单片机大量出现,给单片机软件的远程升级提供了方便。本设计中使用了Philips的二款单片机,其中主控单片机P89C51RD2就具有这些特点,具体表现在它的可在系统编程(In-System Programming,ISP)和可在应用中编程(In-Application Programming,IAP)的能力中。
1  硬件设计
1.1 总体硬件结构

  图2展示了集中抄表模块的整体硬件结构。图中hUART是指单片机本身带的UART口,sUART是指软件模拟的UART。本电路主要包含有如下几个部分:

 


  (1)电话接口电路。由嵌入式Modem芯片TDK 73m2901-32及其外围电路组成。
  (2)CPU监控电路。即max706看门狗芯片监控Philips的低成本单片机P87LPC764;再由P87LPC764监控主控单片机P89C51RD2,即前者可以看成是后者的看门狗芯片。max706及二个单片机形成了一个看门狗监控链。同时,max706的/RESET输出除了反相后复位P87LPC764外,还与逻辑电路一起在掉电和复位期间封锁SRAM芯片的写信号和片选信号,以实现对SRAM数据的有效保护。最后,max706还监视电源电压,当电源电压降至4.8V时给主控单片机告警,禁止数据的不可靠写入。
  (3)远程升级电路。主要由P87LPC764单片机和CD4053组成,前者从上位机接收数据,对P89C51RD2主控单片机实施ISP编程。
  (4)电池及法拉电容后备电路。掉电时维持SRAM中的数据和时钟芯片的走时。
  (5)数据存储电路。由2片ISSI 62C1024L-70 共256KB的SARM和1片AT24C02共256B的E2PROM组成。SRAM主要存储抄表模块以一定间隔从485总线读取的历史数据,以备上位机读取查询之用,每块数据在后面都加有CRC校验;E2PROM则存储一些配置信息,如本模块地址、所连接仪表的地址、上位和本模块的电话号码、采样间隔等,每项数据双备份,而且加CRC校验。
  (6)通信电路。包括Modem芯片、二个单片机之间的UART通信及切换电路以及与仪表的485总线的通信电路。
  (7)扩展I/O口。采用了I2C接口的可配置串转并芯片PCF8574,借此可以实现一些开关量的采集以及一些针对继电器、阀门的控制输出。
  (8)时钟电路。由时钟芯片PCF8563完成走时,每次采集的数据都要加上时间标签。
  (9)其他电路。如电话接口、485接口的防雷防静电保护电路等。
  下面对Modem和ISP这二部分重要的电路进行讨论。
1.2 Modem通信电路
  Modem通信使得远程读数和软件升级成为可能。集中抄表模块选用了TDK公司功能强大的73m2901-32 嵌入式Modem芯片作为通信接口。它实际上是一个由8051核心和相应的模拟电路、控制软件集成的一个SOC(System On Chip)产品。它支持ITU V.22bis、V.22、V.21、V.23等通信规范,带DTMF和脉冲拨号功能;拥有一套完备的AT命令集,所有控制功能都可由AT命令完成,并可设置详尽的参数;与控制器的接口也和标准的Modem一样,提供了RXD、TXD、RTS、CTS、DSR、DTR、RI 、DCD等信号,且串行通信可以自动识别波特率。
  该芯片的高度集成性简化了电路的设计。本设计中单片机只用到73m2901四个端子:RXD、TXD、/RI(振铃)、/RESET,实现无流控的串行通信;只选用V.22bis通信规范(用AT命令设置),即收、发速率都是2 400bps。这里Modem的变压器中没有直流经过(所谓“干”变压器),可防止磁芯饱和,有利于变压器缩小体积和提高耦合性能。
1.3 控制软件的远程升级电路
  P87LPC764是一款低成本的、具有4KB OTP(一次性)ROM、128B的RAM与8051兼容的单片机。在升级过程中,它起启动和实施软件升级的主导作用。它具体完成如下功能:
  (1)用sUART口以2 400bps的波特率监视Modem通信数据,接收上位要求升级的命令,并确认确实要进行远程升级。
  (2)切换CD4053模拟开关,使P89C51RD2的hUART口接P87LPC764的hUART口,禁止485口的发送使能。
  (3)将P89C51RD2的/PSEN置低,并复位P89C51RD2,使之进入ISP状态。
  (4)向P89C51RD2发命令,擦除64KB 的Flash中的代码。
  (5)经sUART口从远方Modem获取升级软件代码的密文,校验解密后变成Intel HEX格式,再经hUART口发给已经进入ISP状态的P89C51RD2,让其自动编程实现升级。
  (6)设置升级成功标志,方法是继续在程序后面写入16个0AAH和16个55H。
  P89C51RD2是具有ISP和IAP功能的单片机,它具有如下的特点:与8051兼容,是8051的增强产品;1KB的RAM;64KB的Flash;时钟频率0~33MHz;双DPTR指针;增强的定时器T2;5模块PCA,支持上下沿捕捉PWM、软件定时器、看门狗定时器;增强的UART;7个中断源、4级中断优先级;ALE输出可控;6/12时钟方式;多种运行模式等。
  P89C51RD2在最后1KB地址,即0FC00H~0FFFFH空间中除了存放软件的Flash外,还提供了一块BOOT ROM,在其中固化了Philips公司设计好的实现ISP功能的程序。这个程序可以实现串行通信,可自动发现波特率,可对Flash空间擦除、编程、读出校验、加密位编程等,亦即P89C51RD2进入ISP模式后能自主地从串口接收HEX格式的软件代码并写入芯片中。这二块地址的切换是由特殊功能寄存器AUXR1的ENBOOT位来实现的。当ENBOOT=1时,0FC00H~0FFFFH地址空间寻址到BOOT ROM,ENBOOT=0时,寻址到Flash。
  有二种方法可以使P89C51RD2进入ISP状态。第一种方法是设置特殊STATUS BYTE不为0,且BOOT VECTOR为0FCH,则复位时芯片就运行BOOT ROM的程序,进入ISP状态;第二种方法是将STATUS BYTE设为0,BOOT VECTOR为0FCH(默认情况),当用户Flash中的软件正常运行时,将P89C51RD2的管脚/PSEN由高变成低,保持ALE脚为高或浮空,经复位芯片也进入ISP状态。本设计中采用了第二种方法,如图3所示。P89C51RD2在P87LPC764的控制下进入ISP状态,并经串口从P87LPC764接收程序代码进行程序烧录。

 

2  软件设计
2.1 软件总体设计

  主控软件采用了模块化层次化的设计方法,并采用了多线程、分时、事件驱动的思想。虽然没有采用RTOS(Real-Time Operation System),但同样实现了多任务操作。具体实现方法是:
  (1)从功能上把系统划分为多个任务,在主循环中调用每个任务程序。
  (2)每个任务又按照执行顺序、消耗时间分成多个子模块。子模块的软件中不能出现耗时的循环等待现象,且每个任务有一个指针可指向其中的任意子模块。
  (3)主循环每次调用任务程序,实际上只执行了每个任务的一部分,即指针指向的子模块。完成后返回主循环,主循环再调用下一个任务程序。如此实现了多任务操作。
  (4)子模块指针的修改,或者说任务状态的迁移,一般是由计时器满标志、接收缓冲区满标志、发送缓冲器空标志及另一个任务设置的标志等事件驱动的。子模块需要自己去检查所关心的事件并修改指针,实现任务状态的迁移。
  (5)与实时有关的工作放在中断中进行,以保证实时性。
  集中抄表模块中有软件自我监控、Modem通信、485通信、I/O操作等模块。
2.2 通信软件设计
  (1)Modem芯片设置
  本设计中Modem芯片73m2901处于被叫位置。当复位后,对它发送了初始化串(ATE0S0=2S30=4S99=0S7=32S18=150S51=7S52=80S53=7S54=160),之后,Modem芯片就可自动完成摘机、握手、进入数据模式等操作。从逻辑上讲相当于实现透明化。
  通信中,当收到挂断电话命令,或收到“NO CARRIER”字符串,或30秒无正确格式的数据接收时,采用先复位再初始化73m2901芯片的方法挂断模块侧的电话。
  因为没有使用硬件流控功能,所以上位机所带的标准Modem也要取消硬件流控,并须支持V.22bis标准。
  (2)按照通信规约实现读数
此集中抄表模块最早用于电力行业,所以采用了DL/T 645-1997的多功能电表通信规约。目前此规约应用较广,且被不同的产品进行了扩充。按照规约,集中抄表模块一方面从485总线以一定时间间隔读取历史数据存入SRAM,一方面可同时向上位机通过Modem返回历史数据,另一方面还通过“Modem通信、485通信”二个软件模块提供的软通道,让上位软件与485总线上设备直接通信,达到实时监控的目的。
  (3)通信规约的扩充
  历史数据信息、升级软件的数据信息、软件版本信息、挂断电话命令、扩充I/O口数据读写等都是原规约中所没有定义的,软件设计中对规约作了相应的扩充。
  (4)软件UART(sUART)
  P87LPC764和P89C51RD2在集中抄表模块中都使用到了二个UART口(参见图2),而原单片机都只有一个硬件UART。所以在本设计中,二个单片机中各模拟了一个2 400bps速率的软件UART。因为二个单片机都基于51内核,指令执行速度比普通51快,所以sUART程序不仅可以共享,而且运行时并不占用太多的系统时间。
2.3 远程升级软件的设计
  在集中抄表模块正常运行时,数据流如图4(a)所示。通信从上位机发起,通过73m2901向P89C51RD2和485总线获取数据。P87LPC764监视上位命令,并过滤出升级命令。


  在ISP升级时,数据流如图4(b)所示。CD4053被切换,通信从P87LPC764发起。它从上位机获取加密的软件代码(①~④),解密后发给P89C51RD2烧录并等待烧录结果(⑤~⑥)。
  P87LPC764上电后,先复位P89C51RD2,随后切换CD4053,再与P89C51RD2通信,询问其程序版本、编程后的校验值,以确定程序的完好性,以发现升级过程中因掉电等情况造成的程序破坏。参考文中1.3节的说明,P87LPC764软件的整个流程绘制如图5所示。


3  结束语
  在集中抄表模块的设计中,采用了一些有特色的芯片,如TDK 73m2901的SOC芯片和具有ISP功能的单片机,并借此实现了一些复杂、灵活的功能。本设计中对一些软硬件的设计方法,如双CPU协同工作、看门狗链、软件的远程升级、软件分时分模块的多任务思想等作了一些有益的尝试,经实践证明是可行的。在下一步的工作中,需要提高Modem速率,加强软件升级中的安全认证和代码的安全传输,使通信和软件升级的功能更趋完善。
参考文献
1   马家辰,孙玉德.MCS-51单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社,2001
2   马洪连,杨波,姚建伟.内置MODEM通信模块在远程监测系统中的应用.电测与仪表,2002;(9)
3   中华人民共和国电力行业标准 DL/T645-1997.多功能电能表通信规约,1998
 

此内容为AET网站原创,未经授权禁止转载。