嵌入式伺服控制器調試軟件的研究
2017-7-25 來源:中國科學院大學 作者:史秀玉,何 平,王志成,,吳文江,張玉磊
摘要: 隨著工業控制領域的不斷發展,傳統的控制器已經無法滿足用戶在線調試的需求,只能通過仿真得到實驗結果,這種系統仿真具有一定的理想性。針對傳統控制器的缺陷,提出設計一種嵌入式伺服控制器調試軟件,能有效彌補這一缺陷。文章采用. NET Framework 平臺及 Visual Studio 集成開發環境,基于嵌入式伺服控制器設計了編輯器、匯編器以及調試器( 硬件在回路仿真測試系統) 。運用硬件在回路( Hardware-in-the-loop,HIL) 技術,讓處理器運行仿真模型來模擬電機的運行狀態,滿足了用戶實時調試的需求。
關鍵詞: Visual Studio; HIL; 嵌入式伺服控制器; 調試軟件
0.引言
隨著微控制器的快速發展,其應用已經遍及各個領域,如: 電機控制、工業自動化等。傳統控制器中,單軸控制器和伺服驅動器采用分立的設計結構,系統成本高、通訊時延長、靈活性差。因此,嵌入式單軸控制器應運而生,它將單軸控制器和伺服驅動器結合在一起,解決了傳統控制器的缺陷; 嵌入式單軸控制器的出現也對調試工具提出了新的要求,在對指令進行編輯編譯的同時,也需要滿足用戶的實時調試的需求。目前國內尚無成熟的嵌入式伺服控制器調試軟件,因此在參考文獻[1]的基礎上,文章設計了基于嵌入式伺服控制器的調試軟件。嵌入式伺服控制器調試軟件可用于實現運動控制器監控、編碼器角度檢測、Osci 控制等功能,其核心功能是編輯、匯編以及調試,其中,調試功能采用了硬件在回路的仿真設計,硬件在回路仿真已逐漸成為控制系統設計的重要工具[2],滿足了用戶實時調試的需求。
1.總體結構設計
1.1 伺服控制系統
伺服控制系統整體的工作流程如圖 1 所示: 用戶在上位 PC 機的調試軟件上編寫程序,通過 USB 端口將程序指令代碼序列下載到嵌入式單軸控制器中,解釋器模塊對下載的代碼序列進行解釋處理并調用相應的處理函數,得到電機的運動參數,因為單軸控制器和伺服驅動器共享內存,伺服驅動器可以根據參數直接控制電機的運動軌跡,不需要再使用通訊接口。其中,運動控制器中變量監測模塊保存記錄數據,并將各個變量同樣通過 USB 接口反饋給上位 PC 機調試軟件中的調試器,便于用戶實時調試,控制電機的運轉軌跡。

圖 1 伺服控制系統結構
1.2 伺服驅動指令
伺服驅動指令由匯編器匯編,具有一定的指令格式,包括指令標識符和相關的參數。統一編譯為二進制代碼,根據指令標識符的不同,調用不同的指令處理函數,當然這就是解釋器的功能了,不是我們討論的范疇。根據參考文獻[1]設計的伺服驅動指令集,設計一個類,定義統一的指令規范格式,定義各個變量,分別存儲助記符的名稱、指令代碼、參數個數以及各個參數。定義該類型的數組,數組中存放的是所有的指令集合,最后定義所有輸入輸出參數可能的類型指令。
2.調試軟件的設計
2.1 編輯器的設計
采用 Visual Studio 平臺的 rich Text Box 組件,在 C#win Form 程序中作為匯編器的編輯界面,同時采用 la-bel 控件為代碼添加行號。為 Label 控件添加 Paint 事件,來實現行號的添加。具體代碼設計如圖 2 所示:

圖 2 繪制行號
其中,line Num Point 是一個 List 數組,存放的是Point 類型的數。Line Num Point 中的坐標是由 Line N-um Point. Add( ) 函數逐一添加的。遍歷該數組得到數組中元素的個數( 即行數) ,g. Draw String( ) 函數繪制行號。此中存在一個設計難點,就是滾動條的問題。隨著滾動條的滾動,行號需要不斷的刷新才能滿足正常的需要。為此設計一個滾動條的垂直滾動事件( rich Text Box 的 VScroll 事件) ,實現行號的刷新。首先用 clear( ) 函數將坐標數組清空,重新計算字符串坐標,我 們 知 道 文 本 框 的 行 數,即 rich Text Box. Line.Length,先用 Get First Char Index From Line ( ) 函數從行號得到給定行第一個字符的索引,再根據函數 Get Posi-tion From Char Index( ) 得到字符在指定索引處的位置,進而得到每行行號的坐標。到此為止,編輯器已經做好了,但是為了使其更加美觀實用,這里為其實現了關鍵字高亮。高亮代碼如圖 3 所示。

圖 3關鍵字高亮
2.2 匯編器的設計
匯編器需要在上位 PC 機調試軟件中使用,在上位 PC 機調試軟件的編輯器的編輯框里輸入相關的匯編指令,匯編器將這些匯編指令一一進行匯編,即編譯為可執行的二進制代碼,如果編譯不通過,則需進行相應的代碼調試,直至編譯通過為止。匯編過程的流程圖如圖 4 所示。

圖 4 匯編程序流程圖
2. 2.1 定義用戶輸入指令
定義用戶輸入指令類,包括的變量有: 用戶輸入命令的名稱 name,參數 arg X,參數 arg Y,參數 a-rg Z,行號line,String 類型的輸入參數數組 in Arg,Int32 類型的輸出參數數組 out Arg,以及 byte 類型的數組 bin,長度等于 8,一條指令的長度,8 個字節,用于保存編譯后的二進制指令。
2.2.2 設計難點
設計過程中需要考慮的兩大問題,第一: 若用戶輸入的有空白行,則必須先去除空白行,否則就算編程讓
投稿箱:
如果您有機床行業、企業相關新聞稿件發表,或進行資訊合作,歡迎聯系本網編輯部, 郵箱:skjcsc@vip.sina.com
如果您有機床行業、企業相關新聞稿件發表,或進行資訊合作,歡迎聯系本網編輯部, 郵箱:skjcsc@vip.sina.com