国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

嵌入式伺服控制器調(diào)試軟件的研究*

2017-02-15 10:27史秀玉王志成吳文江張玉磊
關(guān)鍵詞:嵌入式指令調(diào)試

史秀玉,何 平,王志成,吳文江,張玉磊

(1.中國(guó)科學(xué)院大學(xué),北京 100049;2.中國(guó)科學(xué)院沈陽(yáng)計(jì)算技術(shù)研究所 高檔數(shù)控國(guó)家工程研究中心,沈陽(yáng) 110168;3.沈陽(yáng)高精數(shù)控智能技術(shù)股份有限公司,沈陽(yáng) 110168)

嵌入式伺服控制器調(diào)試軟件的研究*

史秀玉1,2,何 平2,3,王志成2,3,吳文江2,3,張玉磊1,2

(1.中國(guó)科學(xué)院大學(xué),北京 100049;2.中國(guó)科學(xué)院沈陽(yáng)計(jì)算技術(shù)研究所 高檔數(shù)控國(guó)家工程研究中心,沈陽(yáng) 110168;3.沈陽(yáng)高精數(shù)控智能技術(shù)股份有限公司,沈陽(yáng) 110168)

隨著工業(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集成開發(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)試的需求。

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)試軟件上編寫程序,通過(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è)類,定義統(tǒng)一的指令規(guī)范格式,定義各個(gè)變量,分別存儲(chǔ)助記符的名稱、指令代碼、參數(shù)個(gè)數(shù)以及各個(gè)參數(shù)。定義該類型的數(shù)組,數(shù)組中存放的是所有的指令集合,最后定義所有輸入輸出參數(shù)可能的類型指令。

2 調(diào)試軟件的設(shè)計(jì)

2.1 編輯器的設(shè)計(jì)

采用Visual Studio平臺(tái)的richTextBox組件,在C# winForm程序中作為匯編器的編輯界面,同時(shí)采用label控件為代碼添加行號(hào)。為L(zhǎng)abel控件添加Paint事件,來(lái)實(shí)現(xiàn)行號(hào)的添加。具體代碼設(shè)計(jì)如圖2所示:

圖2 繪制行號(hào)

其中,lineNumPoint是一個(gè)List數(shù)組,存放的是Point類型的數(shù)。LineNumPoint中的坐標(biāo)是由LineNumPoint.Add()函數(shù)逐一添加的。遍歷該數(shù)組得到數(shù)組中元素的個(gè)數(shù)(即行數(shù)),g.DrawString()函數(shù)繪制行號(hào)。此中存在一個(gè)設(shè)計(jì)難點(diǎn),就是滾動(dòng)條的問題。隨著滾動(dòng)條的滾動(dòng),行號(hào)需要不斷的刷新才能滿足正常的需要。為此設(shè)計(jì)一個(gè)滾動(dòng)條的垂直滾動(dòng)事件(richTextBox的VScroll事件),實(shí)現(xiàn)行號(hào)的刷新。首先用clear()函數(shù)將坐標(biāo)數(shù)組清空,重新計(jì)算字符串坐標(biāo),我們知道文本框的行數(shù),即richTextBox.Line.Length,先用GetFirstCharIndexFromLine()函數(shù)從行號(hào)得到給定行第一個(gè)字符的索引,再根據(jù)函數(shù)GetPositionFromCharIndex()得到字符在指定索引處的位置,進(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 定義用戶輸入指令

定義用戶輸入指令類,包括的變量有:用戶輸入命令的名稱name,參數(shù)argX,參數(shù)argY,參數(shù)a-rgZ,行號(hào)line,String類型的輸入?yún)?shù)數(shù)組inArg,Int32類型的輸出參數(shù)數(shù)組outArg,以及byte類型的數(shù)組bin,長(zhǎng)度等于8,一條指令的長(zhǎng)度,8個(gè)字節(jié),用于保存編譯后的二進(jìn)制指令。

2.2.2 設(shè)計(jì)難點(diǎn)

設(shè)計(jì)過(guò)程中需要考慮的兩大問題,第一:若用戶輸入的有空白行,則必須先去除空白行,否則就算編程讓編譯通過(guò),遇到跳轉(zhuǎn)指令也不能正確執(zhí)行,因此需要去除空白行,Array.FindAll(codeLines,line=> !string.IsNullOrEmpty(line))。將輸出去除空白行之后的內(nèi)容與之前對(duì)比,如果沒有空行則說(shuō)明已經(jīng)成功去除。

