C8051F单片机是完全集成的混合信号系统芯片(SoC),具有与8051指令集完全兼容的CIP-51内核和高速、高性能、高集成度等特点。在本文设计的一套远端测控装置中取得了较好的效果。 系统简介 远端测控装置是一种现场可编程的控制器,它能完成数据的采集控制,而通过远程通信的方式(如电台、CDMA、拨号等)将数据上传至中心站或接收中心站的遥控指令。它往往被安装在比较分散、环境比较恶劣、无电源保障(经常断电或使用太阳能)且无人值守的地方,因此它运行的可靠性和功耗就显得尤为重要了。C805IF单片机的工业级工作温度(-40℃~+84℃)、低电压、低功耗、自带看门狗和多复位源等特点满足了此系统的要求。 基于此系统的定位,选用C8051F064做主控部分,C8051F236做从属部分。系统要求具有输入/输出点可灵活配置、多通信端口、可现场修改配置等性能。 系统结构如图1所示,系统采用220VAC或24VDC供电,主单元功耗3.3W ,每个从单元功耗2.2W ,最多可以扩展8个从单元。 主单元结构 主单元结构如图2所示,根据系统的特点将C8051F064的功能做如下配置: 存储器 C8051F064内部自带4352字节RAM和128字节的Flash,由于系统对数据的实时性要求不高且采用远程通信方式,为了降低功耗,往往将大量数据缓存,在一定的时间集中发送,所以需要比较大的数据存储区,利用外部数据和地址总线可以扩展32KB的RAM。另外,作为现场可编程设备,需要设定大量的参数,而这些参数都需要掉电保持,所以,除了使用单片机内部的128字节的非易失RAM之外,还扩展了一个8KB的E2PROM.地址和数据总线的利用 地址和数据总线采用复用的方式,C8051F064支持64KB的外部存储空间,扩展RAM 为32KB,所以,剩下地址线A15是空余的,利用A15和其他低位的数据线,用与非门就可以构成片选信号,用来选择总线上的设备。在总线上还外挂了一个实时时钟,用来作为系统的时间标志,由于此芯片内带有电池保持的RAM ,对于频繁操作且需要保持的数据就可以存在此处,这样可以避免内部非易失RAM 和E2PROM 的复杂操作。另外,现场的数字I/O也可以用总线和片选经光电隔离构成,这样可以大量缩减单片机的引脚。
串口 C8051F064内部带有两个UART,其中串口0经光电隔离转换为RS-485信号,用于跟现场的其他设备连接,串口1再加上6个GPIO口经电平转换后成为全功能标准的RS-232接口,用于与Modem、电台、CDMA等连接。用C8051F064的SPI口经MAX3100扩展成UART,通过外部的可选配件,转变成RS-232或RS-485信号。
模拟量 C8051F064的模拟量输入最高不超过3.6V,所以接入信号时要注意其范围,针对此系统,由于现场信号大部分是4mA~20mA电流,因此用100Ω的精密电阻,配上2.5V的精密电压源,可以将模拟量的精度调整到1‰。另外,启动内部ADC0的窗口检测功能,可以方便地实现模拟量的上下限越限报警功能。
数字量 大部分数字量直接挂在总线上,另外,有两路开关量输入直接接到单片机引脚,并在内部分配这两个引脚为定时/计数器的输入,这两路就可以兼做脉冲量了。
单片机资源分配 C8051F064的端口功能分配使用交叉开关的方式,而且还带有优先级,这种方式很灵活,但是要求设计师在电路设计时就要将内部的功能分配就绪,也就是说电路板加工完成后就不可以随意修改交叉开关了。
复位 C8051F064除了实现传统的RESET信号复位外,还有上电、掉电、外部信号、软件命令、比较器0、时钟丢失检测及开门狗等复位功能,共7种复位方式。单片机复位后可以通过查询寄存器得知是何原因引起的复位,这对数据的处理和故障分析都是很有用的。本系统使用的是上电、软件命令、时钟丢失和看门狗,增加软件命令复位的原因是: 由于这些设备的安装地点都是比较偏远的,当中心站察觉此设备异常时,可以将其重新启动,以解决一些异常问题。 一些技术问题 数据的存储 在这个系统中有多个可以存储数据的存储器,如256字节的内部RAM、4KB的内部扩展RAM、32KB的外扩RA M、128字节的Flash、实时时钟内114字节的电池保持RAM和外扩8KB的E2PROM,这么多的数据存储区,一定要仔细分配其用途,以便充分发挥功能和速度。本系统作如下分配:256字节的内部RAM读写速度最快,而且它是单片机内核所占用的,所以要减少使用,它用在对速度要求较高且频繁使用的地方,如中断内的变量等;4KB内部扩展RAM 和32KB外扩RAM的地位是等同的,一般用作程序的中间变量;128字节的Flash是整片修改的,所以修改之前要把所有数据读到缓冲区,将要修改的字节改掉,再把整片擦除,然后把数据写入。虽然写比较麻烦,但是读取很方便,所以用它存放一些不经常改动而且需要掉电保持的数据,如模拟量的修正值等;实时时钟内114字节的RAM读写速度较快,而且访问方便,所以用它存放需要掉电保持的中间变量,这样可以随意读写;8KB的E2PROM受总线逻辑的限制,读写较慢,但数据区较大,用来存放功能的设定值,在程序初始化的时候把它读出并放到中间变量区,以后不对其操作,修改内部数据操作不宜在中断中进行,防止延长中断时间。
看门狗 本文采用的是22.1184MHz晶振,那么看门狗监控时间最长只有47.4ms,这对实时性要求不高。本文采用中断喂狗的方式。一般来说单纯的中断喂狗是不可以的,因为程序中起作用的是主循环,而当主循环进入非正常状态时,中断往往还在进行,所以用中断喂狗还需主循环配合。这里采用的是5ms中断喂狗,在中断中用变量a累加,当a累加到100时,就不再喂狗;而主循环内不断将a清0,这样就可以把看门狗的时间延长到500ms。
模拟量滤波 C8051F064的ADC是逐次逼近型的,虽然速度快至1MSPS,但数据的抖动特别大,所以在混合系统中应用时,外围一定要加滤波电路,如果在硬件设计中没有考虑也没关系,可以充分利用它的速度,在内部采用软件滤波的方式。本系统对模拟量的采集速度要求不高,只求稳定和准确,在内部采用了20个点的中位值平均滤波,然后再用20次平均值算法,这样,就算外围没有任何滤波措施,也能得到很好的效果。 从单元结构 从单元采用底板加模块的方式,在底板上布置4个模块的位置,这几个位置的接口要完全相同,这样可以灵活配置点数。按照系统要求,所有的I/O点都要进行电气隔离,就不需要选择带ADC和DAC的单片机了,只需要有足够的GPIO就可以了,按照这一原则,本系统选用了C8051F236,如图3所示。从单元保留了主单元设计时的液晶和键盘接口,虽然大部分参数是在主单元内设置的,但保留这个接口可以看到模块的软件版本号等信息,如果将来有参数设置的话,也可以通过这里设定到单片机内的非易失RAM 区。 主/从间通信采用Modbus协议,不需要扩展从单元,可以用这个口与外界的Modbus协议设备连接。从单元结构比较简单,单片机只负责很少一部分工作,在此从略。 系统组网 在实际应用中,通常不是使用一个装置,而是将多个装置连接成一个有线或无线网络,有线网络一般采用RS-485结构或拨号方式,在距离较近的系统中使用,由中心站对每个站点进行轮巡;无线网络一般采用电台和CDMA等,与有线网络不同的是,这个链路是要收费的,所以通信就不能采用轮巡方式了。在用电台通信时,往往是距离较远,供电较困难,所以应采用遇变则报的方式,对开关量只要变位就发送,模拟量超过预设的死区范围就发送,由于电台往往采用频分复用的方式,所以每个站都要有自己的时间片,当有数据需要发送时,将数据缓存,当到达自己的时间片时,将缓存数据发送,这样就不会出现数据冲突现象了,也利于降低功耗,这对于太阳能供电的系统是很有利的。单纯的遇变则报是有缺陷的,因为在系统没有变化的时候,他不发送数据,也就不知道是数据没有变化还是这个站点有问题,所以本系统增加了一个整点平安报的功能,就是在每隔固定的时间断,如4小时,所有站点都把自身所有数据发送一次,这样就可以看清问题之所在了。在用CDMA通信时,虽然不存在频分复用的问题,但也要将发送数据分时发送,以免在特定的环境下,大量的数据在同一时间涌人数据中心,造成信道堵塞。 系统的测试与运行情况 系统设计完成后,进行了严格的测试,单片机的运行速度达到了预期的效果,功耗和整体散热情况优于原有的系统。在电磁兼容实验室内进行了快速瞬变、辐射抗扰度、静电放电和电压突变等实验,其指标优于国家对此类产品的要求。同时对系统进行了高温(60℃)和低温试验(-20℃)、恒定湿热、振动、碰撞、绝缘强度等测试,均优于国家标准。在防汛、水网、热网等多种应用中,用这个系统与CDMA和电台等组成无线网络,最多达到60多个点,运行稳定可靠。在楼宇控制系统中,采用RS-485组成的有线网络,也取得了很好的效果。
|