關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于CAN總線的懸浮控制器監控終端的設計

        基于CAN總線的懸浮控制器監控終端的設計

        作者: 時間:2010-01-25 來源:網絡 收藏
        3 軟件
          在圖1所示的網絡結構圖中,數據流向大致可以分為二類:各節點之間的通信和節點與節點之間的通信。由于節點之間的通信與沒有直接關系,可以不予考慮。需要考慮的是各懸浮節點與的通信,這就要求在組成網絡時就必須制定一個懸浮節點和監控間的通信協議。在實現時,具體協議如下:
          (1)監控終端的接收標識符為0,其他懸浮控制節點的標識符均不得與之沖突;全部節點使用統一的波特率(50Kbps或500Kbps);數據包的長度統一為8B。
          (2)CAN監控終端向懸浮節點的數據傳送由監控終端的撥碼開關指定數據包的標識符,各懸浮節點通過數據包的標識符和自身的本地標識符比較以確定是否接收該數據包。
          (3)CAN監控終端的監聽是開放的,并不需要接收的數據包的標識符與自身的標識符一致。但數據包內第1個字節指明了發送該數據包的懸浮的標號。如果該標號與撥碼開關指定的標號一致,則繼續處理其他字節的內容;否則,丟棄該包。數據包內第2字節表示參數的類型,其余字節是浮點形式的參數數據。
          (4)在系統開始運行時,各懸浮節點并不向CAN監控終端發送數據,只有在CAN監控終端向某個節點發出“發送允許”命令之后,該節點才定時地向CAN監控終端發送上傳數據。如果CAN監控終端要監聽其他節點的數據,則需先禁止當前節點的數據發送,再向其他節點發出“發送允許”命令。這樣可以有效減小CAN上的數據流量。
          上述協議可以有效地維持CAN網絡中的數據通信秩序。
          從實際出發,要求軟件盡量簡單,界面盡量友好,便于操作。在實現時,為充分利用LCD的顯示能力,這里采用菜單的方式提示用戶操作。完成后的軟件界面如圖3所示。

        本文引用地址:http://www.104case.com/article/163293.htm

          程序采用分層的程序結構。最底層是一些硬件驅動程序,如鍵盤掃描、LCD狀態讀取和LCD數據寫入等。在這些底層驅動程序的基礎上再組織一些上層子程序供主程序調用。在編程語言的選擇上,考慮到程序的結構相對比較復雜,程序主體采用C語言編程,只有少部分涉及到DSP一些底層操作的部分才使用匯編語言。軟件的主體流程圖如圖4所示。

          初始化包括對CAN控制寄存器的初始化以及屏幕初始化,并在這之后讀取撥碼開關的狀態,確定波特率及通信對象,向被監控節點發出“發送允許”命令等。
          程序主體是一個大循環。在初始化之后便不斷掃描鍵盤。首先判斷是否有鍵按下,如果用戶沒有操作,則檢查CAN模塊是否接收到數據。如果沒有接收到數據,則繼續掃描鍵盤。如果接收到了數據(即相應的CAN接收中斷標志位置位),則將接收到的數據包按上述協議進行分析、整合處理,然后在屏幕上顯示出接收到的數值;同時,在曲線的對應位置上描點,完成曲線的繪制。如果在鍵盤掃描過程中發現有按鍵按下,則分析按鍵的類別,然后轉相應的子程序處理。處理完畢再返回主程序。
          這里數據接收并不采用中斷驅動方式,因為LCD的響應速度較慢。當LCD的響應速度低于CAN接收數據的速度時,會形成中斷嵌套,時間長了就會出現堆棧溢出。此外,采用中斷方式在數據量大時會出現DSP無暇顧及用戶鍵盤輸入的現象。實踐表明,采用查詢的方式可以很好地發揮DSP和LCD的固有能力,而且整體響應速度也比中斷方式快。
          LCD顯示涉及的子程序比較多,分層也很多。在編寫程序時首先在DSP的Flash ROM里定義一個段,將LCD顯示過程中可能涉及的字符、漢字等點陣數據做成一個庫,放入段內,在使用時再通過ROM訪問指令讀取。
          曲線的繪制過程如下:首先確定坐標的原點位置、X方向和Y方向的最大坐標以及輸入數值的范圍,然后在內存中開辟一個同X坐標點數一樣大小的緩沖區BUFF,用于記憶已經繪制的各點的坐標;同時設定一個X指針,用于存儲當前的X坐標。當接收到新的數據,確定好Y方向的坐標后,首先查找BUFF,得到原來顯示在該X位置的點的Y坐標,將這個位置上的點清除,然后在新的Y坐標上描點,最后在BUFF的相應X位置上記錄下新描點的Y坐標值,此時便完成了一個點的繪制。后面還要調整屏幕上的指針以標明當前顯示的X坐標。當繪制到X方向的最大位置時,再返回X=0的位置繼續繪圖。
          屏幕下方有關菜單的操作也是采用樹結構實現的,這里不再詳述。
          CAN監控終端向懸浮節點發送數據的過程一般是伴隨在相應的菜單操作并按下ENTER鍵生效后進行的。在每次數據發送之前,程序都需要讀入撥碼開關的狀態,以確定通信的波特率和通信對象的標識符。在實現上,撥碼開關的最高位控制著波特率,后面7位則決定了通信的發送標識符。
        4 結束語
          使用表明,這種TMS320LF2407A DSP的CAN監控終端在多懸浮組成的網絡中可以發揮很好的監控和調試作用,其結構小巧、界面友好,使用相當方便。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 石林| 白河县| 武平县| 玉山县| 高雄县| 固安县| 屯门区| 唐河县| 连山| 绥江县| 穆棱市| 梁山县| 两当县| 景谷| 永年县| 克什克腾旗| 洪雅县| 斗六市| 门源| 江津市| 襄汾县| 承德县| 新民市| 互助| 基隆市| 永德县| 怀远县| 克什克腾旗| 文化| 扶绥县| 无为县| 南川市| 翼城县| 新蔡县| 黄龙县| 新乐市| 永新县| 巴青县| 景谷| 长白| 溧阳市|