图2ESAM内部文件结构图
Fig.2InternalfilestructureofESAM
其中EF3、EF4存放有各时段分时费率,两套费率切换时间在EF2中设置,EF1中存放有两个关键数据:剩余金额和购电次数,它们是电能表实现费控的核心文件。
3.2ESAM的安全性及其实现机制
根据数据安全要求不同,电能表与外界的数据交换是以APDU(应用数据协议单元)的形式进行的,可以采用以下四种模式:明文、密文、明文加校验或密文加校验模式。对数据的加密可以保证数据的可靠性,而数据完整性和对发送方的认证通过使用校验码来实现。加密模式就是将要传送的报文数据加密变换后再传输;校验模式就是对要传送的报文数据使用一个算法进行加密得到一个4字节的校验码MAC,打包到要传送的数据中一起传输,接收方收到数据后根据MAC对数据进行判别;而加密校验模式兼取二者之长。
ESAM中的加解密采用的是国密SM1算法,加密过程中使用的随机数由内置的真随机数发生器产生,ESAM的真随机数发生器利用内部的电磁白噪声产生随机数,消除了伪随机数因周期性而被预测的可能,从而保证了加密过程的安全性。
3.3底层通讯
MCU与ESAM及CPU卡的数据交换中采用数据串形式,数据在CPU卡和MCU之间以及ESAM与MCU之间都是以异步半双工方式进行双向传输。MCU向CPU卡和ESAM提供一个用作数据交换的时序控制时钟信号。在异步半双工通讯协议中主要定义了终端为实现传输控制和特殊控制需要发出的命令及这些命令的处理流程。ISO/IEC7816-3协议中定义了T=0协议(字符传输协议)和T=1协议(块传输协议),鉴于通用性,实践中一般采用T=0协议。下面是MCU向卡或ESAM发送APDU(应用协议数据单元)的代码:
charNEC_SendApdu(byte*buf,byteoffset,byterlen,bytecard_esam)
{
unsignedchari;
for(i=offset;i
NEC_SendSingleByte(buf[i],card_esam);
returnERR_NO;
}
其中:buf作为要发送的命令数据的缓存;offset为要发送命令数据的起始偏移量;len为要发送数据的长度;card_esam为发送方向选择。
3.4身份认证
身份认证包括内部认证和外部认证,内部认证是CPU卡利用自身存储的密钥对接口设备发来的随机数做加密计算产生认证数据,并将该认证数据送回接口设备,以实现接口设备对卡片的合法性的认证。外部认证是接口设备对从CPU卡获得的随机数进行加密计算产生认证数据,并将该数据发给CPU卡,以实现CPU卡对接口设备合法性的认证。这是CPU卡的重要安全机制,而此认证需要电表能够能够产生随机数和加密算法,目前的电表内部并不具备此功能,所以在电表中嵌入一块ESAM就能满足要求,充分发挥智能CPU卡的安全优势,在MCU的控制下,完成电表对CPU卡的安全认证,从而允许CPU卡对电能表的操作。图3给出了系统的身份认证流程:

图3系统身份认证流程
Fig.3Systemauthenticationprocess
3.5参数设置
电表中需要设置的参数包括电卡类型、客户编号、表号、用户类型、两个报警金额、电压互感器变比、电流互感器变比以及两套分时费率切换时间。存放于CPU卡片的参数信息文件中,用电管理部门通过现场参数预置卡和参数预置卡对参数进行设置,另外用电管理部门为电能表用户发行一张用户卡,用户将此卡插入电能表中,将对电能表的客户编号和用户类型等信息进行设置。
3.6充值
电能表在投入运行时,会有一定的预置金额,用户初次将用户卡插入电能表时,表上预置的电费金额将从购电金额中扣除,并将卡上的相关参数信息设置到电能表,完成之后用户卡自动从开户卡转为购电卡,以后使用此卡到售电点或指定银行网点进行充值后再次插入电能表中,即可完成购电操作。每次购电前后卡上购电次数自动加一。
3.7扣款
ESAM是与电表一同运行的,扣款主要发生在ESAM与MCU之间,考虑到电能表寿命以及ESAM模块写次数限制,电能表更新ESAM内钱包文件的间隔时间不能小于15分钟。扣款方式为,MCU计算本间隔时间所用电量与本时段费率的乘积,即为该间隔时段的用电电费,读取ESAM中的电费余额,减去本时段的电费之后,写回ESAM中,若余额不足将产生声光报警信号;此外,在电能表的运行过程中,若出现掉电等异常情况或者在插卡操作时,ESAM立即扣款。
3.8远程控制功能
远程控制可以实现远程拉闸和允许合闸命令,电能表平时处于允许合闸状态,一旦收到远程拉闸命令,必须按照命令要求对电能表进行拉闸。 2/3 首页 上一页 1 2 3 下一页 尾页 |