<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 基于條形碼技術(shù)的車(chē)間監控系統的實(shí)時(shí)信息采集

基于條形碼技術(shù)的車(chē)間監控系統的實(shí)時(shí)信息采集

作者: 時(shí)間:2006-05-07 來(lái)源:網(wǎng)絡(luò ) 收藏

摘 要 探討了使用條形碼作為信息載體的車(chē)間監控系統信息采集的實(shí)現,分析了所需要的信息及其條碼編碼,介紹了Windows95環(huán)境下用RS-232串口中斷方式數據實(shí)時(shí)采集的實(shí)現方法,以及客戶(hù)/服務(wù)器機構模式下數據采集模塊與監控模塊之間實(shí)現動(dòng)態(tài)數據傳送(DDE)的手段。

本文引用地址:http://dyxdggzs.com/article/255635.htm

關(guān)鍵詞 條形碼 數據采集 動(dòng)態(tài)數據交換(DDE) 中斷

隨著(zhù)計算機的廣泛應用,生產(chǎn)技術(shù)發(fā)生了革命性的變化,柔性制造系統(FMS)已在國外得到較廣泛應用。但對目前我國的大多數企業(yè)來(lái)說(shuō),高度柔性化的制造系統仍是一個(gè)難以承受的負擔,在一些生產(chǎn)量大的電器行業(yè),如電冰箱、洗衣機、空調器等,以人工裝配為主、生產(chǎn)工位多的生產(chǎn)流水線(xiàn)形式仍占主要地位。

由于缺乏信息監測手段,此類(lèi)生產(chǎn)系統會(huì )出現種種問(wèn)題:工位負荷缺乏定量關(guān)系,無(wú)法隨生產(chǎn)目標、生產(chǎn)條件的改變均衡生產(chǎn)沒(méi)有生產(chǎn)監視信息,故障事件得不到及時(shí)處理物流流動(dòng)缺乏指導,工位連接不暢導致阻塞和缺料事件。

條形碼以下簡(jiǎn)稱(chēng)條碼技術(shù)由于其輸入速度快、準確度高、成本低、可靠性強等優(yōu)點(diǎn)而具有廣泛的應用領(lǐng)域。我們開(kāi)發(fā)的基于條碼技術(shù)的車(chē)間監控管理系統是這種自動(dòng)識別技術(shù)在工業(yè)領(lǐng)域的應用實(shí)例,其目的是為了監控某復印機廠(chǎng)裝配流水線(xiàn)的生產(chǎn)狀況。載有各種生產(chǎn)信息的條碼或貼在部件和成品上,或放于相應工位上,流水線(xiàn)出入口配有自動(dòng)條碼掃描器,各工位上則配有手動(dòng)條碼掃描器,這些條碼掃描器通過(guò)條碼掃描網(wǎng)絡(luò )儀連接到車(chē)間監控計算機上。實(shí)際運行時(shí),自動(dòng)或手工掃描器將條碼信息送入車(chē)間監控計算機上,在其上運行的監控軟件可以動(dòng)態(tài)地模擬整個(gè)車(chē)間所有流水線(xiàn)的實(shí)時(shí)動(dòng)作。一旦發(fā)現各個(gè)工位的故障及警報信息,及時(shí)通知值班人員,值班人員可以通過(guò)該系統查詢(xún)故障及報警信息,并根據該系統提供的參考處理辦法調度維修人員進(jìn)行搶修。

1 系統的硬件及軟件結構

系統的硬件結構如圖1所示。

本系統軟件結構上分為兩大部分:(1)數據采集模塊:將條碼信息轉換為控制信號;(2)監控模塊:對生產(chǎn)線(xiàn)各種狀態(tài)的動(dòng)態(tài)顯示和生產(chǎn)調度。軟件操作系統采用Windows95,由于數據采集模塊涉及低層硬件操作,用C++比較合適,而監控模塊兼顧動(dòng)畫(huà)和數據庫操作,我們采用了VB4.0。數據采集模塊和監控模塊進(jìn)程之間條碼信息的交換采用Windows系統的動(dòng)態(tài)數據交換(DDE)實(shí)現。系統軟件結構如圖2所示。

