資深工程師解密電表研發(fā):一場(chǎng)牽一發(fā)而動(dòng)全身的修行
電能表,于普通人而言,是每個(gè)月一次的繳費(fèi)數(shù)字;于初入行的人而言,是幾個(gè)元器件、零部件的組合;而對(duì)于資深的電表工程師而言,這則是一場(chǎng)牽一發(fā)而動(dòng)全身的修行。一款電表的研發(fā)過程中,除了對(duì)技術(shù)人員本身的技術(shù)經(jīng)驗(yàn)累積要求高外,還需要傾注更多的恒心和毅力。本文將以ADE7755芯片設(shè)計(jì)單相復(fù)費(fèi)率電能表為例,為讀者揭開電表研發(fā)的神秘面紗。
本文引用地址:http://cafeforensic.com/article/201610/307802.htm當(dāng)企業(yè)決定研發(fā)一款新電表,拿到一份客戶的技術(shù)規(guī)格書的時(shí)候,第一步是做什么呢?是找方案公司設(shè)計(jì)方案?找供應(yīng)商選器件?這些都不是。這里需要重點(diǎn)說明的一點(diǎn)是,沒有哪一個(gè)大的廠商會(huì)愿意完全投入經(jīng)歷去研發(fā)一款全新的表型,全新產(chǎn)品不僅研發(fā)周期長(zhǎng),人員精力投入大,投資成本高,而且風(fēng)險(xiǎn)很大。企業(yè)的利益趨向決定了它們不會(huì)做這種高投資高風(fēng)險(xiǎn)的事情。一切的產(chǎn)品研發(fā)都是基于現(xiàn)有產(chǎn)品,在現(xiàn)有產(chǎn)品上做改動(dòng)。所以,當(dāng)工程師拿到一分新產(chǎn)品的技術(shù)規(guī)格書的時(shí)候,第一步要做的是仔細(xì)地閱讀規(guī)格書的每一條功能要求,并且與現(xiàn)有的產(chǎn)品做比較,找出與新產(chǎn)品最相似的產(chǎn)品——即最適合進(jìn)行改造的現(xiàn)有表型,下一步即是根據(jù)每一條不同的功能要求制定改進(jìn)初步方案。了解改進(jìn)中硬件需要做什么,軟件需要做什么,哪些元器件需要替代更換。下一步則是針對(duì)需要更換的元器件尋找供應(yīng)商,上板編程調(diào)試。
為讀者大家更詳細(xì)的了解電表的研發(fā)流程,以下將以單相復(fù)費(fèi)率電能表為例來詳細(xì)闡述電表的設(shè)計(jì)方法、硬件設(shè)計(jì)的技術(shù)關(guān)鍵和軟件設(shè)計(jì)流程。
電能表的硬件電路設(shè)計(jì)
電能表的硬件電路設(shè)計(jì)由電源電路設(shè)計(jì)、計(jì)量電路設(shè)計(jì)、通訊電路設(shè)計(jì)、MCU及其它部分電路設(shè)計(jì)四大部分組成。
主要功能模塊
MCU主控制器也即是我們常常說的電表的CPU,主要負(fù)責(zé)按鍵輸入掃描、工作狀態(tài)檢測(cè)、計(jì)量數(shù)據(jù)的讀入、計(jì)算和存儲(chǔ)、電表參數(shù)的現(xiàn)場(chǎng)配置以及與外界的通信控制等。,一般來說,在新產(chǎn)品的設(shè)計(jì)中,MCU是不會(huì)換的;凡是涉及到更換MCU的新品研發(fā),必將是更加的費(fèi)時(shí)費(fèi)力。所以,電表廠商對(duì)于MCU的選用都是非常慎重和穩(wěn)定的,不會(huì)輕易更換品牌和供應(yīng)商。當(dāng)然,為了規(guī)避缺貨等風(fēng)險(xiǎn),以及保持一定的價(jià)格競(jìng)爭(zhēng),對(duì)大廠而言,通常的做法是不會(huì)讓一家供應(yīng)商獨(dú)領(lǐng)風(fēng)騷,2-3家分?jǐn)偹挟a(chǎn)線的元器件供貨是比較穩(wěn)妥的做法。電能表MCU的主流供應(yīng)商有TI、Freescale、ST、NXP等。
計(jì)量電路的設(shè)計(jì)是電能表的核心部分,是電能表計(jì)量準(zhǔn)確性的關(guān)鍵部分,也是電能表計(jì)量功能的體現(xiàn),。目前主流的計(jì)量芯片有ADI、ST、CirrusLogic、IDT、TI等。
存儲(chǔ)器件的選擇又會(huì)根據(jù)所要存儲(chǔ)數(shù)據(jù)的類型數(shù)量來決定。如一般的時(shí)間記錄,簡(jiǎn)單功能的電能表,選用EEPROM就足夠,而要實(shí)現(xiàn)復(fù)合曲線的記錄,如按日/小時(shí)/分鐘/秒存儲(chǔ),因存儲(chǔ)的信息量巨大,則需要更大的存儲(chǔ)容量,測(cè)試則需要選用flash,容量越大,軟件設(shè)置也會(huì)越復(fù)雜。
其他主要功能模塊還包括紅外和RS—485通信模塊、校表模塊、時(shí)鐘日歷電路、工作異常報(bào)警電路、按鍵輸入電路、復(fù)位和看門狗電路、開關(guān)電源模塊和后備電池電路、大屏幕液晶顯示模塊和LED顯示模塊。而像RS-485芯片、載波芯片,一般在進(jìn)行新產(chǎn)品設(shè)計(jì)時(shí),是不用替換的。
單相復(fù)費(fèi)率電能表的硬件組成框圖
由上圖所示,電源電路為了提高系統(tǒng)的抗干擾性、可靠性,分為三個(gè)獨(dú)立的電源,使計(jì)量電路,RS485通訊和MCU的電源相互隔離,達(dá)到互不影響的目的,但是它們使用同一個(gè)變壓器,所以應(yīng)注意變壓器的選擇。在計(jì)量電路部分,ADE7755芯片是一個(gè)數(shù)?;旌系碾娐?,因此設(shè)計(jì)較為困難,要到達(dá)良好的計(jì)量效果,要采取一定的抗干擾措施(比如數(shù)字地和模擬地應(yīng)在PCB板上單點(diǎn)連接),特別是在對(duì)電流、電壓采樣的電路直接接在外部線路上,干擾比較嚴(yán)重。I2C總線在整個(gè)系統(tǒng)中占有重要的地位,它關(guān)系到LCD顯示、電量數(shù)據(jù)存儲(chǔ)、時(shí)間和日期的讀取等等,它是MCU與外部設(shè)備的接口,是MCU獲取信息的窗口,并且根據(jù)外部信息作出相應(yīng)的判斷和動(dòng)作(比如凍結(jié)時(shí)間到,MCU作出凍結(jié)電量事件發(fā)生)。在通訊電路中,電能表有兩個(gè)通訊信道(紅外信道、RS485通訊信道),在通訊發(fā)生時(shí)MCU要判斷是那個(gè)信道進(jìn)行通訊,并且接收通訊幀,判斷是否正確,并執(zhí)行通訊命令。從上面可以看出MCU的作用,它是系統(tǒng)的控制器,起著決定性的作用。
單相復(fù)費(fèi)率電能表的軟件設(shè)計(jì)
軟件系統(tǒng)是整個(gè)電能表系統(tǒng)的靈魂,它是系統(tǒng)的神經(jīng)中樞,它是整個(gè)系統(tǒng)的控制、指揮中心。電能表軟件系統(tǒng)的算法設(shè)計(jì)在整個(gè)電能表系統(tǒng)設(shè)計(jì)中占有重要的一個(gè)環(huán)節(jié),控制算法的優(yōu)劣對(duì)整個(gè)系統(tǒng)正確、可靠的運(yùn)行有決定性的影響,因此在進(jìn)行電能表軟件系統(tǒng)的算法設(shè)計(jì)時(shí),要仔細(xì)、反復(fù)地進(jìn)行設(shè)計(jì)、論證,考慮各個(gè)方面地因素,使控制算法正確、可靠。
軟件系統(tǒng)包括程序數(shù)據(jù)結(jié)構(gòu)模塊、程序初始化模塊、時(shí)鐘及顯示處理模塊、通訊處理模塊和電量處理模塊五大部分組成,各個(gè)部分都其特殊的任務(wù),在電表系統(tǒng)中完成它們相應(yīng)的功能。
程序數(shù)據(jù)結(jié)構(gòu)模塊是對(duì)程序中的數(shù)據(jù)進(jìn)行分析,合理的分配數(shù)據(jù)內(nèi)存,定義程序涉及的變量。它是根據(jù)整個(gè)程序的算法來制定的,同時(shí)一個(gè)好的數(shù)據(jù)結(jié)構(gòu)對(duì)整個(gè)程序的寫作有非常重要的作用,因此根據(jù)電能表軟件系列實(shí)現(xiàn)的功能及其算法制定合理的數(shù)據(jù)結(jié)構(gòu)。DDSF系列電能表的數(shù)據(jù)結(jié)構(gòu)包括兩個(gè)部分:MCU內(nèi)存數(shù)據(jù)結(jié)構(gòu)和EEPROM數(shù)據(jù)結(jié)構(gòu)。
程序初始化模塊是對(duì)整個(gè)程序進(jìn)行初始化,它包括兩個(gè)部分:MCU初始化和電表各部件初始化。MCU初始化是對(duì)MCU各部件進(jìn)行初始化,為各部件在程序工作時(shí)提供合適的初始狀態(tài),它包括配置I/O口工作模式、看門狗初始化、定時(shí)器初始化、鍵盤中斷初始化、串口中斷初始化、比較器中斷初始化等等。電表各部件初始化是對(duì)電能表系統(tǒng)各部件進(jìn)行配置工作狀態(tài),初始化它們的工作方式,為程序工作提供電表部件初始狀態(tài),它包括指示燈初始化、LCD顯示初始化、實(shí)時(shí)時(shí)鐘初始化、電量恢復(fù)、通訊信道、歷史電量處理等等部件的初始化。
時(shí)鐘、顯示處理模塊是程序系統(tǒng)中進(jìn)行時(shí)鐘和顯示處理的模塊,是通過對(duì)當(dāng)前時(shí)鐘的比較,對(duì)有關(guān)時(shí)鐘事件是否發(fā)生進(jìn)行判斷,程序?qū)r(shí)鐘事件作出處理,可以說時(shí)鐘就是這個(gè)程序模塊的節(jié)奏,告訴程序哪個(gè)事件在什么時(shí)候發(fā)生。比如說顯示數(shù)據(jù)刷新事件,它是1S的時(shí)間對(duì)顯示數(shù)據(jù)進(jìn)行刷新,當(dāng)時(shí)間間隔1S時(shí),顯示數(shù)據(jù)刷新事件發(fā)生,程序進(jìn)行顯示數(shù)據(jù)刷新處理。它包括時(shí)鐘及其相關(guān)處理、顯示事件處理、電能反向時(shí)間事件處理、費(fèi)率和電量結(jié)算事件處理等等部分組成的。
通訊處理模塊是電能表系統(tǒng)進(jìn)行外界通訊的模塊,它是依照國標(biāo)的通訊規(guī)程編寫的一個(gè)軟件模塊,它包括通訊接收處理、通訊命令處理及通訊發(fā)送處理,當(dāng)通訊接收到一幀正確的數(shù)據(jù)時(shí),通知程序通訊命令處理事件發(fā)生,執(zhí)行通訊命令解釋及執(zhí)行命令操作,當(dāng)命令要求發(fā)生通訊數(shù)據(jù)時(shí),通訊發(fā)送事件發(fā)送,
進(jìn)行通訊數(shù)據(jù)發(fā)送。同時(shí)由于通訊信道有紅外信道和RS485信道兩個(gè)信道,在通訊時(shí)應(yīng)判斷是哪一個(gè)信道進(jìn)行通訊的。
電量處理模塊是電能表系統(tǒng)中實(shí)現(xiàn)電能計(jì)量的程序,是實(shí)現(xiàn)其基本功能的程序,這部分程序也是電能表軟件系統(tǒng)中最為關(guān)鍵的程序,其計(jì)量的正確性,可靠性及電量數(shù)據(jù)儲(chǔ)存的正確性是關(guān)乎到整個(gè)系統(tǒng)的成敗,關(guān)系到全局,因此這部分計(jì)量的算法要設(shè)計(jì)正確、合理。它包括MCU上電對(duì)各電量值的恢復(fù)、對(duì)各電量脈沖的累計(jì)、對(duì)各電量小數(shù)整數(shù)累計(jì)、及對(duì)電量掉電保護(hù)等程序,在電量脈沖累計(jì)一定值是,電量小數(shù)加1事件發(fā)生,當(dāng)電量小數(shù)累計(jì)一定值時(shí),電量整數(shù)加1事件發(fā)生,執(zhí)行電量整數(shù)累計(jì)程序。
電能表的軟件系統(tǒng)是由五大部分組成的,每一個(gè)部分完成其特定的任務(wù),而且是缺一不可的,同時(shí)各個(gè)模塊之間存在著一定的聯(lián)系,存在著數(shù)據(jù)交換的可能,它們不是相互獨(dú)立的,而是相互聯(lián)系、統(tǒng)一,形成整個(gè)電能表軟件系統(tǒng)。
一場(chǎng)牽一發(fā)而動(dòng)全身的修行
在新產(chǎn)品的研發(fā)中,硬件和軟件設(shè)計(jì)兩大部分中,任何一個(gè)元器件的更換,一條代碼的修改都是牽一發(fā)而動(dòng)全身的操作,會(huì)涉及到一系列的硬件電路的改動(dòng)、測(cè)試,一整套的流程操作全部要變動(dòng),“哪怕是一點(diǎn)點(diǎn)的變動(dòng),所有的工作都得要全部重新開始。”常聽電表工程師這樣抱怨道。電表產(chǎn)品的研發(fā)特點(diǎn)決定了研發(fā)人員不僅需要豐富的技術(shù)知識(shí)和經(jīng)驗(yàn),更需要執(zhí)著的耐心和毅力,才能在把自己逼瘋掉之前做出合格的產(chǎn)品。
你,是否也正進(jìn)行著這樣一場(chǎng)修行呢?
評(píng)論