非接触式IC卡预收费电度表的设计
用户使用电量的计量手段的准确程度取决于电互感器及电度表的精度。现已出现了接触式IC卡预收费电度表,它使收费从过去繁琐的人工抄表、手工计价转变为用户持卡购电,实现了电费收缴管理自动化。但它不能解决无源(卡中无电源)和免接触等问题[2~8]。
非接触式IC卡(又称射频卡)是国外近几年发展起来的新技术[1],它成功地将射频识别技术和IC卡技术结合起来,解决了无源和免接触难题。射频卡无需专门的供电电源;它与读写器间无机械接触,避免了接触故障;它的表面无裸露芯片,可防水,且不易产生静电击空及弯曲损坏等问题;射频卡使用时没有正反面。总之,非接触式IC卡具有可靠性高、使用方便、操作速度快等特点。本文采用非接触式IC卡研制成功了智能预收费电度表。
1 工作原理
1.1 非接触式IC卡的工作原理
非接触式IC卡系统由读写器和非接触式IC卡两部分组成。应用系统通过读写器对卡进行操作;读卡器通过射频信号同步进行近距离通讯,并为卡上芯片提供能量;非接触式IC卡响应读写器的指令,并报告处理的结果。非接触式IC卡通过连接IC芯片的线圈在特定交变磁场中耦合获得高压能量,非接触式IC卡的读写器通过发射线圈发射交变强磁场,强予IC卡能量,通过磁场的断、续编码写入数据,并通过线圈感应IC卡发生的磁场阅读IC卡发来的数据;IC卡通过交变磁场获得能量,通过检验磁场的数、续获得读写头写来的数据,并按设定的模式编码、调制,向读写头发出数据。
本系统采用上海华虹集成电路公司开发的SHC1701 RF读写模块。它主要由射频和SHC1501大规模集成电路构成,共同安装在PCB板上,同时安装屏蔽罩,可完成读写器与IC卡之间的各种交互功能,包括调制/解调、加密/解密、认证、读写、加/减等,并具有同微处理器的接口。其基本结构如图1所示。
非接触式IC卡与读写器的通信内容包括复位应答、防冲突、选择卡片、相互认证、对数据块的操作和中止。
1.2 预收费电度表的工作原理
预收费电度表可分为电子式和机电式两种,它们的区别在于电能变换元件不同。前者将电压、电流进行A/D转换,再将采样值相乘并累计,得到用户消耗的电度数;后者借用原感应式电度表的机芯,通过光电传感器读取转盘数据数得到用户消耗的电度数。为节省成本,选用机电式电度表。
本系统的工作原理为:
(1)用户持IC卡到供电部门交款购电时,供电部门把用户的IC卡放在与PC机相连的读写器上,由写卡程序在IC卡上写入与用户交款数相符的一定电度数。
(2)用户把IC卡带回家,将卡掠过家中预收费电度表的读定,卡中电度数被主机读出,与预收费电度表中来剩余的电度数相加。由于机内采用备用电池,不怕掉电失去数据。
(3)电表表盘转动时,由红外发射接收管把表盘数变成电脉冲送入单片机。单片机记录表盘的转数,当转数等于电表常数时,通过单片机控制使内存中的剩余电度数减去一度。
(4)单片机随时监测内存中剩余电度数是否小于15度。如是,则点亮预告用电量将尽的发光二极管指示器,提示用户持卡到供电部门重新购电。
(5)当单片机发现用户电表中剩余电量完全用完时,控制继电器切断用户供电电源。
(7)系统采用VB的通讯控件通过RS232与单片机进行通讯。微机通过事先约定好的字符来实现对单片机的控制,如小区的管理中心定期通过RS232串行通讯口读取用户电度表的使用电量和剩余电度数,并制成数据库加以保存。供电部门可通过Internet对小区采集的数据进行访问和管理,从而实现了供电管理部门网络化的管理手段。
(8)本装置属于二次仪表,精度主要取决于一次仪表。只要表盘转动正常,二次仪表不会引入误差。
2 硬件电路
非接触式IC卡预收费电度表的硬件电路结构图如图2所示。图中主控单元采用AT89C52单片机,其内有8K字节的快速擦写存储器(FLASH),无需外接程序存储器(EPROM)。外接电路主要包括:四位LED显示电路、电表表盘检测电路、控制供电的继电器电路、振铃控制电路、RS232串行通讯电路、看门狗复位电路、电源控制电路以及控制非接触式IC卡的SHC1701读写模块。
SHC1701 RF模块是IC卡读写器的核心单元,它由SHC1501专用电路和RF电路等组成,覆盖了所有对非接触式IC卡SHC1101的访问操作。IC卡读写模块及显示电路与单片机的接口如图3所示。图中采用4位共阳极的动态数码显示管,显示字符由单片机P0口送至锁存器74LS374锁存,再经显示驱动芯片ULN2003驱动数据管显示,P1.0~P1.3分别控制每一位的动态显示。显示电路用显示可供使用的电度数。当读卡发生错误时,将显示错误信息。在供电部门存款时,将显示存入电卡中的电度数。
电表转盘读数头(红外发射接收管)产生的脉冲信号经一个非门输出到单片机的P1.4口,单片机实时对P1.4口进行监测。
RS232串行通讯电路采用MAX232芯片,实现单片机与微机的数据交换。微机主要采用VB的通讯控件通过RS232与单片机进行通讯,通过事先约定好的字符对单片机实现控制。
看门狗电路由4538单稳电路组成。初上电时,CLR端为低电平,使输出Q为低电平,从而使系统复位。正常工作时,单片机在每个主程序循环时发出一个低电平脉冲,触发单稳;当程序受干扰跑飞时,单稳因得不到触发脉冲而复位,此时,输出端Q=0,使系统复位。
振铃控制电路由蜂鸣器、两个三极管和电阻组成。当单片机的P1.7端发出一个高电平时,触发蜂鸣器蜂鸣。为使系统在停电时也能正常工作,由两组电源给系统供电,一组是将220V/50Hz的市电经变压、整流、稳压得到5V直流电,另一组由12V/4A的可充电电流经斩波、隐压、稳压得到5V直流电。一般由市电供电,并对可充电电池充电。市电停电时由电池供电,12V/4A的可充电电流能使系统连续工作24h以上。
3 软件设计
本非接触式IC卡预收费电度表的程序采用了模块化的设计,整个系统由用户端电度表计费程序和供电部门存未及管理程序两部分组成。每部分程序又由单片机系统程序和VB用户接口程序两部分组成,单片机程序和VB程序之间采用VB的通讯控件MSComm通过RS232进行通讯,通讯协议使用基于ASCII码的查询命令、中断收发字符。微机通过事先约定好的字符对单片机实现控制,单片机通过判断微机发来的不同字符,执行不同的单片机子程序。
3.1 用户端电度表计费程序
3.1.1 单片机系统程序的主要功能
(1)读取有效的非接触式IC卡功能。对卡进行防冲突、密码认证、卡号认证等操作,并读出卡中存储的数据,然后将卡清零、停卡。
(2)完成电度表的预收费功能。将从IC卡中读出的电度数与单片机内存剩余的电度数相加,并存回内存。
(3)显示功能。系统周期性地扫描,动态显示机内剩余的电度数。此外,当读写IC卡发生错误时,显示出错信号。
(5)电度计数功能。系统实时监测电表转盘读数头(红外发射接收管)发来的脉冲信号,当脉冲信号由高电平变为低电平时,计数器COUNT加1;而当COUNT值等于电表常数(转/度)时,剩余电度数减1,用电量加1,同时COUNT清零。
(6)报警断电功能。当机内剩余电度数小于15度时,点亮预告用电量将尽的发光二极管指示器,提示用户持卡到供电部门重新购电。而当用户电表中剩余电量完全用完时,控制继电器切断用户供电电源。用户只有再次存入电度数后,才能继续供电。
单片机系统程序由主监控程序、IC卡处理子程序、电度计数子程序、串行中断服务子程序等组成,其框图分别见图4(a)、(b)、(c)、(d)。
3.1.2 VB用户接口程序的主要功能
(1)显示。根据输入的用户编号,显示相应的用户信息。
(2)采集。将用户编号通过通讯控件发送给单片机,单片机认证用户编号后,返回该用户的用电量和剩余电度数。
(3)写入。将采集来的数据。加上用户编号和日期,一并写入数据库,以供查询。
(4)查看。查看当用各用户的用电量情况及剩余电度数;查看所有的用电情况。
3.2 供电部门存款及管理程序
3.2.1 单片机系统程序的主要功能
(1)系统初始化设置。设置寄存器地址、中断源入口、加载IC卡认证密码以及设置串行口、定时器0和定时器1的工作模式等。
(2)接收微机发来的控制字符。执行串行中断服务子程序,如控制字符为R则执行对IC卡的询卡、防冲突、选卡、认证等操作,并返回给微机卡号;如控制字符为W则将用户购买的电度数写入IC卡,再读出写入的电度数,然后停卡。
(3)显示功能。显示IC卡中存入的电度数,当对IC卡操作过程中有任何错误时,将显示错误信息,提示用户。
程序由主程序程序和串行中断服务子程序等组成,它们的框图见图5(a)、(b)。
(1)IC卡存款功能。用户持卡到供电部门存款,工作人员将放在读写器上,按“读卡”按钮,微机发送字符“R”给单片机,单片机执行相应的中断处理后返回卡号。系统根据返回的卡号显示对应的用户信息,确认无误后,输入用户交纳的金额,系统自动转化成电度数。按下“存款”按扭,将电度数存入IC卡,同时将存款的相关信息写入数据库,以供查询。
(2)查询功能。查询用户信息、IC卡信息以及用户的用电情况,可以根据输入的用户编号或电卡号进行有选择地查询。
(3)维护功能。对数据库的维护包括添加新的记录、删除不需要的记录以及对现有记录的更新。本系统所使用的数据库由MSAccess建立,通过VB的数据对象控件与用户界面关联,对数据的所有操作都实时地更新所关联的数据库。
本文将非接触式IC卡技术与计算机技术相结合,研制出多功能电量计量收费装置。该系统实现了用电收费的电子化,改变了先用电后收费的不合理状况,促进了用电计量、收费的科学化管理。该装置利用了老式机械表的功能和结构,降低了改造的成本,适于推广使用。