久久精品人妻一区二区蜜桃-欧美精品人妻一区二区免费视频-久久精品免费一区二区喷潮-久久精品中文闷骚内射-精品bbw-精品久久无码中文字幕-小小水蜜桃3视频高清在线观看-日韩免费一级aaa片毛太久-欧美激情肉欲高潮无码鲁大师-欧美影片一区二区三区-亚洲精品无码av无码专区一本,波多野吉衣一区二区三区在线观看,囯精品人妻无码一区二区三区99,包哟哟在线观看免费观看

產(chǎn)品分類

當(dāng)前位置: 首頁(yè) > 工業(yè)電氣產(chǎn)品 > 端子與連接器 > 線路板連接器 > FFC連接器

類型分類:
科普知識(shí)
數(shù)據(jù)分類:
FFC連接器

機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)應(yīng)用例程(六)液位檢測(cè)

發(fā)布日期:2022-04-25 點(diǎn)擊率:76

  • 關(guān)鍵詞:正運(yùn)動(dòng)技術(shù),機(jī)器視覺,運(yùn)動(dòng)控制一體機(jī)


  • 摘要:順應(yīng)現(xiàn)代生活的不斷發(fā)展,瓶裝液體成為人們?nèi)粘I钪胁豢苫蛉钡南M(fèi)品。它的包裝中產(chǎn)品凈含量是否達(dá)標(biāo)是檢測(cè)產(chǎn)品質(zhì)量的一個(gè)重要指標(biāo),對(duì)于同一規(guī)格的包裝瓶中,其液位高度直接反映了瓶中液體的凈含量。



image.png


順應(yīng)現(xiàn)代生活的不斷發(fā)展,瓶裝液體成為人們?nèi)粘I钪胁豢苫蛉钡南M(fèi)品。它的包裝中產(chǎn)品凈含量是否達(dá)標(biāo)是檢測(cè)產(chǎn)品質(zhì)量的一個(gè)重要指標(biāo),對(duì)于同一規(guī)格的包裝瓶中,其液位高度直接反映了瓶中液體的凈含量。


在傳統(tǒng)的瓶裝液體灌裝工序中,其灌裝后的液位高度檢測(cè)通常采用的是人眼去目測(cè)液位高度,生產(chǎn)效率低下,且會(huì)產(chǎn)生較大誤差。隨著生產(chǎn)的規(guī)模的不斷擴(kuò)大,因此對(duì)瓶裝液體的液位高度全自動(dòng)檢測(cè)的需求越來(lái)越大。


目前市面上已有光電傳感器檢測(cè)、超聲波檢測(cè)和機(jī)器視覺液位檢測(cè)等液位檢測(cè)方法,其中機(jī)器視覺液位檢測(cè)是一種非接觸式、無(wú)損的檢測(cè)方法。因此它具有效率高、檢測(cè)精度高、設(shè)備維護(hù)簡(jiǎn)單等優(yōu)點(diǎn),被廣泛應(yīng)用于液位檢測(cè)項(xiàng)目中。  


本次課程我們將與大家一起分享機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)實(shí)現(xiàn)液位檢測(cè)的功能。


檢測(cè)原理


液位檢測(cè):在機(jī)器視覺解決方案中,通常使用背向打光的方式將瓶?jī)?nèi)有液體的部分和沒(méi)有液體的部分加以區(qū)分,再計(jì)算出液體最高位與瓶底的距離即液位。檢測(cè)有顏色的液體通常使用普通背光源即可,如需檢測(cè)透明液體或瓶子上有字符或顏色干擾可使用穿透性較強(qiáng)的紅外背光。


視覺算法:使用兩個(gè)直線測(cè)量器獲得瓶底和液位的數(shù)據(jù),再計(jì)算瓶底和液位的距離。使用形狀匹配結(jié)果作為直線測(cè)量器的補(bǔ)正源,使直線測(cè)量器跟隨產(chǎn)品移動(dòng)。


image.png


軟件實(shí)現(xiàn)


(一)軟件實(shí)現(xiàn)


1.打開ZDevelop軟件:打開項(xiàng)目“基于形狀匹配的視覺定位”→在“global_variable.bas”文件中定義測(cè)量尺寸需要用到的全局變量。


'----------------------------分割線-----------------------------------------


