新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Profibus和CAN現場總線的幀轉換

        Profibus和CAN現場總線的幀轉換

        作者: 時間:2016-12-20 來源:網絡 收藏

        (2)幀格式舉例

        Profibus的幀有4種

        1)無數據字段的固定長度的幀

        2)有數據字段的固定長度的幀

        3)有可變數據字段長度的幀

        4)令牌幀

        其中:

        SYN同步時間,所有的主動幀前都必須有。
        SD1開始定界符,值l0H
        SD2開始定界符,值68H
        SD1開始定界符,值A2H
        SD1開始定界符,值DCH LE信息字節長度。該長度包括DA, SA,FC和DATA_UNIT。
        LEr重復信息字節長度。 DA目的地址
        SA源地址 FC幀控制 DATA UNIT數據字段。在固定長度的幀中為8個字符,在可變數據字段長度的幀中由LE決定,最大246個字符。
        FCS幀檢查順序 ED結束定界符,值16H。 SC短應答幀的單一字符,值E5H。

        (3)地址

        在幀首部的地址字符結構是這樣的:

        地址位組的低7位為其所指示的站地址。這樣在不擴展的情況下就有127個站地址(0~126)可以提供給主站和從站(其中127是作為全局地址來用的)。

        EXT位用來指示在DATA UNIT中有無地址擴展。為了效率的緣故,Profibus-DP的數據交換功能禁止了地址擴展。

        (4)服務存取點SAP

        ProfibuS-DP協議使用FDL的服務存取點SAP作為基本功能代碼。這個SAP有點類似于我們熟悉的TCP/IP協議中的端口:

        在Profibus-DP協議中通常使用的幀格式如下,其中地址欄的最高位是1。

        4、幀的內容的轉化

        一般說來,Profibus現場總線是主從結構的,Master和Slave之間是通過輪詢來通訊的。CAN也有主從結構的,但它的通訊方式是優先級逐位仲裁的競爭式通訊(CSMA/MBA)。

        如果把這兩種現場總線連在一起的話,大多數情況下應該是把CAN段作為Profibus的Slave。

        CAN的幀比較短,每個幀都有嚴格的差錯控制,在每個CAN的幀中,數據域最長是8個字節;而Profibus常用的有可變數據字段的單幀數據容量可達246字節,但它的每個字節(UART字符)都有比較好的差錯控制。在這種轉化中我們需要集中考慮地址轉化和幀的拆分問題。

        4.1 地址轉化

        如前所述,Profibus-DP的站地址(DA/SA)在幀中用1個字節的低7位來表示;但是CAN協議的幀中卻沒有明顯的地址位,它是利用仲裁域中的11位(CAN2. OA)或29位(CAN2.OB)表示符ID來表示幀的有關接收信息,讓接受節點自己來確定是否接收。這樣,實際上的地址信息就應當包含在ID中了。CAN協議沒有規定信息標識符(ID)的分配,可以根據不同的應用使用不同的方法。確定標識符的分配非常重要,是高層協議、應用層協議的一個主要研究項目。

        在本文中,為簡單起見,我們只采用CAN2. OA格式的幀。首先我們來研究其標識符的分配方法。世界上已經有很多現場總線的高層協議是基于CAN協議的,如CANopen, Modbus,DeviceNET等。出于研究方便,現在我們就采用“HiLon協議B”,協議。
        下面對“HiLon協議B”作簡單介紹。

        HiLon協議B是一個通用協議。該協議基于對稱型多主網絡結構,支持廣播和點對點傳送命令數據。命令數據包可長達256字節。

        協議以CAN2. OA幀結構為基礎。下圖是幀報文格式,一個CAN2. OA標準幀由11位ID、1位RTR、4位DLC、數據區(最多8個字節)組成。

        PRI:保留位(可作優先級位)。通常,保留位設置為1。保留位亦可作為優先級位,這時1為低優先級0為高優先級而剩余的優先級由源地址決定,低地址優先級高。該保留功能可有效支持緊急信息傳送,如報警等。

        source address:源地址,表示發送數據的節點地址,范圍只能設定為0~125。

        TYPE:幀類型。見下表中的幀類型說明。

        DLC:每幀字節數(1~8)



        destination address:目標地址,表示接收數據的節點地址,范圍只能設定為0~125。

        index:索引字節。對于單幀數據,該字節表示傳輸數據的第一個字節;對于多幀數據,此字節表示索引字節,即此幀數據在數據包中的位置。

        data:數據。

        Profibus有127個站地址,地址范圍是0~126,127是全局地址。

        兩者的差距并不大。因為只是研究用,我們不妨把HilonB協議稍許修改,地址范圍擴充到0~126,這樣做,對整個CAN幀的長度和結構并無任何影響。

        于是,我們就可以對所有的Profibus設備和CAN設備統一編址。整個系統里的站地址是唯一的,在幀轉化時我們只要把相應位的地址信息直接拷貝進去就是了。

        4.2 幀的拆分和合并

        要把profibus的長幀裝到CAN的短幀里去,就只能把Profibus的幀里的數據拆分成適合CAN的幀傳輸的長度。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 美姑县| 萨迦县| 广宁县| 伊宁市| 龙门县| 天镇县| 昌吉市| 平罗县| 兴宁市| 海南省| 东阳市| 麻城市| 吉林市| 铁岭市| 衡阳县| 常德市| 西畴县| 于都县| 新化县| 漾濞| 咸丰县| 承德县| 华蓥市| 界首市| 延庆县| 南部县| 盘山县| 陆川县| 正镶白旗| 沈阳市| 祁东县| 巴马| 全椒县| 浦县| 鄂托克旗| 浦城县| 梧州市| 西充县| 广元市| 信宜市| 北海市|