3 集中器軟件設(shè)計
集中器系統(tǒng)采用數(shù)序程序設(shè)計,按功能模塊設(shè)計程序,由主程序調(diào)用各個功能模塊程序?qū)崿F(xiàn)各個相應(yīng)功能,各個功能模塊通過調(diào)用底層函數(shù)完成相應(yīng)的操作。具體流程見圖4,啟動后,開始初始化系統(tǒng)。系統(tǒng)進(jìn)入等待命令模式,如果有上位機(jī)操作命令或有定時中斷發(fā)生則進(jìn)入對時程序,對時如果超出一定時間還未成功則向上位機(jī)報警。
對時成功后,集中器繼續(xù)等待上位機(jī)的讀數(shù)命令或等待中斷讀數(shù)命令。當(dāng)收到讀數(shù)的命令后,定時讀數(shù)使集中器按設(shè)置的時間,自動讀取表頭采集來的數(shù)據(jù);讀數(shù)使集中器讀取當(dāng)前表頭的數(shù)據(jù)。
圖4系統(tǒng)軟件流程圖
集中器通過CAN總線可以掛載多100個表頭,集中器發(fā)出CAN總線設(shè)備的ID。每個分系統(tǒng)表接收到對應(yīng)的ID號后,根據(jù)系統(tǒng)發(fā)出的讀表頭命令來反饋數(shù)據(jù)。如果CAN通訊有故障,CAN控制器通訊將報故障。如系統(tǒng)回路正常,集中器的發(fā)送命令數(shù)據(jù)包。每幀CAN數(shù)據(jù)包含8字節(jié),因為每次讀數(shù)的數(shù)據(jù)流量不是很大,所以每次通訊只需要使用一幀CAN數(shù)據(jù)即可,表頭ID使用幀ID來識別,每個表頭對應(yīng)獨(dú)立的幀ID。
集中器發(fā)送CAN數(shù)據(jù)命令包到CAN總線,表頭根據(jù)各自的ID選擇接收讀表命令后發(fā)送應(yīng)答數(shù)據(jù)到CAN總線上。
集中器將接收到的應(yīng)答數(shù)據(jù)提取出電表讀數(shù)存儲在flash中。CAN數(shù)據(jù)收發(fā)工作流程如圖5所示。
圖5數(shù)據(jù)收發(fā)流程圖
4 結(jié)束語
本設(shè)計作為智能電表抄表系統(tǒng)的一部分,目前成功應(yīng)用于某些遠(yuǎn)程抄表系統(tǒng)中,由于成本適中、性能穩(wěn)定,取得了較好的經(jīng)濟(jì)效益,具有很好的推廣前景,同時經(jīng)過簡單的修改就可以開發(fā)出其他的遠(yuǎn)程抄表系統(tǒng),如燃?xì)膺h(yuǎn)程抄表系統(tǒng)等。