新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于CAN總線的高壓開關柜狀態監測單元通訊模塊

        基于CAN總線的高壓開關柜狀態監測單元通訊模塊

        作者: 時間:2012-08-03 來源:網絡 收藏

          
          5通訊模塊的軟件實現
          軟件是通訊模塊設計的核心,與一般使用高級語言編寫的軟件不同的是嵌入式系統的軟件要和硬件直接打交道,是對硬件直接操作,因此對硬件要熟練掌握才能編寫出實用的代碼。
          SJA1000控制器寄存器數量眾多,幸運的是許多文章對它們的用法都作了介紹,有的還給出了其具體的代碼,筆者只簡單介紹一下驗收濾波寄存器。使用驗收濾波器,可以使監測單元只接收需要的幀,屏蔽不需要的。這里的應用是將驗收濾波器配置成雙濾波方式,即控制器只接收目的地址與監測單元地址相符的或者與監測單元廣播地址相符的幀,從而節約監測單元的資源。
          下面即以監測單元的發送為例,簡述通訊模塊軟件的設計思路。當監測單元有數據發送時(如絕緣數據),可通過下列步驟完成發送的全過程:①將數據按應用層報文的格式進行封裝。②應用層報文相對鏈路層來講是鏈路層的數據,在鏈路層把應用層的報文按照SJA1000的CAN幀的格式進行拆分。CAN每次只能傳送8個有效字節,在拆分時按照上文的標識符定義,將報文拆成有序的CAN幀,這樣接受的一方就能按照標識符將一系列屬于同一應用層報文的幀進行拆封。③把已拆分好的CAN幀按照標識符定義的幀序數發送出去。發送一幀之前需要檢查SJA1000控制器狀態寄存器(SR)的狀態,這包括檢查控制器發送狀態,接收狀態以及發送緩沖器鎖定狀態,當控制器處于空閑狀態(不在發送狀態、不在接收狀態并且發送緩沖器被釋放),就將需發送的幀寫入發送緩沖區并啟動發送。發送下一幀重復執行以上過程即可。
          接受過程執行與發送過程相反的操作,可以簡述為:接受CAN幀;拆封CAN幀為應用層報文;解析報文得到數據。


          6.CAN控制器異常情況的處理
          SJA1000控制器在長期工作中,由于內在及外在的因素不可避免的會產生錯誤,從而使控制器不能正常工作。為了控制器能夠長期正常工作,使控制器從錯誤中恢復過來。控制器提供了相應的寄存器來進行錯誤的分析和診斷,這包括接收(發送)錯誤計數器、錯誤報警限制寄存器、錯誤代碼捕捉寄存器、仲裁丟失捕捉寄存器以及狀態寄存器的幾位。同時中斷寄存器的幾位用來報告產生的錯誤,由程序對錯誤進行處理。這些寄存器具體的定義可參閱相關文獻。
          在實際應用時主要有兩種從錯誤狀態恢復到正常工作狀態的方法。
          (1)有錯誤發生時,在中斷服務程序里根據中斷寄存器(中斷方式,中斷使能寄存器除喚醒和接收中斷外均打開)的各位的狀態,再結合相應的寄存器即可以進行分析和診斷了。例如出現應答通道故障時則會產生總線錯誤中斷,檢查錯誤代碼捕捉寄存器,就可知道是產生了應答通道故障。該方法的優點是知道錯誤具體是什么而采取對應的措施,缺點是編程比較麻煩,對協議和控制器都要十分熟悉。
          (2)控制器一有錯誤發生就重新初始化(中斷方式,中斷使能寄存器除喚醒和接收中斷外均打開),讓控制器重新正常運行,該方法優點是簡單易行,缺點是沒有考慮到錯誤發生的原因,不能作進一步的分析和診斷。
          為了簡化設計,筆者采取的是后一種方案。
          
          7.結語
          (1)CAN作為一種有效支持分布式通信的現場總線,具有高的可靠性和實時性,同時又有簡單、易用以及性價比高的優點,因此選擇CAN作為監測單元通訊模塊的解決方案。
          (2)在研究分析CAN協議的基礎上,根據實際情況對CAN的標識符作了定義,且制定了應用層的協議,并給出了軟硬件的設計思路以及異常情況的處理方法。
          (3)在實驗室的調試運行表明,采用作為監測單元通訊模塊的解決方案取得了良好的效果。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 来凤县| 红河县| 鄂伦春自治旗| 通城县| 石河子市| 顺平县| 开原市| 左云县| 乌苏市| 太白县| 溧水县| 麦盖提县| 两当县| 嘉祥县| 清水河县| 九龙县| 北安市| 壤塘县| 莱州市| 松桃| 台州市| 陵川县| 泰安市| 双峰县| 湟中县| 天祝| 扎赉特旗| 瑞金市| 班戈县| 视频| 禄劝| 漠河县| 孝感市| 商南县| 正宁县| 宜君县| 綦江县| 嘉祥县| 霍林郭勒市| 鹤岗市| 山阳县|