第二是跳轉(zhuǎn)指令中的line,在去除了空白行之后的所有行號(hào)都會(huì)發(fā)生變化,所以不能靠行號(hào)的變化來(lái)識(shí)別,這里設(shè)計(jì)了另一種思路:當(dāng)跳轉(zhuǎn)指令,第一個(gè)參數(shù)是line類型的,將此字符串的line轉(zhuǎn)化成int型,那么需要跳轉(zhuǎn)到的字符串就是codeLines[newLine],codeLines是原來(lái)的文本數(shù)組。然后遍歷新的文本數(shù)組,如果新數(shù)組中哪個(gè)元素與該字符串一樣,則說(shuō)明這個(gè)元素就是我們要找的元素,然后把該元素的序號(hào)i賦值給newLine,再將其轉(zhuǎn)換為字符串即可。

2.3 調(diào)試器的設(shè)計(jì)

2.3.1 編譯調(diào)試

在編譯的過(guò)程中,檢查不符合規(guī)則的錯(cuò)誤,停止繼續(xù)編譯,并報(bào)告給用戶錯(cuò)誤指令,即錯(cuò)誤的類型和具體內(nèi)容。為此,定義一個(gè)錯(cuò)誤類,該類有兩個(gè)變量,錯(cuò)誤序號(hào)id以及對(duì)應(yīng)序號(hào)的錯(cuò)誤內(nèi)容如圖4流程圖所示,每當(dāng)發(fā)生一個(gè)編譯錯(cuò)誤,就向用戶發(fā)出該錯(cuò)誤報(bào)告,告訴用戶錯(cuò)誤的類型以及具體的內(nèi)容,以方便用戶調(diào)試代碼,修正錯(cuò)誤,從而通過(guò)編譯。

為了輸出錯(cuò)誤信息給用戶,再次設(shè)計(jì)一個(gè)richTextBox,與之前編輯器的richTextBox組件放在同一個(gè)winForm中。當(dāng)有錯(cuò)誤報(bào)告時(shí),就將錯(cuò)誤信息在此輸出。除此之外,設(shè)計(jì)一個(gè)指針箭頭指向當(dāng)前編輯、編譯的行號(hào),如果編譯出錯(cuò),則指向出錯(cuò)的行。

2.3.2 硬件在回路

硬件在回路(Hard-in-the-Loop,HIL)是系統(tǒng)的一種半實(shí)物仿真,通過(guò)實(shí)際的控制器和虛擬對(duì)象來(lái)模擬電機(jī)的運(yùn)行狀態(tài)。與傳統(tǒng)的軟件仿真技術(shù)不同,硬件在回路技術(shù)將實(shí)際硬件設(shè)備引入到仿真系統(tǒng)環(huán)境中,利用仿真平臺(tái)的計(jì)算能力、輔助工具等系統(tǒng)資源,實(shí)現(xiàn)動(dòng)態(tài)的功能測(cè)試,檢查設(shè)計(jì)過(guò)程中可能存在的錯(cuò)誤與缺陷[3]。

目前,硬件在回路的仿真系統(tǒng)主要有dSPACE,Mathworks xPC Target,Opal-RT RT-Lab等,這些系統(tǒng)控制器運(yùn)算能力較強(qiáng)、擴(kuò)展性較好,但是部分接口需要具備相關(guān)專業(yè)知識(shí)的用戶編程實(shí)現(xiàn),用戶交互能力較弱[2],因此不適用于伺服控制器程序的開發(fā)實(shí)現(xiàn),所以設(shè)計(jì)了如圖5所示硬件在回路的系統(tǒng)結(jié)構(gòu)圖。此硬件在回路的變量監(jiān)測(cè)系統(tǒng)的需要的硬件支持是伺服驅(qū)動(dòng)器,軟件支持是.NET Framework平臺(tái)及Visual Studio集成開發(fā)環(huán)境。

圖5 硬件在回路系統(tǒng)結(jié)構(gòu)圖

