• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > CAN總線-PROFIBUS-DP總線網關的實現方法

    CAN總線-PROFIBUS-DP總線網關的實現方法

    作者: 時間:2013-02-27 來源:網絡 收藏


    側的初始化與發送程序流程如圖4:

    佳工機電網

    因為SJA1000的初始化只有在復位模式下才可以進行,因此程序首先將SJA1000的中斷屏蔽,使它進入復位模式,然后對它進行初始化。初始化內容主要包括工作方式的設置、接受濾波方式的設置、接受屏蔽寄存器和接受代碼寄存器的設置、波特率參數設置和中斷允許寄存器的設置等。 SJA1000完成初始化設置后,再讓它返回到工作狀態,進行正常的通信任務。

    在接受子程序里,系統以查詢的方式接受CAN子站傳送過來的數據,網關通過接受緩沖區數據區的第一個字節的內容判斷接受的是真正的數據,還是發給 站點的發送數據請求。如果數據區第一個字節是00H,則傳送的是數據信息,于是根據ID查表求得該站所對應的存儲單元,并將數據區的第二、三字節的內容存在該單元內,同時把ID放在7FFCH中,告訴對方發送數據的站點號;如果該字節內容是FFH,則說明是發送數據請求,數據區第二個字節存放的是被要求發送數據的站點號,將他放入7FFCH內即可。

    接口發送數據子程序流程圖如圖5:

    佳工機電網

    上面的發送程序是由雙口RAM的中斷信號觸發的,收到中斷信號后,首先讀取7FFEH單元的內容,將中斷信號消除,然后根據該單元的內容,判斷雙口RAM內存放的是數據,還是被要求發送數據的CAN子站的ID號。如果7FFEH內容為00H,則說明所要發送到CAN子站的為正常的數據,于是將發送緩沖區的第一個字節設置為00H,告訴CAN子站發送的為數據,然后讀取7FFDH單元內容,查表求得數據在雙口RAM中的地址,并從該地址取兩個字節存到SJA1000輸出緩沖區數據區的第二、三個字節,同時把7FFDH作為發送的ID號。如果7FFDH是FFH,則說明PROFIBUS- DP發送過來得是被要求發送數據的CAN子站的站點號,于是只要把它放到SJA1000發送緩沖區數據區的第二個字節,并把第一個字節設為FFH,以通知 CAN站點,發送的數據為ID號。以上工作完成后,最后通過寫命令字發送數據。

    5 結束語

    實踐證明,雙CPU結構的雙向網關可以很好地完成總線協議轉換的任務,并且解決了單CPU結構網關中存在的數據傳輸速率低,數據傳輸可靠性差等問題,滿足了CAN總線與總線協議轉換的要求。它將CAN總線設備與PROFIBUS總線設備的連接起來,使兩種現場總線設備可以高效的通信,最終達到數據共享與功能互補的目的。并且工作人員在使用過程中不必關心兩種總線物理層和數據鏈路層的全部內容,給總線產品的研究開發帶來極大方便。另外這種雙CPU結構的設計方案對其他現場總線之間的網關設計具有借鑒意義,是一種值得推廣的方法。

    參考文獻
    [1] 鄔寬明. 現場總線應用選編. 北京:北京航空航天大學出版社,2004
    [2] 鄒益仁. 現場總線控制系統的設計和開發. 北京:國防工業出版社,2003
    [3] 饒運濤. 現場總線CAN原理與應用技術. 北京:北京航空航天大學出版社,2003
    [4] SIEMENS. SPC3 and DPS2 User Description Version2.0,2002
    [5] PNO.Draft GSD Specification for PROFIBUS-DP GSD Revision2,1998
    [6] PHILIPS.Semiconductor PCA82C250 CAN controlerinter-face,1997(end)

    上一頁 1 2 3 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 德州市| 东乌| 鹤壁市| 贵南县| 澄迈县| 泊头市| 贺州市| 理塘县| 韶山市| 太原市| 靖宇县| 岳阳市| 苍溪县| 黔东| 金寨县| 巴南区| 西吉县| 红原县| 淮北市| 伊宁市| 应城市| 永顺县| 沂源县| 新余市| 海南省| 米泉市| 南澳县| 德惠市| 甘肃省| 柘荣县| 简阳市| 威信县| 镇平县| 无锡市| 安陆市| 汝南县| 镇沅| 高要市| 洪雅县| 江门市| 道孚县|