'直線1測(cè)量參數(shù)數(shù)組,依次為中心cx、cy、w、h、angle、interp、sub_num、sub_width、filter_size、thresh、polor、select,都是圖像坐標(biāo)

GLOBAL DIM d_meas_param1(12) 'd開頭表示數(shù)據(jù)結(jié)構(gòu)


'直線2測(cè)量參數(shù)數(shù)組,依次為中心cx、cy、w、h、angle、interp、sub_num、sub_width、filter_size、thresh、polor、select,都是圖像坐標(biāo)

GLOBAL DIM d_meas_param2(12) 'd開頭表示數(shù)據(jù)結(jié)構(gòu)


'定義常用顏色變量,用于繪制圖形

GLOBAL C_RED, C_GREEN, C_BLUE, C_YELLOW

C_RED   = RGB(255,  0,  0)

C_GREEN = RGB(  0,255,  0)

C_BLUE  = RGB(  0,  0,255)

C_YELLOW= RGB(255,255,  0)


'創(chuàng)建模板時(shí)保存的直線1基準(zhǔn)區(qū)域位置向量1,x、y、angle

GLOBAL DIM d_meas_base_v1(3)

d_meas_base_v1(0) = 0

d_meas_base_v1(1) = 0

d_meas_base_v1(2) = 0


'創(chuàng)建模板時(shí)保存的直線2基準(zhǔn)區(qū)域位置向量2,x、y、angle

GLOBAL DIM d_meas_base_v2(3)

d_meas_base_v2(0) = 0

d_meas_base_v2(1) = 0

d_meas_base_v2(2) = 0


'直線1測(cè)量結(jié)果,依次為結(jié)果點(diǎn)stx、sty、endx、endy

GLOBAL DIM d_meas_rst1(4)


'直線2測(cè)量結(jié)果,依次為結(jié)果點(diǎn)stx、sty、endx、endy

GLOBAL DIM d_meas_rst2(4)


''創(chuàng)建模板時(shí)保存的模板基準(zhǔn)點(diǎn),score、x、y、angle、scale

GLOBAL DIM d_match_base_rst(5)

global dim d_meas_param(12)


'定義ROI標(biāo)志變量,0-液位ROI,1-瓶底R(shí)OI

GLOBAL DIM roi_flag

roi_flag=0


'定義形狀匹配模板

ZVOBJECT shape_model


'定義保存配模板標(biāo)志,1-已保存,0未保存

GLOBAL DIM  is_saveMod

2.修改設(shè)計(jì)HMI界面。


image.png


3.新建主界面按下【液位設(shè)置】按鈕時(shí)彈出的液位參數(shù)設(shè)置窗口“Set_Select”,并設(shè)計(jì)界面布局。


image.png


4.關(guān)聯(lián)液位參數(shù)設(shè)置窗口“Set_Select”界面上的變量。


image.png


5.在“draw.bas”文件中添加“液位Roi”和“瓶底R(shí)oi”根據(jù)鼠標(biāo)操作更新ROI位置的函數(shù)以及實(shí)時(shí)繪制Roi的函數(shù),并在自定義元件中關(guān)聯(lián)刷新函數(shù)和繪制函數(shù)。


'-----------------分割線-------------------------

'測(cè)量器繪制 

