资深工程师解密电表研发:一场牵一发而动全身的修行
扫描二维码
随时随地手机看文章
电能表,于普通人而言,是每个月一次的缴费数字;于初入行的人而言,是几个元器件、零部件的组合;而对于资深的电表工程师而言,这则是一场牵一发而动全身的修行。一款电表的研发过程中,除了对技术人员本身的技术经验累积要求高外,还需要倾注更多的恒心和毅力。本文将以ADE7755芯片设计单相复费率电能表为例,为读者揭开电表研发的神秘面纱。
当企业决定研发一款新电表,拿到一份客户的技术规格书的时候,第一步是做什么呢?是找方案公司设计方案?找供应商选器件?这些都不是。这里需要重点说明的一点是,没有哪一个大的厂商会愿意完全投入经历去研发一款全新的表型,全新产品不仅研发周期长,人员精力投入大,投资成本高,而且风险很大。企业的利益趋向决定了它们不会做这种高投资高风险的事情。一切的产品研发都是基于现有产品,在现有产品上做改动。所以,当工程师拿到一分新产品的技术规格书的时候,第一步要做的是仔细地阅读规格书的每一条功能要求,并且与现有的产品做比较,找出与新产品最相似的产品——即最适合进行改造的现有表型,下一步即是根据每一条不同的功能要求制定改进初步方案。了解改进中硬件需要做什么,软件需要做什么,哪些元器件需要替代更换。下一步则是针对需要更换的元器件寻找供应商,上板编程调试。
为读者大家更详细的了解电表的研发流程,以下将以单相复费率电能表为例来详细阐述电表的设计方法、硬件设计的技术关键和软件设计流程。
电能表的硬件电路设计
电能表的硬件电路设计由电源电路设计、计量电路设计、通讯电路设计、MCU及其它部分电路设计四大部分组成。
主要功能模块
MCU主控制器也即是我们常常说的电表的CPU,主要负责按键输入扫描、工作状态检测、计量数据的读入、计算和存储、电表参数的现场配置以及与外界的通信控制等。,一般来说,在新产品的设计中,MCU是不会换的;凡是涉及到更换MCU的新品研发,必将是更加的费时费力。所以,电表厂商对于MCU的选用都是非常慎重和稳定的,不会轻易更换品牌和供应商。当然,为了规避缺货等风险,以及保持一定的价格竞争,对大厂而言,通常的做法是不会让一家供应商独领风骚,2-3家分摊所有产线的元器件供货是比较稳妥的做法。电能表MCU的主流供应商有TI、Freescale、ST、NXP等。
计量电路的设计是电能表的核心部分,是电能表计量准确性的关键部分,也是电能表计量功能的体现,。目前主流的计量芯片有ADI、ST、CirrusLogic、IDT、TI等。
存储器件的选择又会根据所要存储数据的类型数量来决定。如一般的时间记录,简单功能的电能表,选用EEPROM就足够,而要实现复合曲线的记录,如按日/小时/分钟/秒存储,因存储的信息量巨大,则需要更大的存储容量,测试则需要选用flash,容量越大,软件设置也会越复杂。
其他主要功能模块还包括红外和RS—485通信模块、校表模块、时钟日历电路、工作异常报警电路、按键输入电路、复位和看门狗电路、开关电源模块和后备电池电路、大屏幕液晶显示模块和LED显示模块。而像RS-485芯片、载波芯片,一般在进行新产品设计时,是不用替换的。
单相复费率电能表的硬件组成框图
由上图所示,电源电路为了提高系统的抗干扰性、可靠性,分为三个独立的电源,使计量电路,RS485通讯和MCU的电源相互隔离,达到互不影响的目的,但是它们使用同一个变压器,所以应注意变压器的选择。在计量电路部分,ADE7755芯片是一个数模混合的电路,因此设计较为困难,要到达良好的计量效果,要采取一定的抗干扰措施(比如数字地和模拟地应在PCB板上单点连接),特别是在对电流、电压采样的电路直接接在外部线路上,干扰比较严重。I2C总线在整个系统中占有重要的地位,它关系到LCD显示、电量数据存储、时间和日期的读取等等,它是MCU与外部设备的接口,是MCU获取信息的窗口,并且根据外部信息作出相应的判断和动作(比如冻结时间到,MCU作出冻结电量事件发生)。在通讯电路中,电能表有两个通讯信道(红外信道、RS485通讯信道),在通讯发生时MCU要判断是那个信道进行通讯,并且接收通讯帧,判断是否正确,并执行通讯命令。从上面可以看出MCU的作用,它是系统的控制器,起着决定性的作用。
单相复费率电能表的软件设计
软件系统是整个电能表系统的灵魂,它是系统的神经中枢,它是整个系统的控制、指挥中心。电能表软件系统的算法设计在整个电能表系统设计中占有重要的一个环节,控制算法的优劣对整个系统正确、可靠的运行有决定性的影响,因此在进行电能表软件系统的算法设计时,要仔细、反复地进行设计、论证,考虑各个方面地因素,使控制算法正确、可靠。
软件系统包括程序数据结构模块、程序初始化模块、时钟及显示处理模块、通讯处理模块和电量处理模块五大部分组成,各个部分都其特殊的任务,在电表系统中完成它们相应的功能。
程序数据结构模块是对程序中的数据进行分析,合理的分配数据内存,定义程序涉及的变量。它是根据整个程序的算法来制定的,同时一个好的数据结构对整个程序的写作有非常重要的作用,因此根据电能表软件系列实现的功能及其算法制定合理的数据结构。DDSF系列电能表的数据结构包括两个部分:MCU内存数据结构和EEPROM数据结构。
程序初始化模块是对整个程序进行初始化,它包括两个部分:MCU初始化和电表各部件初始化。MCU初始化是对MCU各部件进行初始化,为各部件在程序工作时提供合适的初始状态,它包括配置I/O口工作模式、看门狗初始化、定时器初始化、键盘中断初始化、串口中断初始化、比较器中断初始化等等。电表各部件初始化是对电能表系统各部件进行配置工作状态,初始化它们的工作方式,为程序工作提供电表部件初始状态,它包括指示灯初始化、LCD显示初始化、实时时钟初始化、电量恢复、通讯信道、历史电量处理等等部件的初始化。
时钟、显示处理模块是程序系统中进行时钟和显示处理的模块,是通过对当前时钟的比较,对有关时钟事件是否发生进行判断,程序对时钟事件作出处理,可以说时钟就是这个程序模块的节奏,告诉程序哪个事件在什么时候发生。比如说显示数据刷新事件,它是1S的时间对显示数据进行刷新,当时间间隔1S时,显示数据刷新事件发生,程序进行显示数据刷新处理。它包括时钟及其相关处理、显示事件处理、电能反向时间事件处理、费率和电量结算事件处理等等部分组成的。
通讯处理模块是电能表系统进行外界通讯的模块,它是依照国标的通讯规程编写的一个软件模块,它包括通讯接收处理、通讯命令处理及通讯发送处理,当通讯接收到一帧正确的数据时,通知程序通讯命令处理事件发生,执行通讯命令解释及执行命令操作,当命令要求发生通讯数据时,通讯发送事件发送,
进行通讯数据发送。同时由于通讯信道有红外信道和RS485信道两个信道,在通讯时应判断是哪一个信道进行通讯的。
电量处理模块是电能表系统中实现电能计量的程序,是实现其基本功能的程序,这部分程序也是电能表软件系统中最为关键的程序,其计量的正确性,可靠性及电量数据储存的正确性是关乎到整个系统的成败,关系到全局,因此这部分计量的算法要设计正确、合理。它包括MCU上电对各电量值的恢复、对各电量脉冲的累计、对各电量小数整数累计、及对电量掉电保护等程序,在电量脉冲累计一定值是,电量小数加1事件发生,当电量小数累计一定值时,电量整数加1事件发生,执行电量整数累计程序。
电能表的软件系统是由五大部分组成的,每一个部分完成其特定的任务,而且是缺一不可的,同时各个模块之间存在着一定的联系,存在着数据交换的可能,它们不是相互独立的,而是相互联系、统一,形成整个电能表软件系统。
一场牵一发而动全身的修行
在新产品的研发中,硬件和软件设计两大部分中,任何一个元器件的更换,一条代码的修改都是牵一发而动全身的操作,会涉及到一系列的硬件电路的改动、测试,一整套的流程操作全部要变动,“哪怕是一点点的变动,所有的工作都得要全部重新开始。”常听电表工程师这样抱怨道。电表产品的研发特点决定了研发人员不仅需要丰富的技术知识和经验,更需要执着的耐心和毅力,才能在把自己逼疯掉之前做出合格的产品。
你,是否也正进行着这样一场修行呢?