非接触式IC卡预付费煤气表的设计方法
传统的煤气表的收费是由抄表人员走进千家万户的居民家中读取煤气表数据,然后计算当月用量。计算出应收费用后再向用户收取。这样的过程存在着工作量大收费时间长、效率低等问题。更主要的问题是由于用户及其它方面的原因。往往不能按时收费,造成用户对燃气供应方的资金拖欠等。采用预付费煤气表,使用户与燃气供应方的资金结算方式发生变化,可以有效地解决以上问题,也有利于住宅小区实现智能化物业管理。当前国内已有许多厂家开始或已经生产出采用接触式IC卡的预付费煤气表,但是此类表中的IC卡触点在橱房等易污染的环境中长期使用,会造成接触不良的现象。由价格较低的非接触IC卡所构成的煤气表可以改善表的性能。
1 非接触式IC卡预付费煤气表的功能
非接触式IC卡预付费煤气表是采用目前现成的机械式煤气表为基表。通过光电或霍尔元件将基表的气体流量信号取出并转换成电信号输入单片机进行处理,并与表内已由IC卡预先读入E²PROM 中的预置值进行计算并扣除相应量,在预置值减至最小设定值后表将发出提示信号提醒用户提前购气,否则预置值减为零后将关闭气阀,直至用户重新购买的用气量经IC卡读入煤气表后才会重新开阀供气。随着燃气供需关系的变化,可以在表内设计有实时时钟电路,对用户的用气量进行费用分时计价这样可引导用户避开用气高蜂时间用气,实现燃气供应方对用户在每日24 h内按供气的高峰与低谷点在不同的时间段以不同的价格收费,有利于燃气能源的合理有效利用。
2 非接触式IC卡煤气表的基本结构及原理
该表组成框图如图1所示。由电源部分、 卡读写电路、单片机、串行E²PROM及串行实时时钟电路、阀门控制等组成。
图1 组成框图
2.1 电源部分
合理选择仪表的电源的是很重要的,考虑到煤气表的防爆安全性,首先是不能用市电228 V供电。应采用电池供电,但电池的使用寿命及仪表的功耗在设计中应当认真考虑。该表中选用3,6 V 1,2 A的高能量锂电池供电,其存储寿命可达6年。电路设计中为使功耗降到最低,单片机89C2051在不用气时及用气计数时间间隔内均运行于掉电方式,一块标称流量为4m3/h的城镇居民户的煤气表,当脉冲信号以0,01 为单位计数时,最大流量时也只在每9 s才产生一个计数信号,而实际使用中往往达不到如此流量,在每个计数信号作用时单片机仅运行30ms时间,工作电流为l5mA, 这样可以大大地降低电源功耗。
另外,由于IC卡读写电路的工作是不连续的,通常只在对IC卡操作时(一个月或更长时间)才工作一次,因此平时可由单片机控制使它不供电,由于大多数的机械表为金属壳体,对射频信号有屏蔽作用,因此可在表壳上开一个类似接触卡的读卡槽(但无触点),当需要读写卡时,将卡插入槽内,槽底部有一个小开关触发单片机接通IC卡读写电路的电源,卡读写完后,无论卡是否从槽内取出,IC卡读写电路都会断电,这样可以降低电池消耗。
2.2 IC卡读写电路及其数据结构
非接触式IC卡采用德国TEMIC公司生产的E5550芯片所封装的射频卡,该卡的成本较低,最主要的是它的读写电路无论结构、成本及体积等方面的特殊优点使它与其它非接触卡相比更适宜于该表的应用,其读写电路的核心也是该公司生产的U2270B芯片,该芯片只需较少的外围元件即可与单片机连结构成读写电路,但该苍片需至步不低于5v的电源供电,因此,由3,6V供电的锂电池需经过一个简单的DC-DC升压后为它供电,通过一个安装在卡槽侧面直径约3.5 cm的电感线圈对卡进行读写。
F5550 IC卡是一种可靠性较好的可进行逻辑加密的射频(RF)串行IC卡,其可存储的数据量为28字节。可分为7块,每块4字节并附加l位写保护位,用于块写保护,除外还有4字节32位的加密口令。同时配合其可编程的模式操作控制中对射频信号的载波频率、调制方式及,al3R功能的编程,可保证数据的安全性,以实现一卡一表的对应关系,用户与用户之间不能互使用。可按功能设计为用户卡与超级用户卡,用户卡发给用户用来购气,卡上记录为购气预置值(金额),超级用户卡由燃气供应方的管理人员使用,用来对煤气表的内部参数调整和设置,如定期的实时时钟调整(校对时间),高峰时与低谷时的单价调整,与基表同步的内部初始值的设定等。单片机内部有一个与基表同步的计数值,当用户每次将所购气的预置值(金额)读入表内的同时,表内的这一计数值会自动回写到卡上,这样,用户再到燃气供应方指定的购气点购气时,管理系统先读取卡内数据存入系统,然后再将新购气值写到卡上,由于用户与系统之间的这种数据交换方式,可使燃气供应方检查监督用户燃气及表的使用情况,以提高系统及煤气表数据的安全可靠性。
2.3 单片机、串行E²PROM及串行实时时钟电路
单片机采用ATMEL公司生产的产品,该芯片具有空闲与掉电两种节电工作方式,在掉电工作方式下单片机处于睡眠状态,功耗可降到最低,取自基表的计数脉冲信号将单片机从睡眠中唤醒,当完成一个计数的操作过程后,又进入睡眠状态,用户不用气时及在基表的计数脉冲的间隔内使单片机处于睡眠状态。由于AT89C2051单片机只能用复位的方式才能从睡眠状态唤醒,因此可将计数脉冲加在它的复位端,即每来一个计数信号,单片机口u复位一次,程序运行一次,将上一次的数据从串行E²PROM中读出,处理完后再写入串行E²PROM然后单片机就进入掉电(睡眠)状态。同样,IC卡槽内读卡开关信号也是加在复位端的,但不同之处是它同时还产生一个脉宽大于复位脉冲并滞后于复位脉冲的信号作用于P1.0端,如图2所示。
图2 计数及读卡电路
采用这样的工作方式,一方面可以利用AT89C2051单片机掉电工作方式,单片机实际上常期处于睡眠状态使功耗降为极低。另一方面读卡信号和复位信号是由复位端注入,可以使单片机省去看门狗及上电复位等电路而使煤气表保持可靠的工作,提高仪表的整体可靠性。
串行E²POM用来保存流量计数值、单价、高峰与低谷的切换时间以及其它的中间参数等。采用24(181串行存储器芯片,该芯片具有256字节的存储容量,为二线式I²C总线串行接口,数据擦写次数为10万次,数据保存时间为100年。串行时钟同样用I²C串行接口芯片PCF8583,该芯片内部具有实时时种功能,时钟运行不需单片机管理,并能够保证一定的走时精度。
2.4 阀门控制部分主要是选用双位置煤气表专用阀门,目前已有厂家开发生产,该阀门具有较好的密封性与抗腐蚀性、抗老化性。此阀的功耗极小并且只有在开启和关闭时才耗电,平时静止状态不耗电,通过改变电磁线圈中的电流方向可以控制开启与关闭。
3 软件设计
煤气表的软件部分由两个分支程序组成,即计数与IC卡读写两部分。这两部分由复位后根据P1,0端的信号状态而决定产生相应的分支,计数部分是先将前次脉冲计数所得运算结果从E²PROM中读出,包括高峰时低谷时的不同单价、高峰与低谷的切换时间、实时时钟与基表同步的累计量。分时计费的方法就是先由峰谷切换时间将每日24 h划分为不同的时间段,由实时时间确定当前时间段是高峰期还是低谷期,并根据运行标志判别前次计数信号累计与当前时间是否在同一时间段内,如相同,则只进行该时间段内的累计计数,然后程序结束。如不相同,则根据前一次时间段的用气单价进行用气费用结算并由表内预置值中递减扣除,新的时间段累计清零后重新计数。当余值小于设定最小值时,发出报警信号提醒用户购气,此后如最小值低于零时关闭阀门停止供气。程序结束时将所有数据写回E²POM中。
IC卡读写部分首先校对看口令是否正确,如正确后根据卡上的标识字区分用户卡与超级用户卡;如果是用户卡则将购气的预置值读入表内,并与表内原有的剩余值进行正负累计,然后将表内的气体累计流量回写到卡上,以便用户下次购气时与管理系统交换数据。如果是超级用户卡根据其不同功能,如:初始化卡、校时卡、调价卡等,完成相应的读写功能。
4 结束语
目前,国内原来生产机械式煤气表的企业不断地转向IC卡煤气表的生产,但多数为接触式IC卡,本文提出的非接触式IC卡煤气表是采用目前认为成本最低的非接触IC卡系统来实现的,而其它的非接触IC卡,如MIFARE卡等,其读写装置的成本远远高于上述表中所选的E5550卡。因此,选用E5550卡是实现IC卡煤气表非接触化的关键,虽然成本只比用接触式IC卡表增加几十元,但其优点则是很突出的。上述其它部分的软硬件的设计方法实践证明也是很有意义的。