- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
非接触式IC卡工业水表及其售水系统设计
1 引言
近几年,智能IC卡的应用在我国已经十分普遍。在水表行业中,机械式工业水表已逐渐被嵌入式IC卡智能水表所取代。后者的出现,促进了水资源管理部门对水资源的科学管理,同时提高了工业用户对水资源的利用率。非接触式IC卡工业水表,改革传统抄表与收费问题,改用非接触式IC卡实现预付费,完成“先付费再用水”和持卡消费的先进模式,减少劳动强度,节约劳动力;水量记录、计费由计算机完成,准确、可靠、及时;鼓励用户节约用水。此外该款工业水表更具有自己的特点和优势,弥补当前因工业水表少而带来的功能不健全,系统不稳定等弱点。随着社会发展的需求,工业水表的智能化程度还将会有更大的提高。
2 设计概述
非接触式IC卡工业水表包含两块设备。一块连接水管并埋入地下,另一块放置于操作台上,两者通过串行线相连。系统中定义地下部分为“基表”,而与其相连的操作设备为“刷卡机”。基表负责记录、计算用水水量,刷卡机负责信息查看,两者共同完成用户的购水操作。
2.1 基表
基表记录用户剩余水量、报警水量、透支水量,这些水量信息会随着用户用水情况实时更新;同时,再结合系统工作情况共同控制送水阀门的开、关操作;基表定时更新记录在FLASH 中的水量信息。图1 给出了基表的功能框图。
图1 工业水表――基表功能框图
2.2 刷卡机
刷卡机,与售水系统、读写卡器一起提供刷卡使能;它的LCD 显示用户的剩余水量和系统当前的工作情况;刷卡机的电源模块同时给基表与自身供电。图2 给出了刷卡机的功能框图。
图2 工业水表――刷卡机功能框图
2.3 读写卡器与售水系统软件
读写卡器与售水系统软件提供给水资源管理部门使用。用户开户、购水、注销帐号等操作由售水系统完成,同时售水系统软件提供了日、月、年报表以及一些特殊功能,比如用户过户;软件系统的维护可以在本地计算机完成。系统内有多个数据库,记录用户相关信息。
系统工作原理是:用户先到水资源管理部门购买非接触式IC 卡并开户或者持原有卡购水;售水系统将相应信息写入IC 卡;用户在刷卡机上刷卡,并与基表一起完成用户身份的核对,成功后将购买水量累加到水表的剩余水量,作为新的用户可用水量。
用户用水过程中,卡内剩余水量会相应减少;当降到报警水量时(由用户与水资源管理部门商定),系统会报警,提示水量不足;继续使用到透支水量(同样由用户与水资源管理部门商定),系统会自动关闭阀门,停止供水。系统在遇到因客户操作不当而导致的错误的时候,会给出错误操作提示,必要时候会关闭阀门。如此可以同时保证客户与水资源管理部门的利益不受到侵犯。
3 刷卡机与基表
针对图1 和图2 的系统功能框图,以下从软、硬件上讲述刷卡机与基表的各个模块或部分的细节。
3.1 硬件设计
3.1.1 刷卡机(见图3)。
图3 刷卡机电路描述图
(1) 稳压电源电路:该模块直接与220V 交流连接。作为水表的电源供给模块,不仅直接给刷卡机供电,还为基本部分的电池充电。针对220V 的市电掉电,刷卡机部分提供了报警与故障提示。电压转换器和电池的输出电压均为12V,电路中标准电压为3.3V 和5V,为得到系统工作的稳定电源,模块中使用了两套精确的稳压电源计算电路;此外,考虑到刷卡、错误指示灯、显示、报警等大功耗元件重叠工作带来的大电流,电路在这方面作了充分的考虑,或者分时操作,或者限制连续的无意义操作,并最终有效地避免了个别元件满负载工作。
(2) 汉字点阵LCD:122×32 点阵液晶显示屏,分为上下两行。
(3) IC 卡读写卡模块:见4.2。
(4) MCU:微处理器选用Freescale 刚刚推出的8 位MCU MC9S08GB32,该芯片性能与16 位MCU 相当。正常工作电压时,CPU 速率和总线速率最高分别可达40MHz 与20MHz;RAM 和FLASH 分别为2K和32K;最多可大56个通用I/O口;采用"零元件"设计实现MCU 从"stop"模式的自动激活,从而降低了成本,也使电流降低到0.7mA;具有温度和电压补偿(典型漂移< 2%)的可编程内部时钟发生器,能提高通信的可靠性、加快启动时间和减少系统成本;通过第三代0.25 微米的闪存技术,提供应用程序的重复编写和数据存储能力;高度集成了4 个串行通信端口(SCI x 2、SPI、I2C/IIC)、最多8个定时器/PWM、1个8通道的10位A/D转换器(工作电压最低为1.8V)。
(5) 蜂鸣器:水表出现故障时报警用。
3.1.2 基表(见图4)。
图4 基表电路描述图
(1) 水量记录:水表中有机械转轮,通过干簧管与磁铁配合完成采样;内部提供了强磁场干扰的判别处理,再加之基表埋入地下,基本可以忽略外部环境的影响。
(2) 稳压电源及反馈电路:正常情况下,基表部分的电池通过刷卡机的12V 电源充电。它为基表部分的MCU 和阀门电机供电。考虑到电路中同时出现三种电压:3.3V、5V、12V,若干电容被使用,用来去除高频、低频毛刺,保证各电源不受污染以及信号的有效性。稳压电源电路的设计与刷卡机部分类似。基表部分使用了12V - 7.0Ah/20HR 的可充点蓄电池,电池特性说明,实际电压随电量的有效值同步变化。反馈电路采样电池电压,并把实时采样结果返回给MCU,MCU 根据采样结果判断电池电量是否足够维持当前系统的正常工作,并作出相应处理。
(3) 阀门驱动及反馈电路:两条电源线分别接阀门电机的两端,电机工作的条件是两端有电压差;继电器配合采样电路,准确、及时地为电机提供接通、切断电源的信号。实验证明阀门驱动及反馈信号电路均能支持正常工作。
(4) MCU:微处理器选用Freescale 公司的8 位MCU MC68HC908JL8。
3.2 软件设计
3.2.1 刷卡机部分。
刷卡机由以下5 部分组成。
(1) 稳压电源及反馈:程序中主要以中断的方式判断220V 电源的供电情况是否正常,但MCU 在工作时,会有其他中断和需要关闭中断进行长时间操作的程序块,因此存在丢失220V 中断的情况;程序实现时,结合查询方式,很好的避免了上述意外情况。在确认市电断电后,系统报警,错误指示灯闪烁。
(2) 汉字点阵LCD:该LCD 提供了汉字与ASCII 字符的显示。
(3) IC卡读写卡模块:为了保证一户一卡、一表一卡,IC 卡中添加了密码与特定用户信息,刷卡过程中,所有信息都吻合时才可以对其读写;从另一个角度来讲,仅有系统设计人员才能更改其中的内容。
(4) MCU:系统采用消息驱动的编程方式,上述任何一部分在发生或需要的时候,相应功能模块才会被执行;同时考虑到各模块及其他程序执行时间的先后顺序,系统给出了有效合理的安排。
(5) 串行通信:刷卡机与阀门每隔约2.3 秒进行一次通信握手,如有通信线故障,系统会立刻报警并给出提示。
3.2.2 基表部分。
基表由以下六部分组成。
(1) 时钟模块:该模块有两个用途:
①为防止阀门锈蚀,系统会定期转动阀门,该时间间隔是15 天;
②当刷卡机部分的电源转换器不能为基表电池充电,并且电池本身电量降到某一低限时,MCU 也要记时,并在一小时后关闭阀门。
(2) 水量记录:水量记录以中断的方式触发,并及时给予处理。记录信号的接收,需要考虑到了以下几点:①接收的方法:以低电平触发,一个下降沿代表一个记录脉冲,软件上为正确判断,使用两个引脚并以互补的方式接收下降沿,保证不丢失和添加任何一个记录信号;②屏蔽外接干扰:基表埋入地下,可以避免绝大多数干扰,另外自身提供了磁干扰的硬件判断的电路,软件上以中断方式触发,一旦发现异常,阀门关闭。工业水表的口径较大,单个记录信号所需要的时间非常段,因此在单位时间内会有若干记录中断信号;在其他处理时间比较长的过程中,肯定会出现记录信号与此过程冲突的现象;基于上述两种考虑,为了保证在刷卡时不丢失记录信号,程序除了在中断中及时处理记录信号外,必须还要支持该信号的累加,而后再处理的记录方法。
(3) 水量计算:所有关于水量的计算、存储都是以BCD 码为基础。程序上,提供了多位BCD 码的加、减和比较的子程序,具有很好的通用性。
(4) 电源模块:中断与查询相结合的方式判断电池的供电情况,功能与刷卡机部分电源模块相同。
(5) 阀门驱动及反馈模块:阀门设置了三种状态:堵塞、打滑、正常,程序根据开、关阀过程对阀门状态做出判断,在阀门动作失败后,程序会再一次尝试其他方法完成上述动作,并记录最终的状态。
(6) MCU:系统同样采用消息驱动的编程模式;基表部分MCU 的RAM 内存放着当前用户的水量信息,记录信号累加到RAM,并定期写入FLASH;水表的水量和用户信息存在于FLASH 内,掉电后数据不会丢失,可以保存十年以上的时间。基表部分MCU 内程序的特殊考虑,使其具有很强的独立性,并表现在这样两个方面:①任何一个刷卡机都可以与用户特定的基表匹配;②基表可以脱离刷卡机单独工作。考虑到用户刷卡过程中交互的数据量大,操作时间相对比较长的问题,MCU 在刷卡机与基表的通信和基表数据的更新上做了许多保护性措施,可在刷卡结束后判断是否刷卡成功,支持失败后的可以重新刷卡。基表部分的MUP 在初次上电并进入正常工作后,MCU 内RAM 和FLASH 内记录了用户水量等重要信息,绝不允许其掉电,原则上不会出现掉电现象,但为了避免不可能中的万一,系统还是设置了冷热复位的判断和处理,该操作既可以保证RAM 区水量正确,更保证了水量的一致性,也即累计用水、剩余水量、本次购水之间的数值关系。
3.2.3 监控程序
Freescale 公司的MC9S08GB32 是刚刚推出的一款具有16 位单片机性能的8 位单片机。它的封装形式从传统MCU 的DIP 转为LQFP,焊接时带来了许多困难,不适合取下重新写入程序。因此,在开发前编写了GB32 的监控程序及其在线编程系统,通过串口便可方便对开发板上的GB32 编程。
4 售水系统设计
售水系统包括售水系统软件和读写卡器。软、硬件结合
4.1 售水系统软件
售水系统实现发行IC 卡(开户)、售水、用户信息查询、售水信息查询、图表打印、系统维护等功能。同时含有发行清零卡、反读卡、工作卡、清卡、读取反读卡等卡操作,和用户过户、数据备份等功能。系统分管理员、操作员两种模式进入。管理员主要实现查询、特殊功能和系统维护等操作;操作员主要实现查询、特殊功能、开户和售水等操作。
系统提供了多种查询方式:
①用户信息查询:可根据用户号、姓名、开户日期、公司地址四种方式查询用户信息;
②售水信息查询:管理员可以查询统计售水情况,该功能模块有四个字功能模块,即组合查询模块、收盘统计模块、按用户名称查询模块和黑名单统计模块。
特殊功能有用户过户、数据备份、数据导入、清卡、读反读卡,管理员模式下多一个修改操作员密码的功能。系统维护包括参数设置(具体参数有:每表附加费、每吨附加费、水价类型、卡类型、口径、报警水量、透支水量、管理员、操作员、单位名称)、发行清零卡、发行反读卡、发行工作卡。开户和售水是用水的前提,也是售水系统最基本的功能;开户或每次售水后,相应的数据均写入数据库;如果用户卡丢失,系统可以根据之前记录补卡。
售水系统基于客户服务器模式(C/S)设计的,后台数据库用的是Microsoft SQLServer2000,适用于基于分布式网络售水的应用。同时,根据公司要求,考虑到本售水系统也能适用于规模比较小的单点售水,在数据库设计时,使其兼容ACCESS 2000。这样,售水系统管理软件在实际应用时,可以根据应用规模的大小,选择不同的后台数据库管理软件,增强了软件的适应性,可扩充性,使之具有更大的灵活性。
图5 描述了售水系统中操作员可执行的系统功能。
图5 售水系统软件功能模块图(操作员)
4.2 读写卡器
以PHILIPS 公司的MF-RC500 作为读写卡模块,FREESCALE 公司的M68HC08JL8 作为主控芯片,设计了一款非接触式IC 卡读写卡器。读写卡器还包括非接触式IC 卡和射频发射天线。读写卡器与PC 机通过串行口相连,提供售水系统操作卡的硬件平台;刷卡机中的读写卡模块,读取经售水系统售水后的IC 卡,并将其中相应信息记录到MCU 中。数据读写的过程中,时刻需要验证密码,只有获得正确的密码才可以操作卡的内容,因此卡中的数据具有非常好的保密性。刷卡机中的读写卡模块同样有读写卡的功能,但更主要是读卡中内容,并传送给基表,基表返回固定信息再写入卡中相应区域,所以不会对超出其范围的区域有写数据的操作。售水系统则可以提供读写卡器,实现对卡的完全操作,包括清卡。
5 关键技术
阀门驱动及反馈模块虽然能完成驱动和反馈的功能,但是存在如下问题:阀门操作完成时刷卡机串行通信指示灯偶尔持续闪烁的现象。指示灯闪烁说明基本有数据发送到刷卡机,而阀门操作时不会有双方的数据传输,因此初步分析为基本MCU 复位(启动代码现象)。
虽不是每次出现,但此现象的严重性不可忽略,MCU 复位前一次水量记录到复位时刻所用水量会丢失。根据反馈信号采样电路可知,阀门操作完成时的电路功耗比较大,于是软件上把采样的时间间隔缩短,硬件上在添加了大容量电容稳定电压,并经过示波器显示波形平稳,说明MCU 的供电正常。再一次做阀门试验,发觉仍然存在上述问题,而且没有任何改善。
用PC 机接收串行线上的数据,分析得出为MCU 上电复位的通信握手信号,至此可以确定上述现象是由基本MCU 复位造成。MCU 的复位情况有看门狗复位, RESET 键复位,程序死锁复位,低电压复位。进一步的试验排除了前三者的可能性,问题的确出自低电压,这说明阀门关闭的最后时刻功耗非常大,导致MCU 供电不足。硬件上要解决此问题,有两种方法:① MCU 电源直接从串行线的12V 转换得来;② MCU 电源由另外的电池提供,脱离现有的电池和串行线。两种方法虽然能暂时解决问题,但考虑到其他各种以外情况,上述方法均不能彻底解决该问题。软件上解决的办法是禁止低电压。系统复位状态寄存器上LVD位控制着MCU 低电压时复位是否允许,置1 则允许低电压情况下的复位,置0 则不复位。现置LVD 位为0。问题解决后,用示波器显示原电路MCU 管脚上电压,结果与原先一样,仍然看不出明显变化。可以分析阀门操作完成的瞬间,有毛刺影响了MCU 的工作。
前文提到的刷卡正常,是指刷卡过程中不随便挪开卡,直到最好刷卡结束,这样的刷卡过程能够完成一次正确的卡操作;但如果在刷卡过程中把卡拿开,即使是一会儿,也可能导致刷卡失败。刷卡过程是卡、刷卡机、基本三方通信的过程,除了三者之间交互的信息量大之外,还有写卡、写FLASH 操作,它们之间在时间上有先后顺序,并且是分步进行,一旦前面操作完成而后面操作不能正常完成,那刷卡肯定就不会成功,而且先前的写卡或写FLASH 操作必然导致下次刷卡不成功。要解决此问题,必须把写卡和写FLASH 操作推迟到刷卡结束前一刻。基表MCU 程序首先开辟一块FLASH 空间,专门用作存储FLASH 中即将被修改的信息;不改变刷卡过程,而只是在刷卡结束前判断是否刷卡成功,如果成功则结束,如果不成功则把原先备份的数据还原,系统又回复到刷卡前的状态。对于写卡,把表示是否刷卡的标志位和购水次数的写入放到刷卡机与卡通信的最后第二步(最后一步发送成功与否的标志)。试验证明上述方法非常有效,无数次测试过程中没有出现一次错误。
6 结束语
非接触式IC 卡工业水表已经完成开发。售水系统界面友善、操作简便,操作员只需要输入购水金额或者水量,系统便可完成数据库更新、写卡、打印发票等工作;正常的刷卡,补卡后的刷卡,多次水量累积的刷卡,都不会丢失任何一次所购水量或者添加额外水量,刷卡后系统会显示“本次购水”、“剩余水量”,如果此刻剩余水量较少,“水量报警”、“水量透支”或“透支关阀”也会相应显示,如果购水后水量较多,上述内容会相应不显示;用水、购水等水量的计算完全正确;用水过程中,当水量超过之前设定的透支限额,阀门会自行关闭,直到剩余水量恢复到该限额内;电池电量降到设定值时,阀门也会自行关闭,直到电池电量恢复;拔断刷卡机与基表之间的串行线,系统会立刻识别到“通信故障”,重新接好,系统也能立刻消除该错误标志;当出现用户持续刷卡的不正当操作,系统会给予识别并提示“请正确刷卡”,同时根据情况考虑是否终止接收用户刷卡;上述任何一种错误或非正常情况的发生,都会伴随刷卡机上红色LED 的闪烁,告知用户系统出现故障,一切正常时,该LED 不发光。
非接触式IC 卡工业水表吸收其他同类产品的优点,进一步完善不足,从功能、可靠性上给予提高。工业水表智能化是发展的必然趋势,智能化水表的推出,不仅改变了逐月入户验表的收费方式,而且其科学性、可靠性,为水资源管理部门实现计算机的全面管理提供了坚实的基础,能从根本上杜绝迟缴、欠缴、漏缴水费的现象,提供准确的用水信息,因此必将带来良好的经济效益和社会效益。