基子CAN_BUS的控制器調試系統的設計
2.1.3 命令數據包格式本文引用地址:http://www.czjhyjcfj.com/article/161789.htm
命令數據指出對下傳參數的操作,Oxx7+0x44表示對某一參數的修改生效,如:0x17+0x44使能C1,0x27+0x44使能C2,0x37+0x44使能C3。如果修改的參數不能滿足控制要求,調試員希望能恢復原來的運行參數,因此定義0x55為修改參數恢復命令,如:0x17+0x55恢復C1,0x27+0x55恢復C2,0x37+0x55恢復C3。0x66+0x66表示將下傳數據寫入最后的FLASH參數存儲區。命令數據包格式如圖4所示。
2.2 上傳數據協議
上傳數據包的大小也為8個字節,數據包類型分為參數反饋、命令反饋兩種,參數反饋用于上傳DSP的實際運行控制參數及間隙、電流等狀態信息,命令反饋用于對PC機使能、寫入、參數恢復等命令的應答。
上傳數據依次為控制參數C1、C2、C3、CURRENTl、CURRENT2、CLEARANCE。數據類型標示依次為0x17、0x27、0x37、0x47、0x57、0x67。由于上位機要同時接收多個控制器上傳的數據,所以為了正確區分這些參數,需要給上傳的數據包加入端口標示,指出數據包來自哪個總線端口。上傳的數據包在前面格式的基礎上還要加入對應于各控制器的CAN總線端口號。
上傳命令是對總線通信出現異常情況的應答,因為控制器隨時將控制參數上傳,且參數字節數較少,出錯的可能性較低,不需配備應答命令;而上傳程序的數據量較大,容易出現錯誤,必須配備應答命令,指示程序寫入過程。
因為控制器是周期性地掃描SJAl000的接收緩沖區,當總線連接的節點較多時,數據量較大,難免會發生數據漏收的情況;而且控制器對外部中斷的響應也會影響掃描周期,使接收緩沖區中未來得及讀取的數據被新數據沖掉。當控制器發現應接收的數據位置與已接收到的數據位置不符時,控制器發差錯命令給上位機,指出應接收的數據段號及位置,上位機接收到這一信息后重發相關數據。發送數據包包含CAN端口字節、命令標示、段號、位置號等信息。通信過程中也可能出現發送數據與接收數據不符的情況,因此有必要引入數據校驗算法。控制器將接收到的128字節校驗后得到的校驗值與接收到的校驗值作比較,一致后才將數據寫入FLASH;否則反饋回校驗值錯誤信息,上位機重發該段數據。發送數據包包含CAN端口字節、命令標示、段號、重發標示(0x88)等信息。
圖5
3 通信程序設計流程
3.1 控制器通信流程
控制器的通信部分主要在主程序循環中完成。每次主程序循環中,控制器都向調試系統發送當前C1、C2、C3、CURRENTl、CURRENT2、CLEARANCE等信息;一旦接收到調試系統下傳的信息,控制器便分析下傳信息的性質,對它們分別進行判別與應答。
圖5是控制器的通信流程。控制器上電后,程序從FLASH的參數存儲區(最后256個字節)讀取控制參數值,存人控制參數緩存中,作為參數初值。同時,控制器通過CAN總線接收上位機下傳的控制參數,校驗后存入控制參數緩存中。一旦接收到參數使能命令,則將緩存中的數據復制給C1、C2、C3等變量,作為實際的工作參數;調試完畢后,在接收到參數寫入命令后,將參數寫入FLASH的參數存儲區,作為永久工作參數。接收到程序數據包后,控制器首先檢驗數據的次序,保證接收到的數據按次序排列;接著代入校驗算法,將計算得到的校驗值和接收的校驗值作比較,不一致則給上位機反饋校驗值錯誤命令,要求上位機重發該段程序,否則將數據寫入FLASH。圖中監控信息的發送周期可根據情況確定。
3.2 上位機通信流程
上位機是調試員與控制系統的接口,它顯示控制器的上傳參數,將調試員需要修改的控制參數下傳。為完成上述功能,調試界面應包括參數顯示窗口、參數輸入窗口、命令工具條等,必要的話,還應將狀態參數以曲線的形式顯示出來。調試人員根據狀態曲線調整控制參數。
圖6是上位機的調試流程,單控制器的總線最短發送周期為5ms,隨著總線通信量的增加,監控界面的掃描周期也應相應延長。參數顯示界面顯示的是上位機最新收到的參數,其值總是實時刷新的。發送修改參數時,每次只發送一個參數,上位機需將參數變成不大于4字節的字符型數組才能發送。控制器在收到參數數據包后,也要將數據字節逆序重組,才能得到需要的修改參數。上位機在下載程序的過程中,若在對某段程序多次重復發送后依然收到錯誤反饋,則顯示錯誤狀態,停止數據發送,由調試人員檢查線路,重新給出下載命令。
多個控制器控制參數的調試是一個相當繁雜的過程,本文給出了基于CAN總線的調試系統,其設計目的就是簡化調試過程,縮短調試時間。應用這套系統,調試人員可以同時動態地調整多個控制器的控制參數,通過反饋的控制器狀態判斷參數優劣,達到快速尋找最優控制參數的目的,是調試過程中的一條有效輔助手段。
評論