張世綜,徐世許,邊長安
ZHANG Shi-zong,XU Shi-xu,BIAN Chang’an
(青島大學自動化學院,青島 266071)
隨著經(jīng)濟水平的提高以及工業(yè)生產(chǎn)力的迅速發(fā)展,人們對原材料、制成品的需求數(shù)量不斷增加的同時,對物料儲存的要求也越來越高,伴隨著條碼識別技術的發(fā)展及設備自動化水平的不斷提高,條碼技術成為信息數(shù)據(jù)自動識別、輸入的重要方法和手段,現(xiàn)已應用到了商業(yè)、工業(yè)、交通運輸業(yè)、物流、醫(yī)療衛(wèi)生等國民經(jīng)濟各行各業(yè)。該系統(tǒng)將條碼掃描識別技術、ACCESS數(shù)據(jù)庫、NJ控制器與小型自動化倉庫結(jié)合起來,使自動化立體倉庫,能夠按照指令自動實現(xiàn)貨物存取,而且能夠自動管理庫存貨物,實時對存取的貨物信息進行記錄和刪除,并且通過查詢歷史貨物進出流水信息對庫存信息全面的掌握,進行制定合理的進出庫計劃。有利于企業(yè)根據(jù)所掌握的現(xiàn)有庫存量等信息及時的對生產(chǎn)計劃、采購計劃等進行有效的調(diào)整,增強了企業(yè)在生產(chǎn)加工過程的靈活性,也有利于企業(yè)管理人員的決策分析。具有十分重要的社會和經(jīng)濟效益。
系統(tǒng)的運動控制部分采用位置控制模式,當交流伺服系統(tǒng)處于位置控制模式時,能夠精準地控制伺服電動機的轉(zhuǎn)數(shù),進而準確的實現(xiàn)執(zhí)行部件的移動距離,即能夠?qū)?zhí)行部件實現(xiàn)運動定位控制。該模式下由驅(qū)動器接收位置命令,并控制伺服電機轉(zhuǎn)動,運行至目標位置。伺服控制器可以通過判斷脈沖編碼器傳送回來的脈沖數(shù)與PLC傳送來的位置命令即總的脈沖信號數(shù)量判斷電機是否旋轉(zhuǎn)至規(guī)定位置,即以當前伺服作為驅(qū)動的機構(gòu)已經(jīng)運動到了指定的位置。另外控制器輸出脈沖的頻率越快,電機旋轉(zhuǎn)的速度也越快[1]。位置控制模式架構(gòu)如圖1所示。
圖1 位置控制模式框架圖
直線插補是數(shù)控設備上常見的一種插補功能。數(shù)控系統(tǒng)中直線插補功能的主要任務是在給定行進速度的基礎上在直線的起點和終點中間計算出若干個點的坐標,兩點間的插補運動通過逼近直線中的點群來實現(xiàn)[2~4]。
系統(tǒng)采用直線插補的方式到達指定位置,既做到了穩(wěn)定平滑也實現(xiàn)了精確控制。假設在平面上存在任意直線,其起點和終點分別表示為A(x0,y0)和B(x1,y1),則直線的數(shù)學表達式可表示為:y=kx。式中:
圖2為從A點到B點的直線插補示意圖。
圖2 直線插補示意圖
當k<1時,有vx>vy,則一動點D運動的方向存在兩種情況:
1)僅沿x方向運動;
2)除了沿x方向運動外,同時沿y方向運動vx>vy。當k>1時,有vx<vy,此時動點D的運動方向同樣也存在兩種情況:僅沿y方向運動;除了沿y方向運動外,同時沿x軸方向運動且vx<vy[6,7]。
條形碼技術是在計算機發(fā)展和應用過程中產(chǎn)生和發(fā)展起來的自動識別的技術。識別過程主要分為讀取、識別和傳送三個過程,讀取條形碼的裝置稱作掃碼器。本系統(tǒng)用到的條碼標簽示意圖如圖3所示,系統(tǒng)在一個周期內(nèi)讀取多個條形碼完畢后將數(shù)據(jù)發(fā)送至串口。
貨物條形碼掃描系統(tǒng)主要由上位機、邁斯肯MICROHAWK ID-40掃碼器、歐姆龍NJ控制器、CXSupervisor組態(tài)軟件、數(shù)據(jù)庫程序等組成。系統(tǒng)結(jié)構(gòu)圖如圖4所示。掃碼器和上位機通過RS232c進行通信,遵循串口通信協(xié)議。掃碼器固定在取送貨物的機械手上,結(jié)構(gòu)示意圖如圖5所示。
圖3 標簽示意圖
圖4 掃碼系統(tǒng)結(jié)構(gòu)圖
圖5 機械手結(jié)構(gòu)示意圖
2.3.1 CX-Supervisor
CX-Supervisor是為歐姆龍系列PLC和運動控制器開發(fā)的組態(tài)軟件,掃碼系統(tǒng)采用CX-Supervisor編寫程序,CX-Supervisor可實現(xiàn)一鍵模擬,點擊鼠標即可實現(xiàn)對應用程序的模擬仿真;可實現(xiàn)遠程維護,不需要修改應用程序就可以在任何地方查看應用程序的運行狀態(tài),只需要通過網(wǎng)頁瀏覽器就可以安全訪問安裝的應用并對狀態(tài)進行監(jiān)視,這對于后期的維護提供了極大地方便;CXSupervisor3.2支持多種腳本語言,包括VBScript以及歐姆龍自己的語言,編寫者可以根據(jù)自己的需要自行選擇,易用性較強,縮短開發(fā)周期。CX-Supervisor常用功能如完整的項目視圖、點編輯器、圖形庫、警報、動畫、權(quán)限管理、數(shù)據(jù)庫操作以及遠程管理等功能[8]。對中小型系統(tǒng)的開發(fā)相比專業(yè)的編程軟件更加簡潔和便利,同時可以省去大量通訊程序的編寫,大大降低開發(fā)難度,做到隨調(diào)隨用。
2.3.2 系統(tǒng)條碼識別的實現(xiàn)
條形碼掃碼系統(tǒng)的數(shù)據(jù)管理部分由數(shù)據(jù)庫管理系統(tǒng)ACCESS2010和CX-Supervisor共同實現(xiàn)。通過修改掃碼器系統(tǒng)固件參數(shù)實現(xiàn)同時讀取多個條形碼的數(shù)據(jù),在CX-Supervisor編寫程序發(fā)打開掃碼器鏡頭發(fā)送命令使掃碼器進入預讀碼狀態(tài),貨物入庫過程中機械手夾報貨物托盤入庫,同時進行讀碼,每盒貨物的多個條碼讀取完成后數(shù)據(jù)自動上傳到掃碼器的緩沖區(qū)。然后將數(shù)據(jù)存在串口緩沖區(qū),在下次讀碼前進行數(shù)據(jù)提取,關掉鏡頭、將串口進行初始化和清空緩沖區(qū)等操作,等待下一次讀取,重復執(zhí)行該操作即可實現(xiàn)連續(xù)讀碼。
2.3.3 數(shù)據(jù)處理
將接收的數(shù)據(jù)在程序中進行解析,判斷出該物品的具體信息,如身份標識、種類、采購日期、失效日期等,然后將處理完的數(shù)據(jù)為下一步的操作做準備。數(shù)據(jù)處理與機械手的入庫動作通過條件腳本結(jié)合在一起,例如在運動控制器中程序rh_sh_pos_A_back1觸發(fā)時執(zhí)行寫庫程序,如圖6所示。
圖6 寫庫觸發(fā)程序圖
2.3.4 數(shù)據(jù)庫操作實現(xiàn)
ADO控件(ActiveX Data Objects,ActiveX數(shù)據(jù)對象)是Microsoft提出的應用程序接口,可以使用ADO控件在CX-Supervisor與Access數(shù)據(jù)庫之間建立關聯(lián),通過ADO控件將讀取解析完的數(shù)據(jù)對數(shù)據(jù)庫進行讀寫操作,同時通過ADO控件可進行查詢功能的設計[9]。
3.1.1 串口設置程序
在編寫掃碼器讀碼程序前需要先對串口進行配置,以保證上位機和掃碼器可以正常通信。串口1配置程序如下:
MSComm1.CommPort=1 ‘設置串口為端口1
MSComm1.Settings=“115200,N,8,1”‘設置波特率,
MSComm1.InputMode=0 ‘數(shù)據(jù)通過 Input 屬性以文本形式取回
MSComm1.InputLen=0
MSComm1.InBufferCount=0 '清空接收緩沖區(qū)
MSComm1.outBufferCount=0
MSComm1.RThreshold=1 '緩沖區(qū)中接收到一個字符,就產(chǎn)生一次OnComm事件
MSComm1.PortOpen=True
程序中對端口、波特率、奇偶校驗開始位、停止位等進行設置,同時對串口接收緩沖區(qū)進行清空,為下一次接收數(shù)據(jù)做準備,串口2和串口3的配置與串口1相同,串口配置是應用掃碼器的必要條件[10]。
3.1.2 掃碼器讀碼程序
在串口準備完畢后,打開掃碼器,進入預讀碼狀態(tài)。程序?qū)崿F(xiàn)如下:
程序中在運動控制器的對貨物進行運動掃碼狀態(tài)下,分別對三個串口發(fā)送16進制命令打開掃碼器鏡頭。
3.1.3 數(shù)據(jù)接收、處理程序
掃碼器掃到條形碼后會將數(shù)據(jù)存儲到緩沖區(qū)等待取出,編寫程序取出數(shù)據(jù)并進行數(shù)據(jù)的匹配。部分程序如下:
取出數(shù)據(jù)后向掃碼器發(fā)送16進制命令關閉鏡頭同時關閉串口,下次使用時再次打開串口、發(fā)送命令。數(shù)據(jù)匹配完成后程序上會給出貨物對應的詳細信息,如圖7所示。
圖7 掃碼信息圖
ADO Data控件是通過Microsoft ActiveX數(shù)據(jù)對象(ADO)來建立起符合OLE DB規(guī)范數(shù)據(jù)源連接的數(shù)據(jù)綁定控件。在VB6.0的環(huán)境下使用ADO控件對數(shù)據(jù)庫中的數(shù)據(jù)表進行操作,具體操作步驟如下。
3.2.1 連接數(shù)據(jù)庫
在CX-Supervisor編輯界面點擊工具欄上的配置Active X工具欄,勾選“Microsoft ADO Data Control,version6.0”對ADO控件進行調(diào)用,然后在界面上放置ADO控件,雙擊控件選擇要連接的數(shù)據(jù)源,如圖8所示,生成連接字符串完成數(shù)據(jù)庫的連接[8]。
圖8 連接數(shù)據(jù)庫
3.2.2 對數(shù)據(jù)庫進行數(shù)據(jù)操作
在CX-Supervisor中對ACCESS數(shù)據(jù)庫操作不需要編寫特定的連接語句,可做到隨調(diào)隨用,省去了傳統(tǒng)編程下對數(shù)據(jù)庫操作時編寫繁瑣的連接語句。貨物進庫時對數(shù)據(jù)庫進行寫庫操作,部分程序如下:
貨物出庫時機械手將取到的貨物托盤送至窗口,同時數(shù)據(jù)庫刪除相應的記錄[11]。程序?qū)崿F(xiàn)如下:
3.2.3 查詢歷史記錄
系統(tǒng)在實現(xiàn)存取操作時將貨物信息記錄到數(shù)據(jù)庫中保存在ACCESS數(shù)據(jù)表中,設計查詢界面可對當前的庫存信息和流水信息就行查詢和導出Excel表格,方便用戶進行查看。
1)查詢程序設計部分代碼如下:
2)導出到Excel部分程序部分代碼如下:
系統(tǒng)中查詢歷史出入記錄主要借助ADO控件和Datagrid控件,用Adodc中的RecordSource屬性或者Recordset對象從數(shù)據(jù)源中根據(jù)需要的數(shù)據(jù),選擇打開的記錄集。用Recordset對象中的屬性對記錄集中的記錄查詢功能。將Datagrid與ADO控件進行綁定即可將數(shù)據(jù)直觀的顯示在程序界面中。本系統(tǒng)能夠?qū)崿F(xiàn)根據(jù)日期、貨物種類、貨物名稱或貨號對數(shù)據(jù)進行查詢、導出到Excel等功能[12]。查詢導出界面如圖9所示。
圖9 查詢導出界面
本文通過運動控制器配合機械手運動可做到精確存取,加入掃碼器配合機械手使入庫操作和出庫操作做到信息自動統(tǒng)計,無需人工干預,真正做到自動存取、自動記錄,相比傳統(tǒng)存儲過程省去了大量的人力物力,提高了存儲效率。利用CX-Supervisor設計用戶操作界面不僅可以減少編程人員的工作量,也令運動控制過程和用戶界面更好的結(jié)合在一塊,使系統(tǒng)更加穩(wěn)定,方便調(diào)試。本文設計的系統(tǒng)實現(xiàn)自動掃碼出入庫,后期將沿著更加智能的方向進行設計和研究。