<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 遠程抄表系統數據采集和轉發(fā)的設計方案

遠程抄表系統數據采集和轉發(fā)的設計方案

作者: 時(shí)間:2012-03-03 來(lái)源:網(wǎng)絡(luò ) 收藏

程序說(shuō)明

是將電表轉盤(pán)每轉一圈轉化為一個(gè)周期電脈沖,單片機將此脈沖累加,從而測得電表消費度數。為了避免停電時(shí)造成計數丟失,造成電力公司損失,每計0.1度電時(shí)便將累計數據保存于24C02中;根據電度表量程,保存電表計數數據占用3個(gè)字節,前2個(gè)字節保存整數部分,后1個(gè)保存小數部分。同時(shí)考慮到24C02擦寫(xiě)壽命,在24C02中開(kāi)辟240字節專(zhuān)門(mén)用于存儲電表技術(shù)以輪回寫(xiě)入,防止將數據頻繁寫(xiě)入固定地址而造成損壞。單片機采用定時(shí)計數器中斷進(jìn)行,以3000r/KWH為例,每轉300圈(0.1度)采樣一次并保存,程序如下:

void count0() interrupt 1 using 2

{

//工作在16位計數定模式,每計數300個(gè)脈沖中斷一次,晶振使用12Mhz

tl0=0xD4;

th0=0xFE;

DOTCOUNT++;// 記錄小數點(diǎn)后的數據,無(wú)符號字符型

if(DOTCOUNT>=10){

COUNT++; //記錄整數部分,無(wú)符號整型

DOTCOUNT=0;

}

Write24C02(COUNT, DOTCOUNT,2);//2-表示保存數據為電表度數(1-用電高峰時(shí)間段設置)

//在此自程序中完成不同時(shí)間段(不同計價(jià))分類(lèi)存儲。

}

CAN總線(xiàn)數據收發(fā)程序說(shuō)明

數據采集器數據傳輸內容較為簡(jiǎn)單,發(fā)送出去的數據主要包括電表度數(占5個(gè)字節),接收到的數據多為命令(1-4個(gè)字節),而CAN總線(xiàn)每次數據可傳輸8個(gè)字節,因此每數據傳輸采用1幀即可完成。本采用PeliCAN工作模式(29位表示碼),利用查詢(xún)方式發(fā)送數據,利用外部中斷0接收數據。

數據的發(fā)送由CAN控制器根據CAN協(xié)議規范自動(dòng)完成。首先CPU必須將要發(fā)送的數據報文傳送到CAN控制器發(fā)送緩沖器中,并置位命令寄存器中的發(fā)送請求標志,程序流程如圖5所示。


圖5 數據發(fā)送流程圖

數據接收采用外部中斷0接收,CAN控制器接收到一幀數據后,產(chǎn)生中斷觸發(fā)信號,CPU立即響應,將收到的報文接收到字節的接收緩沖器,并置位命令寄存器的釋放緩沖區標志RRB。單片機根據接收數據進(jìn)行命令解析,并做出相應執行。部分程序代碼如下:

void INT0( ) interrupt 0 using 1

{

BYTE Length; // CAN 數據長(cháng)度代碼

BYTE i; //下標

bit FF //0 :標準 CAN幀 1:擴展幀

CANDR=RBF; //地址指向SJA1000接收緩沖區

ReceiveMessage[0]=CANDAT; // 讀取并保存你幀報文字節

FF=ReceiveMessage[0]0x80;

//取出幀格式

Length=ReceiveMessage[0]0x0F;

//取出報文長(cháng)度

if(Length>0x08) Length=0x08;

ReceiveMessage[1]= CANDAT; //保存報文標識碼1

ReceiveMessage[2]= CANDAT; //保存報文標識碼2

if(FF){

ReceiveMessage[1]= CANDAT; //保存報文標識碼3

ReceiveMessage[2]= CANDAT; //保存報文標識碼4

}

For(i=0;i Length;i++) ReceiveMessage[i+3]= CANDAT; //保存幀數據

CANCON=0x04 // 釋放接收緩沖區

}

數據集中器

數據收集器主要起到后臺管理服務(wù)器和各節點(diǎn)間的數據傳輸功能,如圖6所示。CAN總線(xiàn)控制器模塊主要用來(lái)向各節點(diǎn)發(fā)送或接收相關(guān)數據,各節點(diǎn)地址通過(guò)程序設置均已被包括在對應報文29位表示碼中,數據集中器可以通過(guò)廣播或點(diǎn)對點(diǎn)向各用戶(hù)節點(diǎn)發(fā)送命令數據。由于用戶(hù)節點(diǎn)比較多,數據集中上傳比較多,因此需要較多的數據接收緩沖區保存,然后通過(guò)GSM給后臺管理服務(wù)器完成數據交流,因此采用有512字節內存的單片機STC89C51對CAN控制器和GSM模塊進(jìn)行控制。單片機控制GSM模塊在Text模式下接收手機短信,短信的收發(fā)是通過(guò)向串口以文本模式發(fā)送AT指令來(lái)實(shí)現的,其編碼轉換格式簡(jiǎn)單,并有較高的轉換速率。


圖6 數據集中器示意圖

結束語(yǔ)

本文主要以電能表為例介紹了抄表數據采集和,在此基礎上只要稍加修改就可開(kāi)發(fā)出不同抄表,如預付費電表、燃氣抄表系統、遠程水表抄表系統等。

本文引用地址:http://dyxdggzs.com/article/149528.htm

霍爾傳感器相關(guān)文章:霍爾傳感器工作原理


電能表相關(guān)文章:電能表原理
霍爾傳感器相關(guān)文章:霍爾傳感器原理

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>