基于上述系統軟硬件結構,要將條碼信息轉換成反映生產(chǎn)線(xiàn)現狀的控制信號,我們必須完成三方面工作:(1)生產(chǎn)信息分析及編碼;(2)使用RS-232串口進(jìn)行信息采集;(3)使用DDE實(shí)現數據采集模塊與監控模塊的通訊。本文給出以上三方面功能的實(shí)現。

2 生產(chǎn)信息分析及編碼

車(chē)間監控系統要用現代化的管理手段,在生產(chǎn)過(guò)程中,最合理地安排好生產(chǎn)流程,及時(shí)發(fā)現并排除故障,使各生產(chǎn)工序處于最理想的正常工作狀態(tài)。為此,所需的生產(chǎn)信息基本上可分為以下幾個(gè)方面:

工件監視

工件(指裝配線(xiàn)上的部件或成品)的情況,包括當前位置、裝配狀態(tài)、裝配時(shí)間、關(guān)鍵測試數據。

操作工監視

包括操作工崗位、工作狀態(tài)、技術(shù)水平及突發(fā)請求等的監視。

生產(chǎn)過(guò)程監視

包括流水線(xiàn)開(kāi)工/停工,生產(chǎn)系統物流狀態(tài),各生產(chǎn)單元完成工件的品種及數量,各工位實(shí)際勞動(dòng)負荷等。

故障監視

包括直接故障及間接故障。直接故障是指明確包括故障源的故障信息,如設備故障、零件不足等;間接故障指未知故障源引發(fā)的系統級故障,如系統生產(chǎn)率明顯低于額定生產(chǎn)率等。

關(guān)鍵工位監視

包括對直接影響整個(gè)生產(chǎn)系統流程的重要工位各種數據的監視。主要有生產(chǎn)勞動(dòng)負荷相對飽和的工位、生產(chǎn)限制條件多的工位如零件品種多,供應源多,輔助設備多等、技術(shù)工藝要求高的工位等等。

基于以上生產(chǎn)信息的分析,監控管理系統必須實(shí)現對跟蹤、監測對象的自動(dòng)識別。目前最好的辦法就是采用條碼自動(dòng)識別技術(shù)。工業(yè)上最常采用的是39碼,本系統也采用這一碼制。用39碼制設計以上生產(chǎn)信息所需的條碼如下:

· 工件標簽條碼:每個(gè)成品或重要部件上都貼有條碼,是其身份的標識。

· 考勤條碼:載有該工位上操作工的信息。

· 操作狀態(tài)條碼:載有裝配開(kāi)始/結束信息,用于工位操作狀態(tài)的監視。

· 設備故障/故障排除條碼:用于監測設備故障。

· 異常報警條碼:用于表示除設備故障外的各種故障信息。

·流水線(xiàn)狀態(tài)條碼:載有流水線(xiàn)開(kāi)工和停止生產(chǎn)等信息。

· 撤銷(xiāo)輸入條碼:表示撤銷(xiāo)前一次的條碼輸入,用于工位數據輸入的容錯。

基于條形碼技術(shù)的車(chē)間監控系統的實(shí)時(shí)信息采集

3 數據采集模塊的RS-232串口通訊

本監控系統中條碼信息經(jīng)過(guò)條碼掃描器送到車(chē)間監控計算機的串口COM2上(COM1被鼠標占用)。所以條碼信息的實(shí)時(shí)采集就是串口數據實(shí)時(shí)采集。 Windows95平臺下串口通訊的實(shí)現有以下三種方法:

(1)定時(shí)采集方式。設置一個(gè)定時(shí)器,每隔一段時(shí)間產(chǎn)生一個(gè)WM_TIMER消息,該消息的相應函數讀取串口緩沖器中的數據。這種方法實(shí)現簡(jiǎn)單,但有以下幾個(gè)缺點(diǎn):一是受Windows計時(shí)器數據分辨率的限制,最高采樣頻率為18.2Hz。另外WM_TIMER消息在Windows消息隊列中優(yōu)先權低,可能得不到及時(shí)響應。最重要的一點(diǎn)是Windows會(huì )將消息隊列中沒(méi)有來(lái)得及處理的幾個(gè)WM_TIMER消息合并成一個(gè),這意味著(zhù)前幾次定時(shí)器消息沒(méi)有得到響應,因而可能導致數據丟失。

