新聞中心

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

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

        作者: 時間:2013-01-23 來源:網絡 收藏

          3.3 CAN應用層協議
          協議對應于ISO/OSI模型的物理層和鏈路層,沒有包括其他的層次。CAN的高層協議是在CAN現有的協議(物理層和鏈路層)上實現的。CAN作為一種小型的測控網絡, 不涉及到路由選擇,同時為了減少層間轉換的復雜性,一般高層的協議只采用應用層。這樣在應用時,CAN實際就有了三層協議。應用層的報文對于鏈路層來講認為是數據,而真正需要傳送的數據是封裝在應用層報文中的。采用的應用層協議一般有標準(例如DeviceNet,SDS等)和自定義(根據實際系統而定)的兩種。 筆者根據實際情況自定義了應用層協議, 應用層報文的詳細定義這里不再詳述。
          
          4. 通訊模塊的硬件實現
          監測單元部分通訊模塊實現CAN協議的控制器選用SJA1000,它是PCA82C200的替代產品,同時支持CAN2.0A和CAN2.0B協議,位速率可達1Mb/s。具有擴展的接收緩沖器、完善的錯誤檢測機制、擴展的驗收濾波器以及錯誤累計到一定時就脫離總線等特征。
          硬件的設計并不復雜。可以將SJA1000和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幀為應用層報文;解析報文得到數據。
          6. CAN控制器異常情況的處理
          SJA1000控制器在長期工作中,由于內在及外在的因素不可避免的會產生錯誤,從而使控制器不能正常工作。為了控制器能夠長期正常工作,使控制器從錯誤中恢復過來。控制器提供了相應的寄存器來進行錯誤的分析和診斷,這包括接收(發送)錯誤計數器、錯誤報警限制寄存器、錯誤代碼捕捉寄存器、仲裁丟失捕捉寄存器以及狀態寄存器的幾位。同時中斷寄存器的幾位用來報告產生的錯誤,由程序對錯誤進行處理。這些寄存器具體的定義可參閱相關文獻。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 台中市| 郑州市| 焉耆| 九龙城区| 鄂州市| 福建省| 清流县| 楚雄市| 凌源市| 长葛市| 任丘市| 阳新县| 报价| 邢台县| 阿尔山市| 平塘县| 罗江县| 乐山市| 弥勒县| 阿克陶县| 陵川县| 石林| 富蕴县| 阳山县| 广元市| 金门县| 无锡市| 鄯善县| 临朐县| 武川县| 册亨县| 西乌珠穆沁旗| 天镇县| 孟州市| 墨玉县| 扬州市| 龙川县| 八宿县| 霍林郭勒市| 阳西县| 中山市|