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

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > ADM2483在建筑能耗檢測系統(tǒng)中的應用

          ADM2483在建筑能耗檢測系統(tǒng)中的應用

          ——
          作者:趙亮 時間:2013-10-25 來源:電子產(chǎn)品世界 收藏

            硬件電路設計

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

            芯片集成度較高,外部幾乎不需要配置阻容元件即可工作,本文設計的硬件電路原理圖如圖2所示。RS485是半雙工通信方式,收發(fā)不能同時,RE和DE分別是接收和發(fā)送控制使能引腳,RE低電平有效,DE高電平有效,通過STM32處理器的一個引腳同時控制RE和DE,如圖2所示,將RE與DE兩個引腳短接,從而實現(xiàn)低電平時接收有效,高電平時發(fā)送有效。RXD和TXD引腳分別接到STM32的串口2發(fā)送和接收端。采用電源芯片B0505S實現(xiàn)雙電源供電。R5為RS485總線的終端匹配電阻,典型值約為120歐,以減少線路上傳輸信號的反射。

            軟件程序設計

            通信協(xié)議

            建筑能耗中能耗的主要目標包括:建筑內(nèi)的耗電量、耗水量、耗熱量等統(tǒng)計量信息,也包括實時電壓、電流、功率等實時參數(shù)的采集。一般采用間接測量的模式,即通過器掛載計量儀表進行測量。目前市場上的大部分計量儀表都支持RS485總線,但是通信協(xié)議不盡相同,常見的有以下幾種:

            (1)Modbus協(xié)議

            Modbus通訊協(xié)議又分為ASCII模式和模式兩種模式,計量儀表多采用通信協(xié)議模式,數(shù)據(jù)幀格式如表2所示[5]。主機發(fā)送的地址碼占1個字節(jié),地址碼尋址從1~247,247以上的地址域為用戶擴展區(qū)。功能碼0x03表示從儀表中讀取數(shù)據(jù)。主機發(fā)送的字節(jié)數(shù)固定為8個字節(jié),從機響應的字節(jié)數(shù),根據(jù)數(shù)據(jù)長度的不同而變化,可以據(jù)此設置接收程序的緩沖區(qū)大小。

            (2)DL/T 645-1997(多功能電表通信規(guī)約)

            DL/T 645-1997的通信幀格式如表3所示,通過識別起始符與結束符判斷一幀數(shù)據(jù)。地址域由6個2位的BCD碼構成,地址域可以表示儀表的地址編碼、資產(chǎn)號、用戶號或者設備號等,低地址位在先,高地址位在后。校驗碼CS計算方法如式所示,N表示校驗碼之前的所有位數(shù)和。

            (3)CJ/T 188-2004(用戶計量儀表通信規(guī)約)

            CJ/T 188-2004的通信幀格式與DL/T 645-1997類似,如表4所示。地址域由7個2位的BCD碼構成,其中,A5,A6固定為廠商代碼,低地址位在先,高地址位在后。校驗碼CS計算方法如式所示。

            模塊的驅動程序可以根據(jù)實際使用的計量儀表協(xié)議進行修改,不同儀表的通信波特率、校驗方式等參數(shù)信息均需要參照數(shù)據(jù)手冊進行設置。

          隔離器相關文章:隔離器原理


          評論


          相關推薦

          技術專區(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); })();