實(shí)現(xiàn)的具體流程如圖6。在上位PC機(jī)通過(guò)調(diào)試器實(shí)時(shí)監(jiān)控,將仿真數(shù)據(jù)發(fā)送給運(yùn)動(dòng)控制器,運(yùn)動(dòng)控制器將數(shù)據(jù)做記錄,即將所有的數(shù)據(jù)存儲(chǔ)在一個(gè)數(shù)組中,同時(shí),將數(shù)據(jù)發(fā)送給伺服控制器,由伺服控制器根據(jù)數(shù)據(jù)的大小情況控制電機(jī)的運(yùn)轉(zhuǎn)。電機(jī)運(yùn)轉(zhuǎn)情況由伺服驅(qū)動(dòng)器采集并反饋,之后進(jìn)行數(shù)據(jù)記錄保存,運(yùn)動(dòng)控制器重新將反饋的數(shù)控發(fā)送給上位PC機(jī)的調(diào)試器,由用戶實(shí)時(shí)監(jiān)測(cè)控制。運(yùn)動(dòng)控制器變量監(jiān)測(cè)模塊會(huì)將變量實(shí)時(shí)反饋給上位機(jī)的調(diào)試器如圖1所示,觀察電機(jī)運(yùn)行的結(jié)果是否與預(yù)期一樣,反饋的各個(gè)實(shí)時(shí)參數(shù)是否與設(shè)置相同。

與此同時(shí),根據(jù)電機(jī)上電情況和運(yùn)行情況,設(shè)計(jì)了labelPC值實(shí)時(shí)反映當(dāng)前電機(jī)的狀態(tài)以及程序運(yùn)行的狀態(tài),并將該P(yáng)C值返回給指針箭頭函數(shù),使得箭頭指向當(dāng)前正在執(zhí)行的語(yǔ)句。

圖6 伺服控制器程序流程圖

3 調(diào)試軟件的實(shí)現(xiàn)

3.1 實(shí)驗(yàn)平臺(tái)的搭建

此次實(shí)驗(yàn)平臺(tái)搭建如圖7所示。圖中從左到右依次是伺服電機(jī)、嵌入式伺服驅(qū)動(dòng)器和上位機(jī)調(diào)試軟件。

圖7 實(shí)驗(yàn)平臺(tái)的搭建

3.2 編輯器、匯編器的實(shí)現(xiàn)

上位機(jī)調(diào)試工具的編輯器的界面如圖8所示。分為編輯界面和顯示界面,其中,顯示界面主要用于代碼調(diào)試錯(cuò)誤信息的輸出,此時(shí)驅(qū)動(dòng)器處于未上電狀態(tài),運(yùn)動(dòng)控制器處于停機(jī)狀態(tài)。

圖8 編輯界面

當(dāng)用戶給驅(qū)動(dòng)器上電,輸入?yún)R編指令,并點(diǎn)擊編譯按鈕,則匯編器進(jìn)行編譯,如果沒有錯(cuò)誤則編譯通過(guò),調(diào)試顯示框會(huì)輸出“編譯成功”和當(dāng)前開始編譯的時(shí)間,黃色箭頭指向當(dāng)前執(zhí)行的命令行,如圖9所示。

圖9 編譯運(yùn)行界面

3.3 調(diào)試器的實(shí)現(xiàn)

編譯執(zhí)行命令行后,打開運(yùn)動(dòng)控制器變量監(jiān)測(cè)窗口,可以清晰的看到各個(gè)變量值的情況如圖10,以此來(lái)監(jiān)測(cè)電機(jī)的運(yùn)轉(zhuǎn)狀況,觀察是否符合預(yù)期的期望。若不符合,及時(shí)調(diào)整相關(guān)值的大小,以達(dá)到預(yù)期期望。

圖10 運(yùn)動(dòng)控制器變量監(jiān)測(cè)

4 結(jié)論

文章在解決了傳統(tǒng)單軸控制器成本高、延時(shí)長(zhǎng)、靈活性差的嵌入式伺服控制器的基礎(chǔ)上,采用 .NETFramework平臺(tái)及Visual Studio集成開發(fā)環(huán)境設(shè)計(jì)并實(shí)現(xiàn)了編輯器、匯編器以及采用了硬件在回路技術(shù)的調(diào)試器。彌補(bǔ)了傳統(tǒng)控制器無(wú)法滿足用戶實(shí)時(shí)調(diào)試的缺陷,對(duì)伺服控制器調(diào)試軟件的開發(fā)具有一定的借鑒作用。

[1] 黃昭縣,王志成,趙鴻博.嵌入式單軸控制器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 組合機(jī)床與自動(dòng)化加工技術(shù),2014(8):62-66.

[2] 朱淵渤,白瑞林,吉峰,等.交流伺服硬件在回路系統(tǒng)的設(shè)計(jì)[J].江南大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,11(6):631-636.

[3] 杜少華,于東,黃艷,等.一種基于硬件在環(huán)的可重構(gòu)數(shù)控系統(tǒng)驗(yàn)證方法[J].機(jī)械工程學(xué)報(bào),2011,47(21):139-145.

