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

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

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

圖 3關(guān)鍵字高亮
2.2 匯編器的設(shè)計(jì)
匯編器需要在上位 PC 機(jī)調(diào)試軟件中使用,在上位 PC 機(jī)調(diào)試軟件的編輯器的編輯框里輸入相關(guān)的匯編指令,匯編器將這些匯編指令一一進(jìn)行匯編,即編譯為可執(zhí)行的二進(jìn)制代碼,如果編譯不通過(guò),則需進(jìn)行相應(yīng)的代碼調(diào)試,直至編譯通過(guò)為止。匯編過(guò)程的流程圖如圖 4 所示。

圖 4 匯編程序流程圖
2. 2.1 定義用戶輸入指令
定義用戶輸入指令類(lèi),包括的變量有: 用戶輸入命令的名稱(chēng) name,參數(shù) arg X,參數(shù) arg Y,參數(shù) a-rg Z,行號(hào)line,String 類(lèi)型的輸入?yún)?shù)數(shù)組 in Arg,Int32 類(lèi)型的輸出參數(shù)數(shù)組 out Arg,以及 byte 類(lèi)型的數(shù)組 bin,長(zhǎng)度等于 8,一條指令的長(zhǎng)度,8 個(gè)字節(jié),用于保存編譯后的二進(jìn)制指令。
2.2.2 設(shè)計(jì)難點(diǎn)
設(shè)計(jì)過(guò)程中需要考慮的兩大問(wèn)題,第一: 若用戶輸入的有空白行,則必須先去除空白行,否則就算編程讓
投稿箱:
如果您有機(jī)床行業(yè)、企業(yè)相關(guān)新聞稿件發(fā)表,或進(jìn)行資訊合作,歡迎聯(lián)系本網(wǎng)編輯部, 郵箱:skjcsc@vip.sina.com
如果您有機(jī)床行業(yè)、企業(yè)相關(guān)新聞稿件發(fā)表,或進(jìn)行資訊合作,歡迎聯(lián)系本網(wǎng)編輯部, 郵箱:skjcsc@vip.sina.com
更多相關(guān)信息
業(yè)界視點(diǎn)
| 更多
行業(yè)數(shù)據(jù)
| 更多
- 2025年6月 新能源汽車(chē)銷(xiāo)量情況
- 2025年6月 新能源汽車(chē)產(chǎn)量數(shù)據(jù)
- 2025年6月 基本型乘用車(chē)(轎車(chē))產(chǎn)量數(shù)據(jù)
- 2025年6月 軸承出口情況
- 2025年6月 分地區(qū)金屬切削機(jī)床產(chǎn)量數(shù)據(jù)
- 2025年6月 金屬切削機(jī)床產(chǎn)量數(shù)據(jù)
- 2025年5月 新能源汽車(chē)銷(xiāo)量情況
- 2025年5月 新能源汽車(chē)產(chǎn)量數(shù)據(jù)
- 2025年5月 基本型乘用車(chē)(轎車(chē))產(chǎn)量數(shù)據(jù)
- 2025年5月 軸承出口情況
- 2025年5月 分地區(qū)金屬切削機(jī)床產(chǎn)量數(shù)據(jù)
- 2025年5月 金屬切削機(jī)床產(chǎn)量數(shù)據(jù)
- 2025年4月 新能源汽車(chē)銷(xiāo)量情況
博文選萃
| 更多
- 機(jī)械加工過(guò)程圖示
- 判斷一臺(tái)加工中心精度的幾種辦法
- 中走絲線切割機(jī)床的發(fā)展趨勢(shì)
- 國(guó)產(chǎn)數(shù)控系統(tǒng)和數(shù)控機(jī)床何去何從?
- 中國(guó)的技術(shù)工人都去哪里了?
- 機(jī)械老板做了十多年,為何還是小作坊?
- 機(jī)械行業(yè)最新自殺性營(yíng)銷(xiāo),害人害己!不倒閉才
- 制造業(yè)大逃亡
- 智能時(shí)代,少談點(diǎn)智造,多談點(diǎn)制造
- 現(xiàn)實(shí)面前,國(guó)人沉默。制造業(yè)的騰飛,要從機(jī)床
- 一文搞懂?dāng)?shù)控車(chē)床加工刀具補(bǔ)償功能
- 車(chē)床鉆孔攻螺紋加工方法及工裝設(shè)計(jì)
- 傳統(tǒng)鉆削與螺旋銑孔加工工藝的區(qū)別