智汇工业-智慧工业、智能制造及工业智能、工业互联门户网站,专业的工业“互联网+”传媒

開(kāi)放式數(shù)控系統(tǒng)人機(jī)界面的設(shè)計(jì)

來(lái)源:互聯(lián)網(wǎng)

點(diǎn)擊:1450

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞:開(kāi)放式 數(shù)控系統(tǒng) 人機(jī)界面

    0 引言

      開(kāi)放式數(shù)控系統(tǒng)已經(jīng)成為當(dāng)前CNC技術(shù)發(fā)展的必然趨勢(shì),而基于/PC+運(yùn)動(dòng)控制器0結(jié)構(gòu)體系的開(kāi)放式數(shù)控系統(tǒng)也已成為自動(dòng)化領(lǐng)域備受關(guān)注的數(shù)控裝置之一。含有DSP處理器的運(yùn)動(dòng)控制器,實(shí)現(xiàn)復(fù)雜的控制算法和功能,完成數(shù)控系統(tǒng)中補(bǔ)償處理、速度控制、位置控制等實(shí)時(shí)性任務(wù); PC機(jī)利用其豐富的軟件資源,在Windows環(huán)境下開(kāi)發(fā)相應(yīng)的應(yīng)用程序模塊,專(zhuān)注于人機(jī)界面、輸入輸出、預(yù)處理、發(fā)送指令等弱實(shí)時(shí)和非實(shí)時(shí)性任務(wù)的實(shí)現(xiàn)。人機(jī)界面是集成各種應(yīng)用程序模塊的平臺(tái),設(shè)計(jì)一個(gè)界面簡(jiǎn)潔,操控方便的人機(jī)界面,是構(gòu)建開(kāi)放式數(shù)控系統(tǒng)的重要內(nèi)容。本文介紹采用C++Builder編程語(yǔ)言構(gòu)建基于固高GT400-SV型運(yùn)動(dòng)控制器的開(kāi)放式數(shù)控系統(tǒng)人機(jī)界面的實(shí)現(xiàn)方法。

    1 界面顯示方案選擇

      在界面的設(shè)計(jì)初期,擬訂了兩種界面顯示方案:多窗口模式和窗口分頁(yè)顯示模式。

      在多窗口模式下,將每一個(gè)功能模塊設(shè)計(jì)在一個(gè)功能子窗口上。即先設(shè)計(jì)一個(gè)主窗口,在主窗口下分設(shè)多個(gè)子窗口來(lái)作為各個(gè)功能模塊的接口。但這種模式的界面整體性不夠好,每需要一種功能時(shí)必須得激活相應(yīng)窗口,其他窗口會(huì)被隱藏起來(lái),而這種隱藏會(huì)使各個(gè)功能窗口混到一起,當(dāng)需要激活某一特定功能時(shí),無(wú)法確認(rèn)所要打開(kāi)的窗口。

      單一窗口分頁(yè)顯示模式是在一個(gè)主窗口上設(shè)計(jì)出多個(gè)分頁(yè),將特定的功能模塊設(shè)計(jì)在相應(yīng)的分頁(yè)上,這樣每個(gè)分頁(yè)在主窗口上都有確定的位置。這種顯示方式能夠很方便地在各個(gè)功能之間進(jìn)行切換。通過(guò)兩種方案的對(duì)比,決定采用第二種方案。

    2 界面設(shè)計(jì)與文件銜接

      界面設(shè)計(jì)與文件的銜接是界面設(shè)計(jì)的重點(diǎn)。下面針對(duì)具有代表性的模塊論述銜接過(guò)程。在同一類(lèi)功能當(dāng)中,設(shè)計(jì)思想是一樣的,不同的只是所響應(yīng)的事件不同而已。

      2.1 主程序文件與程序編輯器

      設(shè)計(jì)程序編輯器是為了讓主程序文件當(dāng)中的函數(shù)能夠讀取和編輯程序編輯器當(dāng)中的代碼。通過(guò)以下函數(shù)來(lái)實(shí)現(xiàn)其銜接:

      (1)Dword CallbackThreadFunc(void* ptr)

      這個(gè)函數(shù)是一個(gè)線程回調(diào)函數(shù),函數(shù)體實(shí)現(xiàn)的功能跟一般的函數(shù)類(lèi)似,唯一不同的是這種函數(shù)只能夠用于多線程,只能由某一線程調(diào)用。當(dāng)一個(gè)線程建立起來(lái)后,它必須調(diào)用某一個(gè)線程函數(shù)才能夠完成某一特定功能。例如在程序設(shè)計(jì)中,通過(guò)建立一個(gè)線程來(lái)執(zhí)行G代碼轉(zhuǎn)換,這個(gè)線程的作用是從編輯器讀取G代碼,經(jīng)過(guò)相應(yīng)的轉(zhuǎn)換,再調(diào)用GT400基本功能函數(shù)。由于C++Builder中的RichEdit編輯器控件本身的功能就很完善,所以只要一條原代碼,就完成了從編輯器中讀取G代碼的功能。原代碼是: pedit=Form1->RichEdit1->Lines->GetText();

      (2)void _fastcallTForm1:: SetFileName(constAn-siString FileName)

      這個(gè)函數(shù)完成的功能是為編輯器當(dāng)中所編輯的未命名或重命名文件設(shè)定文件名并在標(biāo)題欄顯示出來(lái)。這個(gè)函數(shù)與界面的關(guān)系,可以從整條語(yǔ)句看出:TForm1是一個(gè)窗體類(lèi),而Form1為控制界面的主窗體,因而它屬于主窗體文件,要連接到界面還須配合界面的相應(yīng)功能按鈕。

      (3)void _fastcallTForm1::CheckFileSave(void)

      這個(gè)函數(shù)檢查G代碼是否被修改過(guò),如果被修改過(guò)則在文件關(guān)閉或進(jìn)行一些其他操作時(shí),提示是否要對(duì)當(dāng)前文件進(jìn)行存儲(chǔ)。這個(gè)函數(shù)可以由其它函數(shù)調(diào)用,也可以響應(yīng)界面編輯按鈕來(lái)完成對(duì)G代碼文件的檢驗(yàn)。

      (4)TTextAttributes* _ fastcall TForm1:: CurrText(void)

      這個(gè)函數(shù)從編輯器中返回所選擇字體的屬性。這些函數(shù)完成了編輯器與主程序的連接,是界面和G代碼轉(zhuǎn)換的橋梁。

      2.2 界面功能按鈕與響應(yīng)事件的銜接

      在控制界面當(dāng)中,功能按鈕大致可以分為三類(lèi):第一類(lèi)是主菜單底下的子菜單按鈕;第二類(lèi)是工具欄中的快捷按鈕;第三類(lèi)是界面上的其它功能按鈕。這三類(lèi)按鈕是程序與界面銜接的重要部分,現(xiàn)以第一類(lèi)按鈕當(dāng)中存儲(chǔ)子菜單為例說(shuō)明銜接過(guò)程:

      在完成菜單項(xiàng)的界面設(shè)計(jì)之后,先在集成開(kāi)發(fā)環(huán)境當(dāng)中單擊存儲(chǔ)子菜單按鈕,則在主程序文件當(dāng)中會(huì)自動(dòng)生成這樣一個(gè)函數(shù):

      void __fastcallTForm1::N7Click(TObject* Sender)  {  }

      由于沒(méi)有響應(yīng)事件,在編譯運(yùn)行后點(diǎn)擊該子菜單時(shí),系統(tǒng)不做任何響應(yīng)。然后在響應(yīng)函數(shù)當(dāng)中添加如下實(shí)體,以便完成存儲(chǔ)功能:

      void __fastcallTForm1::N7Click(TObject* Sender)  {  if(! strcmp(FFileName. c_str(), "未命名")); //判斷G  代碼文件是否命名  { if(SaveDialog1->Execute()); //沒(méi)有命名,打開(kāi)存儲(chǔ)  文件對(duì)話框   { RichEdit1->Lines->SaveToFile(SaveDialog1->  FileName); //存儲(chǔ)文件 SetFileName(SaveDialog1->FileName); //在文件標(biāo)題上顯示   RichEdit1->Modified=false; //復(fù)位文件修改標(biāo)志   }   }  else //如果文件已命名則直接存儲(chǔ)  {  RichEdit1->Lines->SaveToFile(FFileName);  RichEdit1->Modified=false;  }  }

      這樣,程序運(yùn)行之后點(diǎn)擊存儲(chǔ)按鈕,就可完成將編輯器當(dāng)中的G代碼存儲(chǔ)起來(lái)。

      第二類(lèi)是工具欄上的快捷工具按鈕,而在子菜單當(dāng)中又都能夠找到它們的響應(yīng)按鈕,所以可以直接將它們與各個(gè)相應(yīng)子菜單按鈕銜接,這樣就不用在它們的函數(shù)當(dāng)中添加同樣的函數(shù)體以省去寫(xiě)原代碼的麻煩。仍以存儲(chǔ)按鈕為例,通過(guò)兩種方法來(lái)實(shí)現(xiàn)兩個(gè)按鈕的銜接:

      (1)在集成開(kāi)發(fā)環(huán)境當(dāng)中的界面工具欄上選中存儲(chǔ)按鈕(假設(shè)界面已設(shè)計(jì)好),在左邊控件屬性欄中點(diǎn)擊even,t再點(diǎn)擊Onclick右邊的框子,在下拉菜單中選相應(yīng)按鈕名稱(chēng)即可完成銜接。

      (2)在集成開(kāi)發(fā)環(huán)境當(dāng)中的界面工具欄上雙擊存儲(chǔ)按鈕,在主程序文件當(dāng)中會(huì)自動(dòng)生成如下響應(yīng)函數(shù):

      void __fastcallTForm1::ToolButton1Click(TObject* Sender)  {  }  在函數(shù)體中添加如下代碼即可完成兩個(gè)按鈕之間的銜接:

      void __fastcallTForm1::ToolButton1Click(TObject* Sender)  {  N7Click(Sender);  }

      由于設(shè)計(jì)思路一樣,對(duì)其他按鈕的銜接問(wèn)題不再贅述。

      2.3 界面參數(shù)的讀入

      在控制界面上讀入各種控制參數(shù),才能建立起系統(tǒng)的運(yùn)行環(huán)境。界面參數(shù)輸入一般通過(guò)Edit和Com-boBox等控件來(lái)實(shí)現(xiàn)。

      如圖1所示為設(shè)定系統(tǒng)周期的輸入框,通過(guò)下面函數(shù),可將輸入框中的各個(gè)參數(shù)輸入系統(tǒng):

      void ZhouqiSet()  {   short rtn;   tm=StrToFloat(Form1->cbotm->Text);   lmt=StrToFloat(Form1->cbolmt->Text);   enc=StrToFloat(Form1->cboenc->Text);   .  }

      圖中三個(gè)輸入框都是ComboBox控件,從上到下被命名為cbotm、cbolmt、cboenc。系統(tǒng)伺服周期通過(guò)Form1->cbotm->Text語(yǔ)句讀入,此語(yǔ)句在功能上相當(dāng)于一個(gè)指針,對(duì)應(yīng)地址當(dāng)中的內(nèi)容就是向輸入框當(dāng)中輸入的數(shù)字,這時(shí)參數(shù)的類(lèi)型為String而不是整形或浮點(diǎn)型,因而需要進(jìn)行轉(zhuǎn)換后再賦予相應(yīng)變量,以便系統(tǒng)函數(shù)調(diào)用。轉(zhuǎn)換的數(shù)據(jù)類(lèi)型通過(guò)這樣的語(yǔ)句實(shí)現(xiàn): tm=StrToFloat(Form1->cbotm->Text),這句將周期輸入框中的輸入?yún)?shù)轉(zhuǎn)換成浮點(diǎn)型,再賦予周期變量。

      Edit控件的讀入原理跟ComboBox一樣。

      2.4 界面參數(shù)的輸出

      在程序設(shè)計(jì)中,用到的數(shù)據(jù)輸出控件主要有Lable控件、PaintBox控件及狀態(tài)條StatusBar控件。PaintBox控件的使用與圖形顯示有關(guān),而Lable控件是一個(gè)標(biāo)簽控件,它可以用于在界面上標(biāo)示各種輸入輸出框的作用,也可以直接用于輸出某一數(shù)據(jù),在設(shè)計(jì)中,除了利用這個(gè)控件來(lái)標(biāo)示各種輸入框外,還用于輸出X軸和Y軸的位置坐標(biāo)。以顯示運(yùn)行軌跡界面X、Y位置坐標(biāo)為例,論述其輸出過(guò)程。

      首先,訪問(wèn)GT400運(yùn)動(dòng)控制器的位置寄存器。訪問(wèn)函數(shù)為: shortGT_GetAtlPos(long* Apos);這個(gè)函數(shù)返回各坐標(biāo)的位置數(shù)據(jù),以便實(shí)現(xiàn)必要的位置數(shù)據(jù)輸出和圖形顯示。位置坐標(biāo)的讀回代碼為:

      EnterCriticalSection(&Sect1); //多線程中初始化臨界區(qū)域  rtn=GT_Axis(1); error(rtn);  rtn=GT_GetAtlPos(&actl_xpos); error(rtn); //讀回X位置值,放到變量actl_xpos中  rtn=GT_Axis(3); error(rtn);  rtn=GT_GetAtlPos(&actl_ypos); error(rtn); //讀回Y位置值,放到變量actl_ypos中  LeaveCriticalSection(&Sect1); //釋放臨界區(qū)然后,在界面上顯示坐標(biāo)位置:  Form1->xpos->Caption=" " +IntToStr(actl_xpos); //  將X軸的位置值向運(yùn)行軌跡分頁(yè)的X軸標(biāo)簽處輸出  Form1->StatusBar1->Panels->Items[1] ->Text="  X: "+IntToStr(actl_xpos); //將X位置值向控制界面的狀態(tài)欄輸出  Form1->ypos->Caption=" " + IntToStr( actl_ypos);  //將Y軸的位置值向運(yùn)行軌跡分頁(yè)的Y軸標(biāo)簽處輸出  Form1->StatusBar1->Panels->Items[2] ->Text="  Y: "+IntToStr(actl_ypos); //將Y位置值向控制界面的狀態(tài)欄輸出

      第一句涉及到多線程當(dāng)中對(duì)公共變量的訪問(wèn)問(wèn)題。為了避免在多線程中因?yàn)橥瑫r(shí)訪問(wèn)公共數(shù)據(jù)塊而造成不良后果,需要對(duì)公共數(shù)據(jù)塊進(jìn)行保護(hù),直到一個(gè)線程對(duì)它的訪問(wèn)結(jié)束為止,在設(shè)計(jì)中調(diào)用的是W in32的API函數(shù)進(jìn)行臨界區(qū)域的劃定,即EnterCriticalSec-tion(&Sect1)和LeaveCriticalSection(&Sect1)。設(shè)定臨界區(qū)域后就可以保證一次只有一個(gè)線程對(duì)該區(qū)域進(jìn)行訪問(wèn),而不會(huì)引起數(shù)據(jù)訪問(wèn)的沖突。

    3 軌跡顯示設(shè)計(jì)過(guò)程

      分的執(zhí)行代碼包含在Display. cpp程序文件當(dāng)中。運(yùn)行軌跡界面設(shè)計(jì)成其被激活時(shí)才顯示軌跡,其它界面被激活時(shí)不顯示。運(yùn)動(dòng)軌跡顯示的坐標(biāo)軸采用紅色,運(yùn)行G00時(shí)運(yùn)動(dòng)軌跡采用黃色,其它軌跡采用藍(lán)色。設(shè)計(jì)中用到C++Builder中的兩個(gè)控件:一個(gè)是Standard組件當(dāng)中的GroupBox控件,它用來(lái)標(biāo)記出軌跡顯示的邊界;另一個(gè)是System組件當(dāng)中的PaintBox控件,即圖形顯示控件,它能夠在窗體上指定形成一個(gè)Canvas對(duì)象的繪圖區(qū)域,通過(guò)這個(gè)繪圖區(qū)域可以實(shí)現(xiàn)運(yùn)動(dòng)軌跡的實(shí)時(shí)顯示。實(shí)現(xiàn)步驟分為兩步:

      (1)在窗體初始化時(shí)先畫(huà)出坐標(biāo)軸,它通過(guò)Dis-play. cpp程序文件當(dāng)中的void Coordinate()函數(shù)實(shí)現(xiàn);

      (2)當(dāng)程序運(yùn)行時(shí),通過(guò)位置讀回函數(shù)GT_GetAt-lPos(double)不斷讀回坐標(biāo)位置值,并將其映射到坐標(biāo)軸中去,再利用定時(shí)器快速刷新坐標(biāo)值,而每一個(gè)坐標(biāo)值勾畫(huà)一段小直線,這樣無(wú)數(shù)段小直線便勾畫(huà)出各種運(yùn)動(dòng)軌跡。該部分的功能通過(guò)Display. cpp程序文件當(dāng)中的void Display ()函數(shù)來(lái)實(shí)現(xiàn)。

    4 結(jié)束語(yǔ)

      初步完成了以固高GT400-SV運(yùn)動(dòng)控制器構(gòu)建的開(kāi)放式數(shù)控系統(tǒng)人機(jī)界面部分的設(shè)計(jì)。通過(guò)調(diào)試證明,所設(shè)計(jì)的人機(jī)界面滿足兩坐標(biāo)數(shù)控系統(tǒng)的要求。此界面包括了常用的菜單欄、工具欄、界面顯示欄等。設(shè)計(jì)方法和過(guò)程對(duì)構(gòu)建基于運(yùn)動(dòng)控制器的開(kāi)放式數(shù)控系統(tǒng)人機(jī)界面具有一定的通用性。設(shè)計(jì)中對(duì)界面作了相應(yīng)地優(yōu)化,去掉了那些具有重復(fù)功能的按鈕,并使菜單欄和工具欄中的按鈕只有在編程界面上有效,而在其它界面上無(wú)效,提高了系統(tǒng)的可靠性。

    (審核編輯: 智匯張瑜)

    聲明:除特別說(shuō)明之外,新聞內(nèi)容及圖片均來(lái)自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請(qǐng)聯(lián)系我們刪除。

    主站蜘蛛池模板: 免费的动态思维导图软件,脑图大师,思维导图制作软件 - 万彩脑图大师官网 | 扬州市检测仪器科技有限公司 | 上海云屹国际快递-承接化工品_液体_粉末_化妆品_食品_锂电池等国际快递业务 | 全自动高速点胶机,锡膏喷印机系列,点胶阀核心配件厂家-博宁 | 水热反应釜厂家_水热反应釜价格_水热合成反应釜批发-仪贝尔仪器 - 水热釜,水热反应釜,水热反应釜厂家,水热反应釜价格,水热反应釜型号,水热反应釜内衬,水热反应釜25ml,水热反应釜50ml,水热反应釜100ml,水热合成反应釜 | 银龙制冷—北京冷库工程建设安装公司!【20年专业制冷】 | 模具|数控加工-车床加工-精密数控铣床-东莞市方菱精密模具有限公司专注零件及模具加工 | 水热反应釜厂家_水热反应釜价格_水热合成反应釜批发-仪贝尔仪器 - 水热釜,水热反应釜,水热反应釜厂家,水热反应釜价格,水热反应釜型号,水热反应釜内衬,水热反应釜25ml,水热反应釜50ml,水热反应釜100ml,水热合成反应釜 | 太原重卡叔叔运输有限公司-山西太原大件运输、太原物流公司、太原货运物流、太原大件运输、太原货运信息、长治物流公司、长治大件运输、晋城物流公司、晋城大件运输、忻州大件运输、朔州大件运输、阳泉大件运输、大同大件运输、吕梁大件运输、临汾大件运输、运城大件运城 | 交通标志牌-交通标牌-铝圆牌-铝三角片-铝滑槽-公路警示指示牌-方牌-高速道路反光牌毛坯-交通设施安全警示标识牌-路名指示限速限高牌-厂家加工交通标牌铝板半成品毛坯-上海吕盟铝业有限公司 | 滑动轴承_无油自润滑轴承_复合干式_含油铜套_石墨铜套-嘉善盛元自润滑轴承厂 | 山东装卸登车桥_液压装卸升降平台_固定|移动登车桥_山东牛斗重工厂家 | 聚氨酯碰头,聚氨酯托辊,聚氨酯地辊/地滚轮/地轮/托绳轮-济宁卓力聚氨酯制品有限公司 | 辽宁大卯新能源供热设备制造有限公司官方网站,大卯新能源,大卯新能源供热设备 | 色差宝ColorReader「3nh三恩时」专业版色差宝APP | 武汉印刷厂_为企业提供宣传单页彩页印刷_武汉折页印刷_海报设计印刷与制作 - 武汉泽雅印刷公司 | 上海汽车音响_上海汽车隔音降噪_上海汽车音响改装店_上海音豪 | 陕西筱润智能科技有限公司 干部人事智能档案柜 智能密集架 智能档案柜 部队选层文件智能柜 智能枪弹柜 财务智能档案柜 边防武警智能密集架 医院智能档案柜 部队选层文件智能柜智能枪弹柜 学校医院文件柜 企事业单位公检法智能文件柜 生产厂家-筱润智能科技有限公司 RFID射频智能密集架 全自动智能选层档案柜 智能密保柜 枪柜部队营房营具床桌椅办公家具 办公用品档案盒设备货架 全自动智能选层柜生产厂家-筱润智能科技有限公司 | 振动给料机_电磁振动给料机_振动给料机厂家-新乡市大汉振动机械有限公司 | 企业旺旺-qy55.com| 西安汉信丨条码打印机,条码扫码枪,条码标签,条码仓库管理系统专业供应商 | 四边封包装机_蒸汽眼罩机_暖宝宝/足贴/热灸贴生产设备_浙江硕源机械有限公司 | 优质课网_收录全国及各省市最新优质课视频,说课视频,名师课例课堂实录,高效课堂教学视频,观摩展示公开示范优秀课视频,教学大赛视频! | 石牌坊价格_石雕农村门楼图片_石牌楼雕刻制作 _ 长城石雕 | 家用座椅电梯 斜挂升降平台 无障碍升降机 残疾人升降机的生产厂家超易达机械 | 宁波公司注册_宁波注册公司_宁波代理记账_宁波做内账|安隆会计专业服务机构 | 学校洗碗机-郑州洗碗机厂家-商用洗碗机-郑州旭申环保科技有限公司 | 呼吸家官网|肺功能检测仪生产厂家|国产肺功能仪知名品牌|肺功能检测仪|肺功能测试仪|婴幼儿肺功能仪|弥散残气肺功能仪|肺功能测试系统|广州红象医疗科技有限公司|便携式肺功能仪|大肺功能仪|呼吸康复一体机|儿童肺功能仪|肺活量计|医用简易肺功能仪|呼吸康复系统|肺功能仪|弥散肺功能仪(大肺)|便携式肺功能检测仪|肺康复|呼吸肌力测定肺功能仪|肺功能测定仪|呼吸神经肌肉刺激仪|便携式肺功能 | 苏州交通设施_道路划线_停车场划线_厂区划线_环氧地坪厂家-推荐【飞扬市政交通设施公司】专注交通设施8年! | 深圳市碧源达科技有限公司 | 天津市金色巨腾科技发展有限公司-天津监控安装,天津弱电工程,天津无线网络覆盖 | 商城网站建设_商城系统_响应式商城_小程序商城_FwShop | 文轩热能_水冷板散热器热设计热管理系统_铝型材铲齿摩擦焊热管_散热片散热板生产加工厂家 | 上海航空货运,上海空运,东方航空快递,机场物流,航空快运,上海东方航空托运公司 | 新乡市矿山起重机制造有限公司 | 射频导纳物位开关|雷达液位计|安全光栅光幕传感器|音叉料位开关|两级跑偏开关|双向拉绳开关|纵向撕裂保护装置-山东卓信机械有限公司 | 铸铁平台-焊接平台-划线平台-三维焊接平台厂家-泊头市溪海冶金机械设备有限公司 | 上海先顶仪器设备有限公司-国产氮气发生器-进口氮气发生器 | 紫铜箔(带)导电胶带定做,定做紫铜箔(带)导电胶带厂家[价格]-艾飞敏铜箔 | 途远VR+_成都VR全景制作_成都360全景漫游_成都720全景航拍_成都途远科技有限公司 | 深圳蓝枫印刷_画册印刷_彩页印刷_宣传册印刷_包装盒印刷_彩盒印刷厂_不干胶印刷厂 |