基于CAN總線的高壓開關柜狀態監測單元通訊模塊的設計
來源:寶光(廈門)電器有限公司
發布時間:2022-03-17
瀏覽次數:
摘要:高壓開關柜作為電力系統的關鍵設備,對它的運行狀態進行在線監測具有重大的意義。為了避免監測單元成為信息的孤島,有必要使監測單元具有通訊能力。筆者在分析CAN協議的基礎上,開發了基于CAN總線的高壓開關柜狀態在線監測單元的通訊模塊,并給出了軟硬件設計詳細的流程。
1.引言
高壓開關柜是電力系統的關鍵主設備之一,其運行狀態對電力系統的可靠性具有重大影響。統計表明,20世紀90年代中國電力系統開關事故類型分布如下:機械故障(拒分、拒合、誤動)33.3,絕緣故障37.3,溫升故障(載流)8.9,其它20.5[1]。因此,有必要對高壓開關柜的機械、溫升及絕緣狀態實施在線監測,及時發現事故隱患,防止事故發生。
現有高壓開關柜監測單元的核心一般采用單片機(MCU),其處理能力有限、存貯空間很小,只能對數據進行簡單的處理和存放少量的歷史數據[2]。為了存放大量的歷史數據以便對已有的數據進行復雜的處理(如壽命評估、故障診斷等),也為了對電力系統運行狀態進行遠程檢測和診斷,有必要使監測單元具有通訊能力,把需要的數據上傳給PC機。同時為了對分散的監測單元進行維護(如單元是否正常工作,閾值下載等),監測單元也有必要具有通訊能力以使PC機能夠實時監控監測單元的工作情況以及對它們進行閾值的下載。
CAN作為一種有效支持分布式通信的現場總線,能夠完成現場監測單元與管理設備之間的數字通信,溝通現場監測單元和更高管理層網絡之間的聯系,真正做到“分散處理,集中管理”。
2.監測單元框架和通訊模塊功能
所研制現場監測單元,其微控制器選用16位高速單片機80C196KC,利用其豐富的外設接口,方便地進行現場的數據采集、處理和顯示。監測單元的功能是進行在線的數據采集和數據處理,并提供現場的顯示和與上位機通信的接口,監測單元的框架見圖1。
監測單元監測的主要內容有:①母線溫升:測量斷路器三相進線和三相出線的電連接處溫升;②泄漏電流:測量三相環氧套管的泄漏電流;③機械數據:通過對斷路器分、合閘線圈電流和動觸頭行程的測量并進行數據處理,得到動觸頭行程、分合閘時間、分合閘速度、平均分合閘時間和平均分合閘電流。通訊模塊的主要功能就是當測量的這些數據異常時,主動上傳異常的數據,當測量的數據正常時就等待PC機有請求時上傳這些數據。同時監測單元還通過通訊模塊接收PC機的參數下載(如閾值等),并對PC機的下載進行響應!回答下載成功與否信息。
3.CAN總線
3.1CAN總線簡介
CAN總線屬于現場總線的范疇,它是一種具有很高保密性、有效支持分布式控制和實時控制的串行通信網絡。符合ISO/OSI模型規范。通信介質可以是雙絞線、同軸電纜或光纖。通信速率為5kb/s時,通信距離最長可為10km;通信速率為1Mb/s時,通信最長距離可達40m。CAN總線上節點數最多可以有110個,所以比較適用于小型的測控網絡。
CAN總線具有以下特征:多主站依據優先權進行總線訪問;無破壞性的基于優先權的仲裁;借助接收濾波的多地址幀傳送;遠程數據請求;配置靈活性;全系統數據相容性;錯誤檢測和出錯信令;發送期間若丟失仲裁或由于出錯而遭破壞的幀可自動重新發送;暫時錯誤和永久性故障節點的判別以及故障節點的自動脫離。
CAN總線的規范主要有2.0A和2.0B。這兩者的區別主要在于標識符位數的不同。CAN2.0A的標識符有11位,而CAN2.0B的標識符有29位,因此CAN2.0B對標識符定義具有更大的靈活性。
3.2監測單元通訊模塊對CAN2.0B標識符的定義
CAN總線摒棄了地址的概念:而是用標識符來標識數據,使用位仲裁技術根據標識符的優先級(標識符的值越小,優先級就越高)對總線進行訪問,這樣在系統中增刪節點就不會涉及到軟件的修改。但在實際應用中為了實現點對點及點對多點的數據傳送以及較長報文的傳送,有必要在標識符中定義數據的源地址、目的地址以及幀序數[3]。
對CAN2.0B29位標識符的定義為:bit28~bit21為目的地址;bit20~bit13為源地址;bit12~bit5為幀序數。源地址和目的地址表示CAN幀從哪里來,到哪里去。bit4位稱為更多CAN幀位,它是和幀序數配合使用來傳送較長的數據的(CAN每一幀最多傳8個有效字節)。bit4為零表示當前的CAN幀是一個被分組打包的應用層報文的最后一段;為1則表示應用層報文的分段未傳完;當標志位為0,幀序數也為1時,表示報文沒有被分段。bit3~bit0用來區分同一源地址的不同數據,這是一個4位的計數器,取值范圍是0~15。當發送一個新的數據時,計數器加1,溢出時重新開始計數。沒有用到遠程幀,遠程幀的作用通過數據幀之間的應答來實現。
3.3CAN應用層協議
CAN總線協議對應于ISO/OSI模型的物理層和鏈路層,沒有包括其他的層次。CAN的高層協議是在CAN現有的協議(物理層和鏈路層)上實現的。CAN作為一種小型的測控網絡,不涉及到路由選擇,同時為了減少層間轉換的復雜性,一般高層的協議只采用應用層。這樣在應用時,CAN實際就有了三層協議。應用層的報文對于鏈路層來講認為是數據,而真正需要傳送的數據是封裝在應用層報文中的。采用的應用層協議一般有標準(例如DeviceNet,SDS等)和自定義(根據實際系統而定)的兩種。筆者根據實際情況自定義了應用層協議,應用層報文的詳細定義這里不再詳述。
4.通訊模塊的硬件實現
監測單元部分通訊模塊實現CAN協議的控制器選用SJA1000,它是PCA82C200的替代產品,同時支持CAN2.0A和CAN2.0B協議,位速率可達1Mb/s。具有擴展的接收緩沖器、完善的錯誤檢測機制、擴展的驗收濾波器以及錯誤累計到一定時就脫離總線等特征。
硬件的設計并不復雜??梢詫JA1000和PCA82C250的應用文檔上的典型電路移植到80C196KC微控制器上(80C196KC采用8位數據總線模式),但在設計時還應該注意以下幾點:①SJA1000與外部ROM,RAM統一編址,微控制器對它的存取操作就像對RAM操作一樣(區別在于有的SJA1000寄存器有的不可讀,有的不可寫)。②總線的連接電纜一般使用雙絞線,對抗干擾要求較高可以使用屏蔽雙絞線,或者光纖。電纜線徑與傳輸距離、節點數目有關,傳輸距離變長或節點數目增加,電纜線徑也要相應增加,同時終端匹配電阻(一
般為120Ω)。也要增大。③SJA1000控制器RX1引腳要接0.5V,以便形成正確的電平邏輯。PCA82C250的Vref引腳可提供0.5V的電壓輸出,因此在不加光隔的測試系統中,可直接將RX1引腳接Vref引腳,以簡化電路設計。④SJA1000有中斷產生時,引腳INT產生的是一個高電平到低電平的跳變,文檔中給出的是和80C51(它的外中斷0可以是下降沿或低電平有效)接口的,因此兩個引腳可以直接相接。而80C196KC的EXTINT1引腳是上升沿有效,故在兩個引腳之間要加一個反相器。
5通訊模塊的軟件實現
軟件是通訊模塊設計的核心,與一般使用高級語言編寫的軟件不同的是嵌入式系統的軟件要和硬件直接打交道,是對硬件直接操作,因此對硬件要熟練掌握才能編寫出實用的代碼。
SJA1000控制器寄存器數量眾多,幸運的是許多文章對它們的用法都作了介紹,有的還給出了其具體的代碼,筆者只簡單介紹一下驗收濾波寄存器。使用驗收濾波器,可以使監測單元只接收需要的幀,屏蔽不需要的。這里的應用是將驗收濾波器配置成雙濾波方式,即控制器只接收目的地址與監測單元地址相符的或者與監測單元廣播地址相符的幀,從而節約監測單元的資源。
下面即以監測單元的發送為例,簡述通訊模塊軟件的設計思路。當監測單元有數據發送時(如絕緣數據),可通過下列步驟完成發送的全過程:①將數據按應用層報文的格式進行封裝。②應用層報文相對鏈路層來講是鏈路層的數據,在鏈路層把應用層的報文按照SJA1000的CAN幀的格式進行拆分。CAN每次只能傳送8個有效字節,在拆分時按照上文的標識符定義,將報文拆成有序的CAN幀,這樣接受的一方就能按照標識符將一系列屬于同一應用層報文的幀進行拆封。③把已拆分好的CAN幀按照標識符定義的幀序數發送出去。發送一幀之前需要檢查SJA1000控制器狀態寄存器(SR)的狀態,這包括檢查控制器發送狀態,接收狀態以及發送緩沖器鎖定狀態,當控制器處于空閑狀態(不在發送狀態、不在接收狀態并且發送緩沖器被釋放),就將需發送的幀寫入發送緩沖區并啟動發送。發送下一幀重復執行以上過程即可。
接受過程執行與發送過程相反的操作,可以簡述為:接受CAN幀;拆封CAN幀為應用層報文;解析報文得到數據。一個完整的接收發送流程見圖2。