亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于LabView 的分揀機(jī)器人控制軟件設(shè)計(jì)

        2022-12-05 12:19:18陸鑫焱楊洪濤
        科學(xué)技術(shù)創(chuàng)新 2022年35期
        關(guān)鍵詞:字符串狀態(tài)機(jī)右鍵

        陸鑫焱,楊洪濤*

        (1. 遼寧科技大學(xué) 電子與信息工程學(xué)院,遼寧 鞍山 114051;2.遼寧科技大學(xué) 創(chuàng)新創(chuàng)業(yè)學(xué)院,遼寧 鞍山 114051)

        1 項(xiàng)目任務(wù)

        本設(shè)計(jì)是一種基于LabView 的分揀機(jī)器人控制軟件,應(yīng)用虛擬儀器技術(shù)LabView 軟件中的數(shù)組操作、字符串操作、事件程序、狀態(tài)機(jī)及I/O 文件存儲(chǔ)等工具,采用狀態(tài)機(jī)實(shí)現(xiàn)串口的初始化、等待、數(shù)據(jù)操作和退出4 種狀態(tài),并分別對(duì)應(yīng)不同的事件程序?qū)崿F(xiàn)串口通訊控制分揀機(jī)器人,應(yīng)用字符串操作截取輸入命令行中的電機(jī)序號(hào)和轉(zhuǎn)角等信息傳輸給數(shù)組元素顯示,對(duì)調(diào)試好的命令行進(jìn)行I/O 文件存儲(chǔ)等操作[1-2]。

        2 總體設(shè)計(jì)方案

        本設(shè)計(jì)采用虛擬儀器技術(shù),通過(guò)串口通信和I/O文件存儲(chǔ)等操作,快速實(shí)現(xiàn)分揀機(jī)器人控制軟件。串口通信是一種傳輸數(shù)據(jù)的通訊方式,該通信方式電路簡(jiǎn)單易于部署,穩(wěn)定性高且通信成本低,適合用于分揀機(jī)器人的控制[3-4]。軟件的總體設(shè)計(jì)見(jiàn)圖1。

        圖1 總體設(shè)計(jì)圖

        3 軟件設(shè)計(jì)實(shí)現(xiàn)

        3.1 通信模塊設(shè)計(jì)

        首先進(jìn)行通信模塊的設(shè)計(jì),通過(guò)串口傳輸和接收數(shù)據(jù)實(shí)現(xiàn)軟件與分揀機(jī)器人的通信[5]。創(chuàng)建一個(gè)VI 并切換到程序框圖界面,與串口相關(guān)的函數(shù)位于函數(shù)→儀器I/O→串口函數(shù)庫(kù)中。在虛擬儀器技術(shù)LabView軟件中,串口發(fā)送一次數(shù)據(jù)的過(guò)程為:應(yīng)用Configure Port 函數(shù)打開(kāi)串口,應(yīng)用Write 函數(shù)發(fā)送數(shù)據(jù)和應(yīng)用Close 函數(shù)關(guān)閉串口,實(shí)現(xiàn)過(guò)程如下:

        (1) 切換到程序框圖,選擇函數(shù)→編程→結(jié)構(gòu)→while 循環(huán),完成循環(huán)結(jié)構(gòu)添加,在循環(huán)條件按鈕上點(diǎn)擊右鍵選擇創(chuàng)建輸入控件,生成停止按鈕。

        (2) 選擇函數(shù)→編程→結(jié)構(gòu)→事件結(jié)構(gòu),在while 循環(huán)中放置事件結(jié)構(gòu)。

        (3) 切換到前面板,選擇控件→布爾→確定按鈕→修改標(biāo)簽為serial_open,添加打開(kāi)串口的按鈕。

        (4) 切換到程序框圖,在事件結(jié)構(gòu)中添加事件分支,在[0]超時(shí)處→右鍵→添加事件分支→事件源選擇serial_open。

        (5) 將serial_open 按鈕放入事件結(jié)構(gòu)[1]“serial_open”值改變分支中。

        (6) 在事件結(jié)構(gòu)[1]“serial_open”值改變分支中依次添加,函數(shù)→儀器I/O→串口→VISA 配置串口;在控件的資源名稱接口→右鍵→創(chuàng)建→輸入控件;函數(shù)→編程→簇→解除綁定;函數(shù)→編程→布爾→非;函數(shù)→編程→結(jié)構(gòu)→條件結(jié)構(gòu);在其條件假中添加單按鈕對(duì)話框。

        (7) 切換到前面板中添加串口狀態(tài)顯示燈,選擇控件→布爾→圓形指示燈→修改標(biāo)簽為serial_state。

        (8) 繼續(xù)進(jìn)行細(xì)節(jié)完善,切換到前面板選擇serial_open 按鈕→右鍵→屬性→選擇多字符串顯示→設(shè)置打開(kāi)(close)、關(guān)時(shí)(open);serial_open 按鈕→右鍵→機(jī)械動(dòng)作→單擊時(shí)轉(zhuǎn)換。

        (9) 切換到程序框圖事件結(jié)構(gòu)中添加條件結(jié)構(gòu),選擇函數(shù)→編程→結(jié)構(gòu)→條件結(jié)構(gòu),連接serial_open 按鈕,判決按鍵的狀態(tài)執(zhí)行不同的條件結(jié)構(gòu)。

        (10) 在條件結(jié)構(gòu)為假的框圖中添加關(guān)閉串口的程序,選擇函數(shù)→儀器I/O→串口→VISA 關(guān)閉。

        (11) 返回到條件框圖真,在輸入控件VISA resourse name→右鍵→創(chuàng)建→局部變量,把創(chuàng)建的局部變量右鍵轉(zhuǎn)換為輸入,連接到VISA 關(guān)閉上。同樣把serial_state 狀態(tài)燈創(chuàng)建局部變量拖動(dòng)到條件結(jié)構(gòu)為假的框圖中。通信模塊設(shè)計(jì)見(jiàn)圖2。

        圖2 通信模塊設(shè)計(jì)圖

        3.2 狀態(tài)機(jī)模塊設(shè)計(jì)

        軟件設(shè)計(jì)一般包括初始化、等待命令、執(zhí)行事件等功能,這些功能通過(guò)狀態(tài)機(jī)來(lái)統(tǒng)籌設(shè)計(jì)完成。實(shí)現(xiàn)過(guò)程:

        (1) 切換到前面板,選擇控件→下拉列表與枚舉→枚舉,新建一個(gè)枚舉后,在枚舉上右鍵→制作自定義類型,然后再右鍵→打開(kāi)自定義類型并作為控件保存為狀態(tài)機(jī).ctl,這個(gè)狀態(tài)機(jī)可以像控件一樣拖動(dòng)到程序中使用。

        (2) 在打開(kāi)的狀態(tài)機(jī)上→右鍵→編輯項(xiàng),插入Init、Wait、Get Data、Exit 四項(xiàng)。

        (3) 將制作的狀態(tài)機(jī)拖動(dòng)到程序框圖界面,連接到while 循環(huán)上,并在連接點(diǎn)循環(huán)隧道上→右鍵→替換為移位寄存器,while 循環(huán)內(nèi)增加一個(gè)條件結(jié)構(gòu),將移位寄存器連接到條件結(jié)構(gòu)的分支選擇器用來(lái)讀取while 循環(huán)傳遞過(guò)來(lái)的狀態(tài)機(jī)中的值,在條件結(jié)構(gòu)的選擇器標(biāo)簽上→右鍵→為每個(gè)值添加分支建立標(biāo)簽。While 循環(huán)每執(zhí)行一次,讀取移位寄存器的值,下次循環(huán)用上次循環(huán)讀進(jìn)來(lái)的值。

        3.3 初始化模塊設(shè)計(jì)

        設(shè)置條件結(jié)構(gòu)的選擇器標(biāo)簽為“Init”,將按鈕、狀態(tài)燈的初始化程序放入條件結(jié)構(gòu)中,選擇編程→字符串→空字符串常量賦值給read_buffer 清空顯示控件窗口,同樣清空write_buffer 輸入控件窗口,復(fù)制狀態(tài)機(jī)設(shè)置為Wait 狀態(tài)連接到移位寄存器。

        3.4 待機(jī)模塊設(shè)計(jì)

        (1) 在串口打開(kāi)失敗條件結(jié)構(gòu)中,增加狀態(tài)機(jī)并調(diào)整 為Wait 連接到移位寄存器。

        (2) 在串口打開(kāi)成功(真)條件結(jié)構(gòu)中增加狀態(tài)機(jī)調(diào)整為GetData 連接到移位寄存器。

        (3) 在關(guān)閉窗口條件結(jié)構(gòu)中,增加狀態(tài)機(jī)調(diào)整為Wait 連接到移位寄存器,在事件結(jié)構(gòu)中選擇器標(biāo)簽為[0]超時(shí)分支中,創(chuàng)建串口狀態(tài)局部變量和條件結(jié)構(gòu),檢測(cè)串口是否成功打開(kāi),如果打開(kāi)成功則轉(zhuǎn)到GetDate 狀態(tài),如果打開(kāi)失敗則轉(zhuǎn)到Wait 狀態(tài)。

        3.5 數(shù)據(jù)接收模塊設(shè)計(jì)

        在條件結(jié)構(gòu)接收數(shù)據(jù)GetData 程序框圖中,如果串口傳過(guò)來(lái)的數(shù)據(jù)不為0,則執(zhí)行條件結(jié)構(gòu)的“真”分支程序,將串口中的數(shù)據(jù)和字節(jié)總數(shù)傳輸給VISA 讀取控件,創(chuàng)建VISA 讀取控件的局部變量(其中存儲(chǔ)原有數(shù)據(jù))與新讀取的緩沖數(shù)據(jù)通過(guò)字符串連接控件連接后,傳輸給字符串顯示控件,狀態(tài)機(jī)Wait 狀態(tài)賦值給while 循環(huán)。程序運(yùn)行后實(shí)現(xiàn)接收數(shù)據(jù),見(jiàn)圖3。

        圖3 數(shù)據(jù)接收模塊設(shè)計(jì)圖

        3.6 數(shù)據(jù)發(fā)送模塊設(shè)計(jì)

        (1) 在前面板增加發(fā)送按鈕send,在程序框圖事件結(jié)構(gòu)中增加[2]“send”值改變選擇器標(biāo)簽,當(dāng)串口狀態(tài)為真時(shí),將在寫(xiě)入控件write buffer 中輸入的字符串傳輸給VISA 寫(xiě)入控件,控制電機(jī)運(yùn)動(dòng)的字符串命令行格式為“電機(jī)序號(hào)”+“/”+“電機(jī)轉(zhuǎn)角”,實(shí)現(xiàn)串口發(fā)送。

        (2) 進(jìn)行字符串操作,將寫(xiě)入控件write buffer中輸入的字符串命令行傳輸給字符串匹配模式控件,按照字符“/”截取出字符串命令行前端的電機(jī)序號(hào)用于控制相應(yīng)位置的狀態(tài)顯示燈亮滅,截取出字符串命令行前端的電機(jī)轉(zhuǎn)角數(shù)值顯示在相應(yīng)的數(shù)組元素,顯示電機(jī)目前的轉(zhuǎn)角;執(zhí)行操作后將狀態(tài)機(jī)GetData 狀態(tài)傳輸給while 循環(huán)。

        (3) 當(dāng)串口狀態(tài)為假時(shí),執(zhí)行“請(qǐng)打開(kāi)串口”按鍵對(duì)話框,并將狀態(tài)機(jī)Wait 狀態(tài)傳輸給while 循環(huán)。

        (4) 進(jìn)一步完善端口打開(kāi)模塊,在前面板增加波特率下拉菜單,右鍵→下拉列表→菜單下拉列表,右鍵→編輯項(xiàng),去掉有序值勾選框,修改數(shù)據(jù)類型表示法為U64,在編輯項(xiàng)增加9600、115200 等波特率選項(xiàng),見(jiàn)圖4。

        圖4 數(shù)據(jù)發(fā)送模塊設(shè)計(jì)圖

        4 軟件測(cè)試

        4.1 軟件環(huán)境應(yīng)用測(cè)試

        該設(shè)計(jì)完整實(shí)現(xiàn)了項(xiàng)目任務(wù)的各項(xiàng)要求和目標(biāo)設(shè)定,測(cè)試過(guò)程如下:

        (1) 使用虛擬串口軟件虛擬出兩個(gè)tw 串口,使用串口調(diào)試助手打開(kāi)com1,使用本分揀機(jī)器人控制軟件打開(kāi)com2,狀態(tài)燈點(diǎn)亮成功。

        (2) 使用串口調(diào)試助手發(fā)送字符串“hello mainmotor!”,使用本設(shè)計(jì)發(fā)送字符串“3/1500”,雙方收發(fā)成功,表明串口通信功能測(cè)試成功,程序中的狀態(tài)機(jī)和事件結(jié)構(gòu)設(shè)計(jì)和運(yùn)行正確。

        (3) 第三個(gè)顯示電機(jī)運(yùn)行狀態(tài)的指示燈點(diǎn)亮,第三個(gè)顯示電機(jī)轉(zhuǎn)角的數(shù)組顯示“1500”,表明程序該項(xiàng)功能測(cè)試成功,字符串操作和數(shù)組操作設(shè)計(jì)和運(yùn)行正確。

        (4) 點(diǎn)擊“save”按鈕存儲(chǔ)write_buffer 中的字符串命令行到文件中,再點(diǎn)擊“open_txt”按鈕打開(kāi)該文件,內(nèi)容在txt_show 中正確顯示,表明本程序的I/O 文件功能測(cè)試成功。

        4.2 硬件環(huán)境應(yīng)用測(cè)試

        采用Arduino 開(kāi)發(fā)板作為控制板通過(guò)USB 串口連接到電腦,應(yīng)用2 個(gè)TBS-K20 舵機(jī),1 個(gè)TBSNK15 舵機(jī),3 個(gè)42 行星減速步進(jìn)電機(jī),2 個(gè)DSP 數(shù)字式步進(jìn)電機(jī)驅(qū)動(dòng)器DM542,搭建分揀機(jī)器人,構(gòu)成測(cè)試硬件環(huán)境,見(jiàn)圖5。經(jīng)過(guò)測(cè)試后達(dá)到同軟件測(cè)試相同的效果,測(cè)試數(shù)據(jù)見(jiàn)表1。

        表1 硬件環(huán)境測(cè)試數(shù)據(jù)

        圖5 硬件環(huán)境測(cè)試

        5 結(jié)論

        本文采用虛擬儀器技術(shù)的LabView 軟件設(shè)計(jì)工具,快速實(shí)現(xiàn)了分揀機(jī)器人的控制軟件,實(shí)現(xiàn)了物品抓取、分揀和工作流程數(shù)據(jù)存儲(chǔ)等功能,經(jīng)軟件和硬件雙重環(huán)境測(cè)試,本控制軟件操作簡(jiǎn)單、運(yùn)行狀態(tài)穩(wěn)定,達(dá)到了項(xiàng)目任務(wù)書(shū)的設(shè)計(jì)要求。面對(duì)目前需求多樣化的機(jī)器人市場(chǎng),通過(guò)該方法可以快速設(shè)計(jì)出符合項(xiàng)目要求的機(jī)器人配套操作軟件,提高控制軟件質(zhì)量和項(xiàng)目研發(fā)效率。

        猜你喜歡
        字符串狀態(tài)機(jī)右鍵
        輕松整理Win10右鍵菜單
        基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
        用右鍵菜單管理右鍵菜單
        管理你的鼠標(biāo)右鍵菜單
        電腦迷(2015年1期)2015-04-29 20:00:03
        一種新的基于對(duì)稱性的字符串相似性處理算法
        依據(jù)字符串匹配的中文分詞模型研究
        一種針對(duì)Java中字符串的內(nèi)存管理方案
        FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
        基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
        基于VHDL的一個(gè)簡(jiǎn)單Mealy狀態(tài)機(jī)
        韩国无码av片在线观看网站| av有码在线一区二区三区| 东京热加勒比国产精品| 亚洲国产精品高清在线| 深夜福利啪啪片| 久久久精品456亚洲影院| 国产av日韩a∨亚洲av电影| 超清无码AV丝袜片在线观看| 视频一区二区免费在线观看| 亚洲一区二区三区中文字幕网| 国产午夜精品av一区二区麻豆 | 无码孕妇孕交在线观看| 99精品免费久久久久久久久日本 | 99re久久精品国产| 玖玖资源站无码专区| 丝袜美腿一区在线观看| 国产丝袜美腿精品91在线看| 国产又爽又黄又刺激的视频| 夜夜揉揉日日人人| 国产美女av一区二区三区| 色婷婷亚洲精品综合影院| 永久免费毛片在线播放| 99久久国产综合精品五月天| 麻豆五月婷婷| 国产蜜臀精品一区二区三区| 日韩一区二区三区久久精品 | 街拍丝袜美腿美女一区| 国产精品无码翘臀在线观看| 亚洲精品乱码久久久久久蜜桃不卡 | 国产黑色丝袜一区在线| 少妇爽到爆视频网站免费| 免费高清日本中文| 日韩精品中文字幕人妻中出| 男女做羞羞事的视频网站| 国产午夜手机精彩视频| 少妇内射高潮福利炮| 久九九久视频精品网站| 成人一区二区三区激情视频| 中文字幕在线日亚州9| 国外精品视频在线观看免费| 国产亚洲精品不卡在线|