<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于CAN總線的智能電表集中器的設計

          基于CAN總線的智能電表集中器的設計

          作者: 時間:2011-08-08 來源:網(wǎng)絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/150390.htm

            3 器軟件

            器系統(tǒng)采用數(shù)序程序,按功能模塊程序,由主程序調(diào)用各個功能模塊程序?qū)崿F(xiàn)各個相應功能,各個功能模塊通過調(diào)用底層函數(shù)完成相應的操作。具體流程見圖4,啟動后,開始初始化系統(tǒng)。系統(tǒng)進入等待命令模式,如果有上位機操作命令或有定時中斷發(fā)生則進入對時程序,對時如果超出一定時間還未成功則向上位機報警。

           對時成功后,器繼續(xù)等待上位機的讀數(shù)命令或等待中斷讀數(shù)命令。當收到讀數(shù)的命令后,定時讀數(shù)使集中器按設置的時間,自動讀取表頭采集來的數(shù)據(jù);讀數(shù)使集中器讀取當前表頭的數(shù)據(jù)。

          圖4系統(tǒng)軟件流程圖

          圖4系統(tǒng)軟件流程圖

            集中器通過可以掛載最多100個表頭,集中器發(fā)出設備的ID。每個分系統(tǒng)表接收到對應的ID號后,根據(jù)系統(tǒng)發(fā)出的讀表頭命令來反饋數(shù)據(jù)。如果通訊有故障,CAN控制器通訊將報故障。如系統(tǒng)回路正常,集中器的發(fā)送命令數(shù)據(jù)包。每幀CAN數(shù)據(jù)包含8字節(jié),因為每次讀數(shù)的數(shù)據(jù)流量不是很大,所以每次通訊只需要使用一幀CAN數(shù)據(jù)即可,表頭ID使用幀ID來識別,每個表頭對應獨立的幀ID。

            集中器發(fā)送CAN數(shù)據(jù)命令包到CAN,表頭根據(jù)各自的ID選擇接收讀表命令后發(fā)送應答數(shù)據(jù)到CAN總線上。

            集中器將接收到的應答數(shù)據(jù)提取出讀數(shù)存儲在flash中。CAN數(shù)據(jù)收發(fā)工作流程如圖5所示。

          圖5數(shù)據(jù)收發(fā)流程圖

          圖5數(shù)據(jù)收發(fā)流程圖

            4 結束語

            集中器是遠程抄表管理系統(tǒng)的重要組成部分,集中器工作的穩(wěn)定性直接影響到了整個系統(tǒng)的效率。

            本文給出了一種CAN集中器的詳細設計,分析了主要外圍接口電路,根據(jù)CAN總線的數(shù)據(jù)幀格式對收發(fā)數(shù)據(jù)流程進行了介紹。本設計作為抄表系統(tǒng)的一部分,目前成功應用于某些遠程抄表系統(tǒng)中,由于成本適中、性能穩(wěn)定,取得了較好的經(jīng)濟效益,具有很好的推廣前景,同時經(jīng)過簡單的修改就可以開發(fā)出其他的遠程抄表系統(tǒng),如燃氣遠程抄表系統(tǒng)等。

           摘要:介紹了電表集中器的原理,分析了相關的硬件電路,設計了具體的軟件的控制流程。該集中器具有獨立存儲空間、實時性強、穩(wěn)定性高等優(yōu)點,在具體的應用中取得較好的效果。

            0 引言

            目前,我國城市居民用戶的電表、水表、天然氣表很多是人工抄表,由抄表工作人員每月逐個查抄各種儀表,也有很多地區(qū)已經(jīng)通過抄表改造工程實現(xiàn)了集中抄表。

            通過集中抄表系統(tǒng)節(jié)約了大量的人力、物力,而且采抄數(shù)據(jù)的周期縮短,準確度提高。隨著中國城市化的發(fā)展,這種改造工程正在全面展開。由于目前已經(jīng)使用的遠程抄表還面臨一些挑戰(zhàn):比如初期成本較高,同時總線上傳輸?shù)臄?shù)據(jù)是終端用戶所消費的水、電、氣等重要數(shù)據(jù),對總線的抗干擾性要求非常高,要具有抵抗容性、感性的偶合干擾的能力,為節(jié)約成本,要采用遠程供電的方式給從設備提供電源,以盡可能減少元器件的使用。

            為了解決以上問題,本文設計了一種CAN總線的遠程電表抄表系統(tǒng)集中器。CAN總線的智能電表系統(tǒng)具有造價較低,可靠性高,組網(wǎng)簡單,管理方便,操作簡捷等優(yōu)點,并且可以通過擴展和升級硬件,利用有線網(wǎng)絡或無線網(wǎng)絡通信,把集中器采集到的實時數(shù)據(jù)發(fā)送到售電公司的管理系統(tǒng)中統(tǒng)一管理,通過應用線損分析、遠程通斷電、防竊電分析等功能達到更高的智能化。

            1 集中器的功能及原理分析

            一般的智能電表系統(tǒng)由四部分組成:表頭,集中器,通訊器,上位機系統(tǒng)。具體如圖1所示,其工作原理是通過一體化載波表或安裝在電表表尾的電力計量傳感系統(tǒng)模塊經(jīng)CAN總線組網(wǎng),集中器按設定好的時間段接收數(shù)據(jù)并保存到內(nèi)部flash中,當上位機發(fā)來讀數(shù)據(jù)的信號后上位機通過RS232或RS485讀數(shù),讀到的數(shù)據(jù)通過網(wǎng)絡傳送到用電管理中心。

            在遠程抄表表系統(tǒng)中,集中器是一個重要組成部分。

            集中器通過CAN總線控制并讀取表頭的數(shù)據(jù),數(shù)據(jù)存儲在集中器的flash中。集中器執(zhí)行從上位機發(fā)送的控制命令:

            對時、讀flash、讀表數(shù)、限電、增加表頭地址等。

            集中器通過CAN控制器發(fā)送讀表命令信號到總線上,每個表頭根據(jù)讀表命令將采集的信號通過CAN總線發(fā)送到集中器。集中器將采集的信號存儲在flash芯片中。上位機通過串口發(fā)送讀數(shù)據(jù)信號到集中器,集中器就把存儲在flash中的數(shù)據(jù)傳送給上位機。

            2 集中器硬件設計

            主控芯片采用的是ST公司的STM32系列的STM32F103Tx,該系列單片機是ARM的CortexTM-M3處理器是最新一代的嵌入式ARM處理器,它為實現(xiàn)MCU的需要提供了低成本的平臺、縮減的引腳數(shù)目、降低的系統(tǒng)功耗,同時提供卓越的計算性能和先進的中斷系統(tǒng)響應。具有運行速度快(系統(tǒng)時鐘頻率最高可達72MHz)26個復用GPIO;64KB片上RAM;2個12位模數(shù)轉(zhuǎn)換器,1μs轉(zhuǎn)換時間(多達16個輸入通道);3個SPI,5個USARTs,2個IIC接口;片上256KBFLASH;2個看門狗,11個定時器;芯片具有獨立的實時時鐘,能夠相關資料豐富,提供單片機使用庫函數(shù),用C語言編程十分方便,易于開發(fā)。

            由于智能電表控制器需要很準確的實時性,以方便售電公司收取用電費用。因為主控芯片自帶實時時鐘,所以只需要外接獨立的32.768kHz的晶體。實時時鐘既可以通過寄存器設置年月日及具體時間,同時還有鬧鐘功能,定時中斷進行指定操作。

            智能電表集中器的硬件部分結構如圖1所示,主要有ARM,F(xiàn)lash,時鐘芯片,接口電路,RS232,RS485,電源等組成。ARM作為控制芯片,有標準設計;ARM接口電路比較簡單,以下重點討論CAN總線接口和Flash接口設計。

          圖1智能電表抄表系統(tǒng)結構框圖

          圖1智能電表抄表系統(tǒng)結構框圖



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();