[4] 趙鴻博,王志成,何鵬飛,等.軸控制通信技術(shù)的研究與實(shí)現(xiàn)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2015(4):55-58,62.

[5] 肖賀,劉佩林.針對(duì)DSP指令生成與二進(jìn)制翻譯的匯編器實(shí)現(xiàn)[J].信息技術(shù),2011(3):47-50.

[6] 劉洋,胡育文,黃文新,等.交流伺服系統(tǒng)調(diào)試軟件設(shè)計(jì)[J].伺服控制,2008(1):60-63.

[7] 柴宇,欒勇,王志成.可重構(gòu)伺服驅(qū)動(dòng)調(diào)試工具的設(shè)計(jì)與實(shí)現(xiàn)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2013(7):75-77.

[8] 許娜,張曉彤,王沁,等.基于宏指令集的專用匯編器的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2010,36(2):249-251.

[9] 楊光,冉峰.單片機(jī)匯編器的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)應(yīng)用,2005,26(2):231-233.

[10] R Leupers.Compiler Design Issues for Embedded Processors[J].IEEE Design and Test of Computers,2002,19(4):51-58.

[11] K Kennedy,JR Allen.Optimizing compilers for modern architectures: a dependence-based approach[M].Morgan Kaufman Publ Inc,2001.

(編輯 李秀敏)

Researches on the Debugging Software of Embedded Servo Controller

SHI Xiu-yu1,2,HE Ping2,3,WANG Zhi-cheng2,3,WU Wen-jiang2,3,ZHANG Yu-lei1,2

(1.University of Chinese Academy of Sciences,Beijing 100049,China;2.National Engineering Research Center for High-end CNC,Shenyang Institute of Computing Technology,Chinese Academy of Sciences,Shenyang 110168,China)

With the development of the field of industrial control,the traditional controller has been unable to meet the needs of user’s online debugging.The experimental results can only be obtained by simulation,but it’s a pure simulation system with certain ideals.Aiming at the defects of the traditional controller,the paper puts forward a debugging software of embedded servo controller, which can effectively compensate for this defect.Based on embedded servo controller designed editor, assembler and debugger (Hard-in-the-Loop simulation test system) on the .NET Framework platform and Visual Studio IDE.Therefore, the processor will run with simulation model to simulate running state of the motor and meet the needs of user’s online debugging.

Visual Studio;HIL;embedded servo controller;debugging software

1001-2265(2017)01-0085-04

10.13462/j.cnki.mmtamt.2017.01.023

2016-03-02;

2016-04-08

“高檔數(shù)控機(jī)床與基礎(chǔ)制造裝備”國(guó)家科技重大專項(xiàng):國(guó)產(chǎn)高檔數(shù)控機(jī)床、系統(tǒng)及其技術(shù)在航空領(lǐng)域的綜合應(yīng)用驗(yàn)證及工藝研究(2014ZX04001051)

史秀玉(1992—),女,山西忻州人,中科院沈陽(yáng)計(jì)算所碩士研究生,研究方向?yàn)樗欧刂疲?E-mail)1058946261sxy@sina.com。

TH166;TG659

A

猜你喜歡
嵌入式指令調(diào)試
Focal&Naim同框發(fā)布1000系列嵌入式揚(yáng)聲器及全新Uniti Atmos流媒體一體機(jī)
電氣儀表自動(dòng)化安裝與調(diào)試分析
《單一形狀固定循環(huán)指令G90車外圓仿真》教案設(shè)計(jì)
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
嵌入式PLC的設(shè)計(jì)與研究
基于航拍無(wú)人機(jī)的設(shè)計(jì)與調(diào)試
嵌入式單片機(jī)在電機(jī)控制系統(tǒng)中的應(yīng)用探討
核電廠主給水系統(tǒng)調(diào)試
無(wú)線通信中頻線路窄帶臨界調(diào)試法及其應(yīng)用
中斷與跳轉(zhuǎn)操作對(duì)指令串的影響
枝江市| 柘城县| 民权县| 泸州市| 娄烦县| 石狮市| 南召县| 景德镇市| 陇西县| 曲麻莱县| 长乐市| 正安县| 社会| 宝丰县| 楚雄市| 康乐县| 新竹市| 贵南县| 乡宁县| 太仓市| 阳城县| 丰原市| 志丹县| 江永县| 嵊州市| 西宁市| 平乐县| 乐平市| 新营市| 孝昌县| 女性| 鲁山县| 安达市| 梁河县| 五大连池市| 青冈县| 新密市| 毕节市| 台江县| 随州市| 葫芦岛市|