史世良,徐世許,石朝陽
(青島大學(xué) 自動(dòng)化學(xué)院,青島 266071)
近年來,隨著我國(guó)經(jīng)濟(jì)的不斷發(fā)展,工業(yè)自動(dòng)化水平越來越高。由于工業(yè)技術(shù)的進(jìn)步,生產(chǎn)物料的增加,人力成本的提升,如何科學(xué)系統(tǒng)有效地管理各種物料,如何實(shí)現(xiàn)工業(yè)自動(dòng)化顯得尤為重要。本系統(tǒng)將條碼識(shí)別技術(shù)與先進(jìn)的自動(dòng)化設(shè)備相結(jié)合,極大的提高了工作效率,節(jié)約了成本。多工位條碼掃描系統(tǒng),以NJ501-1300運(yùn)動(dòng)控制器為核心,當(dāng)上位機(jī)發(fā)送指令時(shí),控制器能夠按指令自動(dòng)的進(jìn)行物料條碼掃描,經(jīng)過讀碼、解碼過程后得到的實(shí)際物料信息與上位機(jī)設(shè)定信息進(jìn)行判斷,如果滿足要求機(jī)械手將物料存入指定工位,從而達(dá)到科學(xué)系統(tǒng)的管理物料,實(shí)現(xiàn)自動(dòng)化作業(yè),也提高了條碼識(shí)別與多工位智能化存儲(chǔ)水平。由于系統(tǒng)工位多,自身的存儲(chǔ)容量大、高工作效率、低事故率、高土地利用率等優(yōu)點(diǎn),通過一套智能的、可視化的上位機(jī)監(jiān)管軟件進(jìn)行監(jiān)管控制,通過掃碼器進(jìn)行條碼識(shí)別,極大地提高了系統(tǒng)的應(yīng)用范圍。同時(shí)使用Access數(shù)據(jù)庫實(shí)現(xiàn)了對(duì)物料信息的存儲(chǔ)和查詢功能,降低了人為因素的出錯(cuò)率,提高了工作效率和物料存儲(chǔ)的智能化水平。
系統(tǒng)硬件選型取決于系統(tǒng)的功能、使用環(huán)境、成本等眾多因素。多工位條碼掃描系統(tǒng)的硬件組成主要有上位機(jī)、NJ501-1300運(yùn)動(dòng)控制器、掃碼器、伺服驅(qū)動(dòng)器、伺服電機(jī)、傳感器以及各種通信電纜組成。當(dāng)上位機(jī)發(fā)出命令時(shí),運(yùn)動(dòng)控制器控制機(jī)械手托運(yùn)裝有物料的托盤,每個(gè)托盤有四行五列放置物料的位置,每個(gè)托盤最多可放置20盒物料,當(dāng)每一行的物料經(jīng)過掃碼器時(shí),此時(shí)掃碼器打開并掃描物料條碼信息,同時(shí)傳感器檢測(cè)每個(gè)位置的物料有無情況,并傳送至NJ501-1300運(yùn)動(dòng)控制器中。同時(shí)掃碼器讀取的條碼信息通過EtherNet/IP通信實(shí)時(shí)存儲(chǔ)在NJ501-1300運(yùn)動(dòng)控制器固定的變量名中,上位機(jī)通過讀取NJ501-1300運(yùn)動(dòng)控制器固定的變量名中的條碼信息進(jìn)行數(shù)據(jù)截取和解碼判斷,解碼的信息可直接在上位機(jī)監(jiān)視畫面中顯示,同時(shí)解碼的實(shí)際信息與設(shè)定信息進(jìn)行比較,若信息匹配則存入工位,若信息不匹配則退回原來位置進(jìn)行補(bǔ)碼操作。同時(shí),如果物料存入成功則部分物料信息可以存儲(chǔ)到Access數(shù)據(jù)庫中,方便后期的查詢和追溯,節(jié)約成本,提高效率,降低存入失誤率。系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)
NJ501-1300運(yùn)動(dòng)控制器和上位機(jī)之間通過EtherNet/IP協(xié)議通信,上位機(jī)向NJ運(yùn)動(dòng)控制器發(fā)送運(yùn)動(dòng)指令,并實(shí)時(shí)接收來自NJ運(yùn)動(dòng)控制器的數(shù)據(jù);NJ501-1300運(yùn)動(dòng)控制器和伺服驅(qū)動(dòng)器之間通過EtherCAT協(xié)議通信,NJ運(yùn)動(dòng)控制器向伺服驅(qū)動(dòng)器發(fā)送指令,伺服驅(qū)動(dòng)器驅(qū)動(dòng)電機(jī)完成動(dòng)作[1];NJ501-1300運(yùn)動(dòng)控制器和掃碼器之間通過EtherNet/IP通信協(xié)議進(jìn)行數(shù)據(jù)傳輸,NJ運(yùn)動(dòng)控制器將掃碼器上傳的數(shù)據(jù)存儲(chǔ)在固定的變量名中,上位機(jī)實(shí)時(shí)讀取NJ運(yùn)動(dòng)控制器固定變量的值,并根據(jù)解碼原則進(jìn)行解碼,解碼成功后將條碼信息存儲(chǔ)在數(shù)據(jù)庫中;傳感器通過I/O模塊與NJ運(yùn)動(dòng)控制器連接,實(shí)現(xiàn)物料有無的判斷。
CX-Supervisor向NJ運(yùn)動(dòng)控制器發(fā)送控制指令,NJ運(yùn)動(dòng)控制器執(zhí)行運(yùn)動(dòng)控制程序,完成機(jī)械手將物料托盤自動(dòng)送到工位的過程。首先在上位機(jī)監(jiān)管軟件進(jìn)行選型,然后在托盤中放入物料,經(jīng)過條碼掃描后,將放入物料的托盤送到指定工位,從而完成自動(dòng)存入工位動(dòng)作。機(jī)械手在執(zhí)行物料存入工位的過程中要配合掃碼系統(tǒng)進(jìn)行動(dòng)態(tài)掃碼的運(yùn)動(dòng)控制程序。運(yùn)動(dòng)控制程序中,上位機(jī)程序通過“ScanCode”命令判斷系統(tǒng)需要進(jìn)行條碼掃描后,向NJ運(yùn)動(dòng)控制器發(fā)送運(yùn)動(dòng)控制指令,此時(shí)機(jī)械手Y軸伸入到物料托盤指定位置,當(dāng)機(jī)械手Y軸到達(dá)指定位置后,觸發(fā)“ScanCode_Move1_Position”命令,控制機(jī)械手夾抱軸運(yùn)動(dòng)夾抱物料托盤,當(dāng)夾抱軸運(yùn)動(dòng)完畢后,“ScanCode_Move1_Done”值置“TRUE”。機(jī)械手將執(zhí)行Y軸收回的動(dòng)作,與此同時(shí),上位機(jī)讀取到“ScanCode_Move1_Done”值改變,上位機(jī)開始實(shí)時(shí)讀取NJ運(yùn)動(dòng)控制器中儲(chǔ)存條碼信息的變量的值。由于每個(gè)托盤能夠存放20盒物料,因此Y軸收回時(shí)要分成四段,每一段動(dòng)作完成后都要向上位機(jī)發(fā)送動(dòng)作完成指令,上位機(jī)根據(jù)設(shè)定程序,將設(shè)定信息與每盒物料的條碼信息進(jìn)行匹配,如果匹配成功則將信息存儲(chǔ)在數(shù)據(jù)庫中,這樣就可以實(shí)現(xiàn)動(dòng)態(tài)掃碼的功能。Y軸收回完畢后,NJ變量“rgw_pos_Y_back”值為TRUE,此時(shí)機(jī)械手向指定工位位置運(yùn)動(dòng),在機(jī)械手向指定工位位置運(yùn)動(dòng)的過程中,為了提高工作效率、避免多軸分別運(yùn)動(dòng)產(chǎn)生的機(jī)械慣性對(duì)系統(tǒng)造成損傷,系統(tǒng)在多軸聯(lián)動(dòng)時(shí),機(jī)械手以直線插補(bǔ)的方式進(jìn)行運(yùn)動(dòng);到達(dá)指定工位位置后,首先要對(duì)該工位位置是否已經(jīng)有物料托盤進(jìn)行檢測(cè),如果該工位位置為空,則進(jìn)行物料托盤向工位的存放動(dòng)作,存放的過程首先是Y軸伸入,同時(shí)帶動(dòng)物料托盤向指定工位移動(dòng),機(jī)械手Y軸到達(dá)指定位置后,此時(shí)觸發(fā)“ScanCode_Move2_Position”命令,控制機(jī)械手夾抱軸運(yùn)動(dòng),此時(shí)夾抱軸松開物料托盤,當(dāng)夾抱軸運(yùn)動(dòng)完畢后,“ScanCode_Move2_Done”值置“TRUE”,機(jī)械手將執(zhí)行Y軸收回的動(dòng)作,存入工位流程結(jié)束。系統(tǒng)為了避免機(jī)械振動(dòng)造成的系統(tǒng)誤差、提高系統(tǒng)穩(wěn)定性和系統(tǒng)使用壽命,在Y軸伸入、收回以及夾抱過程中,使用振動(dòng)抑制功能減小機(jī)械振動(dòng)。系統(tǒng)的存入工位流程如圖2所示。
圖2 系統(tǒng)的存入工位流程
條碼識(shí)別技術(shù)在工業(yè)物料管理方面應(yīng)用廣泛,條碼識(shí)別技術(shù)是一種自動(dòng)識(shí)別技術(shù),可以實(shí)現(xiàn)對(duì)物料條碼信息的有效識(shí)別和科學(xué)管理,在條碼識(shí)別的過程中主要分為數(shù)據(jù)讀取、數(shù)據(jù)識(shí)別、數(shù)據(jù)傳送三個(gè)部分[2]。相對(duì)于傳統(tǒng)的鍵盤輸入的方式,運(yùn)用條碼識(shí)別技術(shù)能夠?qū)崿F(xiàn)條碼的自動(dòng)識(shí)別。掃碼器作為讀取條碼的裝置,在本系統(tǒng)中用到了五個(gè)Microscan ID-40掃碼器,系統(tǒng)在一個(gè)運(yùn)動(dòng)過程中可以同時(shí)讀取多個(gè)條碼,并且將數(shù)據(jù)上傳存儲(chǔ)在NJ固定的變量名中。物料條碼信息如圖3所示。
圖3 物料條碼信息
物料條碼信息包括物料名稱碼、物料重量碼以及生產(chǎn)日期碼,為了能夠同時(shí)讀取多個(gè)條碼的信息,則通過修改掃碼器固件參數(shù)來實(shí)現(xiàn),從而一次讀取出多個(gè)條碼信息[3]。上位機(jī)通過讀取的數(shù)據(jù)信息在程序中進(jìn)行解碼,通過解碼操作在判斷出具體的物料信息?,F(xiàn)以解碼失效日期為例,介紹解碼程序。由于條碼信息中有物料生產(chǎn)日期,但實(shí)際中物料的失效日期更為重要,因此需要通過生產(chǎn)日期結(jié)合物料保質(zhì)期推算物料的失效日期。如“20190902”代表2019年9月2日該物料的生產(chǎn)日期,結(jié)合該物料保質(zhì)期為一年,然后根據(jù)物料保質(zhì)期計(jì)算該物料的具體失效日期為2020年9月2日。
系統(tǒng)使用CX-Supervisor進(jìn)行上位機(jī)監(jiān)管軟件程序設(shè)計(jì),上位機(jī)監(jiān)管軟件實(shí)現(xiàn)的主要功能是通過EtherNet/IP通信協(xié)議連接現(xiàn)場(chǎng)NJ501-1300運(yùn)動(dòng)控制器,通過操作監(jiān)管軟件進(jìn)行自動(dòng)掃碼送回工位的控制,并從NJ501-1300運(yùn)動(dòng)控制器中讀取條碼信息、物料有無等信息,同時(shí)能夠?qū)崟r(shí)讀取機(jī)械手的坐標(biāo)位置和各個(gè)傳感器的狀態(tài)信息,從而對(duì)機(jī)械手進(jìn)行實(shí)時(shí)狀態(tài)監(jiān)視。通過ADO控件連接Access數(shù)據(jù)庫,并將讀取上來的條形碼信息、物料名稱、物料重量、生產(chǎn)日期等信息存儲(chǔ)至Access數(shù)據(jù)庫中,方便后期數(shù)據(jù)的查詢和追溯[4]。系統(tǒng)控制程序流程如圖4所示。
圖4 控制程序流程
在上位機(jī)監(jiān)管界面輸入物料名稱、存入數(shù)量、工位選擇之后,點(diǎn)擊“選型結(jié)束”按鈕,此時(shí)按照控制程序流程圖的算法將符合要求的工位顯示在“入庫信息表”中,點(diǎn)擊“開始存入工位”按鈕,上位機(jī)向NJ501-1300運(yùn)動(dòng)控制器發(fā)送實(shí)時(shí)指令,機(jī)械手即開始工作。為了提高系統(tǒng)的工作效率,系統(tǒng)采用動(dòng)態(tài)掃碼,即在機(jī)械手Y軸收回的過程中就對(duì)條碼進(jìn)行識(shí)別,并對(duì)物料上的條形碼進(jìn)行讀碼、解碼的操作,并最終將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中。由于系統(tǒng)要進(jìn)行動(dòng)態(tài)掃碼,因此也需要捕捉NJ運(yùn)動(dòng)控制器的運(yùn)動(dòng)狀態(tài),根據(jù)運(yùn)動(dòng)狀態(tài)進(jìn)行信息讀取。系統(tǒng)設(shè)有五個(gè)掃碼器同時(shí)工作,一次對(duì)五個(gè)位置的物料條碼進(jìn)行識(shí)別,因此共需要四次條碼識(shí)別。每次識(shí)別條碼的過程中,五個(gè)傳感器對(duì)每一行五個(gè)位置的物料進(jìn)行物料有無的判斷,并通過I/O模塊上傳到NJ運(yùn)動(dòng)控制器中,傳感器判斷物料有無程序如圖5所示。
圖5 傳感器判斷物料有無程序
上位機(jī)向NJ運(yùn)動(dòng)控制器發(fā)送“ScanCode=true”以及“ScanTimes=4”指令,運(yùn)動(dòng)控制器將執(zhí)行掃碼運(yùn)動(dòng)程序,每執(zhí)行完一次,“ScanTimes”值減1,直到“ScanTimes”值為零,之后復(fù)位“ScanCode”,結(jié)束掃碼動(dòng)作。當(dāng)條碼識(shí)別結(jié)束之后,對(duì)掃碼信息進(jìn)行判斷。解碼相對(duì)于掃碼過程較為簡(jiǎn)單,只需要按照條碼定義進(jìn)行譯碼即可。
在監(jiān)控窗口的上方可以通過上位機(jī)設(shè)定存入的物料名稱、存入數(shù)量和工位選擇,NJ501-1300運(yùn)動(dòng)控制器將物料的條碼信息和物料有無信息存儲(chǔ)在固定的變量名中,上位機(jī)通過定義點(diǎn)與NJ501-1300運(yùn)動(dòng)控制器的固定變量的值進(jìn)行關(guān)聯(lián),實(shí)時(shí)讀取NJ501-1300運(yùn)動(dòng)控制器中固定變量的值,并根據(jù)解碼原則進(jìn)行解碼,根據(jù)解出的實(shí)際物料名稱與上位機(jī)中設(shè)定的物料名稱進(jìn)行匹配,同時(shí)還可以通過入庫信息表查看物料編碼、存入工位號(hào)、總重量、實(shí)際存入數(shù)量、生產(chǎn)日期、失效日期等信息,解碼成功后設(shè)置Adodc控件屬性連接計(jì)算機(jī)Access數(shù)據(jù)庫,同時(shí)將以上信息存入數(shù)據(jù)庫中,以備數(shù)據(jù)的查詢和調(diào)用[5]。同時(shí),將各個(gè)軸的實(shí)際位置以及物料名稱、物料重量、生產(chǎn)日期顯示在上位機(jī)監(jiān)控窗口中,上位機(jī)監(jiān)控窗口如圖6所示。
圖6 上位機(jī)監(jiān)控窗口
解碼過程中如果出現(xiàn)不成功的情況,上位機(jī)程序會(huì)自動(dòng)進(jìn)行判斷,并發(fā)送wh_th=true命令使機(jī)械手將托盤退回原來位置,托盤退回原來位置后可對(duì)解碼失敗的物料進(jìn)行手動(dòng)補(bǔ)碼操作,補(bǔ)碼成功后可繼續(xù)將托盤送到指定工位。解碼不成功有兩種情況,第一種情況是上位機(jī)設(shè)定的物料名稱與實(shí)際存入的物料名稱不匹配,則黃色矩形框變?yōu)榧t色矩形框進(jìn)行提示。第二種情況是讀上來的條碼長(zhǎng)度和標(biāo)準(zhǔn)條碼長(zhǎng)度不一致,表示其中有條碼漏讀或者讀錯(cuò),這種情況黃色矩形框變?yōu)榉奂t色矩形框進(jìn)行提示。若出現(xiàn)以上兩種情況用戶則可以根據(jù)提示在相應(yīng)出錯(cuò)的物料位置進(jìn)行補(bǔ)碼操作。相關(guān)程序代碼如下:
本文根據(jù)企業(yè)和用戶的實(shí)際需求,在以O(shè)MRON NJ501-1300控制器為核心,CX-Supervisor組態(tài)軟件下開發(fā)上位機(jī)程序,設(shè)計(jì)并開發(fā)了基于NJ控制器的多工位條形碼掃描系統(tǒng),包括機(jī)械手控制、條形碼識(shí)別、數(shù)據(jù)讀取和數(shù)據(jù)存儲(chǔ)等功能,另外該系統(tǒng)還運(yùn)用了當(dāng)下先進(jìn)的伺服驅(qū)動(dòng)器、伺服電機(jī)、掃碼器等設(shè)備,系統(tǒng)能夠穩(wěn)定的控制機(jī)械手進(jìn)行物料自動(dòng)掃碼并存入工位的操作。目前該系統(tǒng)已經(jīng)被應(yīng)用到實(shí)際產(chǎn)業(yè)線中,系統(tǒng)運(yùn)行穩(wěn)定可靠,為企業(yè)減少了人力成本,提高了工作效率和物料存儲(chǔ)的自動(dòng)化水平[6]。