(2)在Win95操作平臺下,利用其支持多線(xiàn)程的特點(diǎn),開(kāi)辟一個(gè)線(xiàn)程專(zhuān)門(mén)讀取串口數據。每當串口有數據到來(lái)時(shí),此線(xiàn)程被激活,讀取串口緩沖器中的數據;無(wú)數據時(shí),該線(xiàn)程被掛起。盡管可以設置線(xiàn)程的優(yōu)先級,這種采集方式仍稱(chēng)不上實(shí)時(shí)通訊。

(3 保護模式下的中斷方式。Windows支持一種特殊的DOS服務(wù),稱(chēng)為DOS保護模式接口DPMI(DOS protected Mode Interface),由一些INT 2FH和INT 31H組成??梢杂密浿袛啵蒊NT 31H掛住保護模式中斷向量,以中斷方式處理外部實(shí)時(shí)事件。這種方式對數據量不太大但需要準確及時(shí)響應的條碼信息采集很適用,因此,我們采用這種方式。具體實(shí)現方案如下:

信息采集模塊主窗口第一次被創(chuàng )建時(shí),Windows向它傳遞WM_CREATE消息,在該消息響應函數中調用INT 31H的0204H功能將老的中斷向量保存起來(lái),用INT 31H的0205H號功能將中斷向量指向新的中斷服務(wù)例程監控管理模塊退出時(shí),Windows將向它傳遞WM_DESTROY消息在該消息響應函數中調用INT 31H的0205H功能恢復老的中斷服務(wù)例程。以上步驟在VC++1.52集成開(kāi)發(fā)環(huán)境中,采用嵌入匯編方式加以實(shí)現。主要包括以下幾個(gè)函數

· 初始化串口2(VOID PASCAL InitCom2())

保存COM2的當前狀態(tài),然后把COM2的波特率設置為9600,每個(gè)字符8bits,1個(gè)停止位。允許0xOc號中斷。

· 中斷初始化(BOOL PASCAL InitComm())

調用DMPI,保存舊的0CH號保護模式中斷向量,設置新的保護模式中斷服務(wù)例程。

· 中斷服務(wù)例程(void_interrupt_far new_int())

處理信息的接收。判斷信息類(lèi)型。如是異常信息,就向主窗口發(fā)送一自定義WM_INTERRUPT1消息;如是一般信息,則發(fā)送一WM_INTERRUPT2消息。

· 中斷恢復(VOID PASCAL Restore_Comm())

恢復COM2狀態(tài),恢復0CH保護模式向量。

每當串口有條碼信息到來(lái),0CH中斷將發(fā)生,保證消息得到及時(shí)處理,因而實(shí)現了條碼信息的實(shí)時(shí)采集。

4 數據采集模塊與監控模塊之間DDE的實(shí)現

數據采集模塊采用中斷方式實(shí)時(shí)采集串口COM2的條碼信息的同時(shí),還需將所采集的數據傳遞給監控模塊。這兩者之間的信息交換采用Windows系統的動(dòng)態(tài)數據交換(DDE)來(lái)實(shí)現。

4.1 動(dòng)態(tài)數據交換(DDE)

動(dòng)態(tài)數據交換(DDE)是一種進(jìn)程之間的通信形式,而DDE會(huì )話(huà)則是實(shí)現進(jìn)程通信的手段,它總是在一個(gè)客戶(hù)程序和一個(gè)服務(wù)器程序之間進(jìn)行的。啟動(dòng)會(huì )話(huà)并要求接收數據的應用程序是客戶(hù)程序。響應客戶(hù)程序的要求并提供數據的程序是服務(wù)器程序。

在早期的Windows版本中,DDE會(huì )話(huà)是通過(guò)進(jìn)程之間互相發(fā)送消息的形式來(lái)實(shí)現的,DDE協(xié)議就是一組預定義的消息,被發(fā)送的數據包含在消息的兩個(gè)參數(wParam和1Param)中。

在Windows3.0以后的版本中,采用了一種先進(jìn)的DDE方案,即動(dòng)態(tài)數據交換管理庫(DDEML),DDEML提供了一系列API,將傳統的DDE消息及附屬的各種特征封裝在一個(gè)函數調用接口中,應用程序通過(guò)調用DDEML中的函數實(shí)現DDE會(huì )話(huà),從而交換數據或互相提供服務(wù)。在DDEML中,進(jìn)程之間傳遞的是事務(wù)事務(wù)是對數據和服務(wù)的請求,表現為一組預定義的常量,整個(gè)通訊過(guò)程都是圍繞著(zhù)事務(wù)進(jìn)行的:首先,客戶(hù)程序向服務(wù)器程序發(fā)出建立聯(lián)接的事務(wù),服務(wù)器響應之后,聯(lián)接便建立起來(lái);之后,客戶(hù)向服務(wù)器發(fā)出請求數據的事務(wù),服務(wù)器便向客戶(hù)提供所需的數據,這一過(guò)程可以在建立聯(lián)接之后多次進(jìn)行;最后,當客戶(hù)不再需要數據時(shí),便向服務(wù)器發(fā)出終止聯(lián)接的事務(wù),從而結束一次DDEML會(huì )話(huà)過(guò)程。

4.2 DDE服務(wù)器的實(shí)現(工具為VC++1.52)

DDE會(huì )話(huà)有三種方式,冷鏈、溫鏈、熱鏈。由于采集的數據要及時(shí)得到監控程序的處理,我們就采用了熱鏈方式來(lái)傳送數據,即只要一有數據到來(lái),采集服務(wù)器就立即把此數據傳送到監控程序。

下面我們應用DDEML機制來(lái)實(shí)現數據傳輸編程。其步驟如下:

步驟1.創(chuàng )建用于處理各類(lèi)DDEML事務(wù)的回調函數(HDDEDATA EXPENTRY_export DdeCallBack(WORD wType,WORD wFmt,HCONV hConv,HSZ hxz1,HSZ hsz2,HDDEDATA hData,DWORD1Data1,DWORD 1Data2)

在DDEML中,進(jìn)程之間傳遞的是事務(wù),根據實(shí)際的需要,回調函數應處理的事務(wù)如下:

·XTYP_CONNECT及XTYP_CONNECT_CONFIRM

證實(shí)客戶(hù)是否已連接到了采集服務(wù)器。

·XTYP_ADSTART

回復客戶(hù)熱鏈開(kāi)始的申請。

·XTYP_ADVREQ

當采集服務(wù)器一接收到信息時(shí),就向客戶(hù)傳遞此信息,實(shí)現動(dòng)態(tài)數據交換。

·XTYP_ADVSTOP

回復客戶(hù)熱鏈結束的申請。

·XTYP_DISCONNECT

回復客戶(hù)和服務(wù)器之間鏈接結束的申請。

步驟2.初始化DDEML (BOOL PASCAL InitializeDDEML(HWNDhWnd))通知DDEML該程序將開(kāi)始使用DDE機制。

步驟3.登記服務(wù)名、主題名和項目名(BOOL PASCAL InitializeDDEML(HWND hWnd))

這涉及到WINDOWS的三級服務(wù)名稱(chēng)管理體系。它們是;服務(wù)名(Server Name)、主題名(Topic Name)、項目名(Item Name)。首先,一個(gè)應用程序作為服務(wù)器必須有一個(gè)服務(wù)名,當客戶(hù)應用程序希望和該服務(wù)器會(huì )話(huà)時(shí),就在發(fā)出鏈接事務(wù)時(shí)指定這個(gè)服務(wù)器,從而識別出該服務(wù)器;主題名是指一個(gè)服務(wù)器所支持的各類(lèi)會(huì )話(huà)主題的名稱(chēng),在一次會(huì )話(huà)期間,客戶(hù)程序只能和服務(wù)器就某一主題進(jìn)行會(huì )話(huà),客戶(hù)在發(fā)出鏈接事務(wù)時(shí)指定所關(guān)心的會(huì )話(huà)主題;項目名是關(guān)于一個(gè)主題的各類(lèi)數據項的名稱(chēng),在鏈接建立以后,客戶(hù)可以請求不同項目的數據,但都只能是屬于當前主題范圍之內。一個(gè)服務(wù)器可以決定自己所能支持的主題以及每個(gè)主題所擁有的各個(gè)項目。因此,服務(wù)名使客戶(hù)以找到服務(wù)器,主題名和項目名則合起來(lái)標識客戶(hù)所需要的數據。

在這里,服務(wù)名為Server,主題名為T(mén)iaoMa,項目名則有兩個(gè),一個(gè)名為BaoJing,專(zhuān)門(mén)傳送異常信息;另一個(gè)名為RuKu,專(zhuān)門(mén)傳送一般信息。

步驟4.結束DDEML使用(BOOL PASCAL cleanUpDDEML(HWND hWnd))

當客戶(hù)已不再需要服務(wù)器的數據時(shí),服務(wù)器需要被撤銷(xiāo)。

4.3 DDE客戶(hù)的實(shí)現工具為VB4.0

Microsoft公司的Visual Basic號稱(chēng)Windows程序開(kāi)發(fā)的快槍手,用它來(lái)開(kāi)發(fā)Windows程序十分方便。我們在VB4.0下開(kāi)發(fā)監控系統的多媒體和數據庫操作部分。因此,需要在VB下創(chuàng )建DDE客戶(hù)程序。具體編程內容如下

(1)確定服務(wù)名、主題名和項目名。在Startup Form假設為Form1)中放入兩個(gè)文本框(假設為T(mén)ext1,Text2),然后在文本框上單擊右鍵,在彈出菜單中選擇Properties屬性,在彈出的屬性對話(huà)框中將Text1和Text2的LinkTopic都設置為“Server1TiaoMa”,LinkItem為“0”Text1的LinkIdtem設置為“RuKu ”, Text2的zlinkIdtem設置為“BaoJing ”,或者可以在Sub Form1_Load()中加入下列幾行

Form1.Text1.LinkTopic=server1TiaoMa

Form1.Text1.LinkItem=RuKu

Form1.Text2.LindTopic=server1tiaoMa

Form1.Text2.LinkItem=BaoJing

(2)建立聯(lián)接.在主控程序中,用VB的Shell()函數啟動(dòng)采集服務(wù)器同時(shí)也是DDE服務(wù)器開(kāi)始采集數據,然后加入下列語(yǔ)句

Form1.Text1.LinkMode=1

Form1.Text2.LinkMode=1

(3)拆除聯(lián)接.在Sub Form1_Unload()中加入下列語(yǔ)句:

Form1.Text1.LinkMode=0

Form1.Text2.LinkMode=0

此時(shí)DDE客戶(hù)程序向DDE服務(wù)器發(fā)出終止鏈接的事務(wù),結束一次DDEML會(huì )話(huà)過(guò)程。

DDE的實(shí)現如圖3所示。

本系統采用了條碼自動(dòng)識別技術(shù),使車(chē)間生產(chǎn)線(xiàn)上的各種信息可以快速準確地傳遞到監控管理系統,以便系統及時(shí)地作出各種反應,提高了工廠(chǎng)生產(chǎn)效率。

在開(kāi)發(fā)過(guò)程中,解決了Windows操作環(huán)境中數據實(shí)時(shí)采集的技術(shù)難題。同時(shí),DDE不失為Windows下進(jìn)程間交換信息的好辦法。Visual Basic這個(gè)Windows應用快速開(kāi)發(fā)工具有不少優(yōu)點(diǎn),用它來(lái)開(kāi)發(fā)多媒體動(dòng)畫(huà)、數據庫查詢(xún)等程序非常方便,但它作為一種解釋執行語(yǔ)言,要將它用在工業(yè)現場(chǎng)實(shí)時(shí)監控系統中,我們不得不慎重考慮它的運行速度可能帶來(lái)的影響,需要采取妥善的辦法加以克服。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>