'''''''''''''''''''''''''''''''''''

'根據(jù)鼠標(biāo)操作更新Roi的位置

GLOBAL SUB update_roi()

    if roi_flag=0 then '如果選擇設(shè)置液位ROI

       SET_REDRAW'全區(qū)域繪制

       if (mouse_scan(21) = 1 )then  '如果掃描到鼠標(biāo)按下操作

            '根據(jù)鼠標(biāo)所在Roi的不同位置返回調(diào)整標(biāo)志

            hit_pos = ZV_HMIADJRECT2(table(21), table(22), 11, -1) 

            is_redraw = 1'繪圖標(biāo)志置1

       endif


        if mouse_scan(21) = -1 then      '如果掃描到鼠標(biāo)松開操作

        

        '如果鼠標(biāo)指在Roi1區(qū)域之外

           if  TABLE(21)

              hit_pos=-1'調(diào)整標(biāo)志=-1

           endif

          

          ZV_HMIADJRECT2(table(21), table(22), 11, hit_pos)'調(diào)整Roi1位置

           

          is_redraw = 1

        endif

      

        if (MOUSE_state(21)) then'如果鼠標(biāo)按下時(shí)

            ZV_HMIADJRECT2(table(21), table(22), 11, hit_pos)'調(diào)整Roi1位置

            is_redraw = 1'繪圖標(biāo)志置1

        endif

      

       if (1 = is_redraw ) then'如果繪圖標(biāo)志為1時(shí)

            is_redraw = 0'繪圖標(biāo)志置0

            '將控件坐標(biāo)轉(zhuǎn)換到圖像坐標(biāo),并賦值給相應(yīng)變量

            ZV_POSTOIMG(0, 1, 11, 31)

            d_meas_param1(0) = TABLE(31)

            d_meas_param1(1) = TABLE(32)

            d_meas_param1(2) = ZV_LENTOIMG(0, TABLE(13))

            d_meas_param1(3) = ZV_LENTOIMG(0, TABLE(14))

            d_meas_param1(4) = TABLE(15)

            

            set_base_roi()'設(shè)置基準(zhǔn)Roi數(shù)據(jù)

            SET_REDRAW'全區(qū)域繪制

       endif

       

    else '否則選擇設(shè)置瓶底R(shí)OI

         SET_REDRAW'全區(qū)域繪制

         if (mouse_scan(21) = 1 )then  '如果掃描到鼠標(biāo)按下操作

              '根據(jù)鼠標(biāo)所在Roi的不同位置返回調(diào)整標(biāo)志

              hit_pos = ZV_HMIADJRECT2(table(21), table(22), 41, -1) 

              is_redraw = 1'繪圖標(biāo)志置1

         endif


         if mouse_scan(21) = -1 then      '如果掃描到鼠標(biāo)松開操作

          

            '如果鼠標(biāo)指在Roi2區(qū)域之外

            if  TABLE(21)

                hit_pos=-1'調(diào)整標(biāo)志=-1

            endif

            

            ZV_HMIADJRECT2(table(21), table(22), 41, hit_pos)'調(diào)整Roi2位置

             

            is_redraw = 1

         endif

        

         if (MOUSE_state(21)) then'如果鼠標(biāo)按下時(shí)

              ZV_HMIADJRECT2(table(21), table(22), 41, hit_pos)'調(diào)整Roi2位置

              is_redraw = 1'繪圖標(biāo)志置1

         endif

        

         if (1 = is_redraw ) then'如果繪圖標(biāo)志為1時(shí)

              is_redraw = 0'繪圖標(biāo)志置0

              '將控件坐標(biāo)轉(zhuǎn)換到圖像坐標(biāo),并賦值給相應(yīng)變量

              ZV_POSTOIMG(0, 1, 41, 91)

              d_meas_param2(0) = TABLE(91)

              d_meas_param2(1) = TABLE(92)

              d_meas_param2(2) = ZV_LENTOIMG(0, TABLE(43))

              d_meas_param2(3) = ZV_LENTOIMG(0, TABLE(44))

              d_meas_param2(4) = TABLE(45)

              

              set_base_roi()'設(shè)置基準(zhǔn)Roi數(shù)據(jù)

              SET_REDRAW'全區(qū)域繪制

         endif

    endif    

END SUB

image.png


6.在“main.bas”文件中添加“Set_Select”窗口界面按下【測(cè)試】按鈕時(shí)響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)名。


'液位設(shè)置界面按下測(cè)試按鈕時(shí)響應(yīng)的函數(shù)

GLOBAL SUB btn_mea_test()

  

    '選擇補(bǔ)正源時(shí)先執(zhí)行定位檢測(cè)

    if(TABLE(110) = 1) then

        btn_loc_test()

    endif

    

    ZVOBJECT mr1,mr2,mr3,mr4,rst1,rst2,rst3,rst4,colorImg

    ZVOBJECT contlist, tsContlist, mat_rigid

    LOCAL    show_rst

  

    '測(cè)量區(qū)域roi補(bǔ)正

    if(TABLE(110) = 1 AND d_is_creModel = 1) then      '如果使用補(bǔ)正源已經(jīng)開啟且模板已經(jīng)創(chuàng)建

       

        '計(jì)算剛性變換矩陣

        ZV_GETRIGIDVECTOR(mat_rigid1,d_match_base_rst(1),d_match_base_rst(2),d_match_base_rst(3), d_match_rst(1), d_match_rst(2), d_match_rst(3))

        

        '使用變換矩陣mat_rigid對(duì)輸入Roi1基準(zhǔn)向量進(jìn)行補(bǔ)正,補(bǔ)正后的向量存入開始索引為0的TABLE中

        ZV_VECTORCORRECT(mat_rigid1, d_meas_base_v1(0), d_meas_base_v1(1),d_meas_base_v1(2), 0)

        '將補(bǔ)正后的坐標(biāo)數(shù)據(jù)賦值給測(cè)量器區(qū)域變量

        d_meas_param1(0) = TABLE(0)

        d_meas_param1(1) = TABLE(1)

        d_meas_param1(4) = TABLE(2)

        

        '使用變換矩陣mat_rigid對(duì)輸入Roi2基準(zhǔn)向量進(jìn)行補(bǔ)正,補(bǔ)正后的向量存入開始索引為0的TABLE中

        ZV_VECTORCORRECT(mat_rigid1, d_meas_base_v2(0), d_meas_base_v2(1),d_meas_base_v2(2), 0)

        '將補(bǔ)正后的坐標(biāo)數(shù)據(jù)賦值給測(cè)量器區(qū)域變量

        d_meas_param2(0) = TABLE(0)

        d_meas_param2(1) = TABLE(1)

        d_meas_param2(4) = TABLE(2)

      

    endif  

    

    '生成直線1測(cè)量的旋轉(zhuǎn)區(qū)域

    ZV_MRGENLINE(mr1, d_meas_param1(0), d_meas_param1(1), d_meas_param1(2), d_meas_param1(3), d_meas_param1(4), 1, d_meas_param1(6), d_meas_param1(7))   

    '設(shè)置直線1的檢測(cè)參數(shù),包括濾波器尺寸,閾值,邊緣極性,邊緣位置

    ZV_MRSETADV(mr1, d_meas_param1(8), d_meas_param1(9), d_meas_param1(10), d_meas_param1(11)) 

    '生成直線2測(cè)量的旋轉(zhuǎn)區(qū)域

    ZV_MRGENLINE(mr2, d_meas_param2(0), d_meas_param2(1), d_meas_param2(2), d_meas_param2(3), d_meas_param2(4), 1, d_meas_param2(6), d_meas_param2(7))

    '設(shè)置直線2的檢測(cè)參數(shù),包括濾波器尺寸,閾值,邊緣極性,邊緣位置

    ZV_MRSETADV(mr2, d_meas_param2(8), d_meas_param2(9), d_meas_param2(10), d_meas_param2(11))

    

    '將矩形測(cè)量區(qū)域測(cè)量到的目標(biāo)直線1端點(diǎn)存儲(chǔ)到起始索引為61的TABLE

    ZV_MRLINE(mr1, grabImg, rst1, 61)

    '將直線1結(jié)果賦值給直線1結(jié)果變量

    d_meas_rst1(0) = TABLE(61)

    d_meas_rst1(1) = TABLE(62)

    d_meas_rst1(2) = TABLE(63)

    d_meas_rst1(3) = TABLE(64)

    

    '將矩形測(cè)量區(qū)域測(cè)量到的目標(biāo)直線2端點(diǎn)存儲(chǔ)到起始索引為71的TABLE

    ZV_MRLINE(mr2, grabImg, rst2, 71)

    '將直線1結(jié)果賦值給直線2結(jié)果變量

    d_meas_rst2(0) = TABLE(71)

    d_meas_rst2(1) = TABLE(72)

    d_meas_rst2(2) = TABLE(73)

    d_meas_rst2(3) = TABLE(74)

    

    '計(jì)算兩條直線的距離寬度

    length1()

  

    '將灰度圖轉(zhuǎn)換成RGB圖像,用于繪制檢測(cè)結(jié)果圖像

    ZV_GRAYTORGB(grabImg, colorImg)

    

    '繪制液位檢測(cè)和瓶底檢測(cè)的測(cè)量器

    ZV_MEASURER(colorImg,mr1,ZV_COLOR(0,0,255),ZV_COLOR (0,255,0)) 

    ZV_MEASURER(colorImg,mr2,ZV_COLOR(0,0,255),ZV_COLOR (0,255,0))

     

    '繪制直線結(jié)果

    ZV_LINE(colorImg, TABLE(61), TABLE(62), TABLE(63), TABLE(64), C_BLUE)

    ZV_LINE(colorImg, TABLE(71), TABLE(72), TABLE(73), TABLE(74), C_BLUE) 

    if(TABLE(110) = 1) then'如果使用補(bǔ)正源

        ZV_MARKER(colorImg,TABLE(4),TABLE(5),0,10,C_GREEN)'繪制匹配中心標(biāo)志點(diǎn)

    endif

  

    ZV_LATCH(colorImg,0)'顯示結(jié)果圖像

  

END SUB

image.png


7.在“main.bas”文件中添加“Set_Select”窗口界面按下【返回主界面】按鈕時(shí)響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)名。


'按下返回主界面按鈕時(shí)響應(yīng)的函數(shù)

GLOBAL SUB Goto_Main()


    '設(shè)置鎖存通道0的大小,以適應(yīng)圖片元件大小

    ZV_LATCHSETSIZE(0, HMI_ConTROLSIZEX(10,2), HMI_ConTROLSIZEY(10,2)) 

    ZV_LATCHCLEAR(0)'清空鎖存通道0

    ZV_LATCH(grabImg,0)'將圖片顯示到鎖存通道0中

    HMI_CLOSEWINDOW(13)'關(guān)閉測(cè)量參數(shù)設(shè)置窗口

  

END SUB

image.png


8.在“main.bas”文件中修改主界面按下【單次執(zhí)行】按鈕時(shí)響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)名。


'主界面按下單次執(zhí)行按鈕時(shí)響應(yīng)的函數(shù)

GLOBAL SUB btn_test()


   '采集一幀圖像

   btn_grab

   '執(zhí)行測(cè)量測(cè)試部分代碼

   btn_mea_test()


END SUB


檢測(cè)原理


(一)操作步驟


查看運(yùn)行效果:將項(xiàng)目下載到仿真器中→運(yùn)行程序,測(cè)試程序運(yùn)行效果。→使用本地圖片→單次采集→學(xué)習(xí)模板→液位設(shè)置→使用補(bǔ)正源→單次執(zhí)行→結(jié)束


完整代碼獲取地址

image.png


本次,正運(yùn)動(dòng)技術(shù)機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)應(yīng)用例程(六)液位檢測(cè),就分享到這里。


更多精彩內(nèi)容請(qǐng)關(guān)注“正運(yùn)動(dòng)小助手”公眾號(hào),需要相關(guān)開發(fā)環(huán)境與例程代碼,請(qǐng)咨詢正運(yùn)動(dòng)技術(shù)銷售工程師:400-089-8936。


本文由正運(yùn)動(dòng)技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國(guó)智能制造水平。文章版權(quán)歸正運(yùn)動(dòng)技術(shù)所有,如有轉(zhuǎn)載請(qǐng)注明文章來(lái)源。


關(guān)于正運(yùn)動(dòng)技術(shù)


正運(yùn)動(dòng)技術(shù)專注于運(yùn)動(dòng)控制技術(shù)研究和通用運(yùn)動(dòng)控制軟硬件產(chǎn)品的研發(fā),是國(guó)家級(jí)高新技術(shù)企業(yè),主要產(chǎn)品有運(yùn)動(dòng)控制器、運(yùn)動(dòng)控制卡、視覺運(yùn)動(dòng)控制一體機(jī)、人機(jī)界面以及擴(kuò)展模塊等。


正運(yùn)動(dòng)技術(shù)匯集了來(lái)自華為、中興等公司的優(yōu)秀人才,在堅(jiān)持自主創(chuàng)新的同時(shí),積極聯(lián)合各大高校協(xié)同運(yùn)動(dòng)控制基礎(chǔ)技術(shù)的研究,是國(guó)內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國(guó)內(nèi)少有、完整掌握運(yùn)動(dòng)控制核心技術(shù)和實(shí)時(shí)工控軟件平臺(tái)技術(shù)的企業(yè)。 



下一篇: PLC、DCS、FCS三大控

上一篇: ZMC運(yùn)動(dòng)控制器SCARA機(jī)

推薦產(chǎn)品

更多