《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 基于條形碼技術的車間監控系統的實時信息采集

基于條形碼技術的車間監控系統的實時信息采集

2009-02-20
作者:周四軍 王建宇 譚 俊

  摘 要: 探討了使用條形碼作為信息載體的車間監控系統信息采集的實現,分析了所需要的信息及其條碼編碼,介紹了Windows95環境下用RS-232串口中斷方式數據實時采集的實現方法,以及客戶/服務器機構模式下數據采集模塊與監控模塊之間實現動態數據傳送(DDE)的手段。
  關鍵詞: 條形碼 數據采集 動態數據交換(DDE) 中斷


  隨著計算機的廣泛應用,生產技術發生了革命性的變化,柔性制造系統(FMS)已在國外得到較廣泛應用。但對目前我國的大多數企業來說,高度柔性化的制造系統仍是一個難以承受的負擔,在一些生產量大的電器行業,如:電冰箱、洗衣機、空調器等,以人工裝配為主、生產工位多的生產流水線形式仍占主要地位。
  由于缺乏信息監測手段,此類生產系統會出現種種問題:工位負荷缺乏定量關系,無法隨生產目標、生產條件的改變均衡生產;沒有生產監視信息,故障事件得不到及時處理;物流流動缺乏指導,工位連接不暢導致阻塞和缺料事件。
  條形碼(以下簡稱條碼)技術由于其輸入速度快、準確度高、成本低、可靠性強等優點而具有廣泛的應用領域。我們開發的基于條碼技術的車間監控管理系統是這種自動識別技術在工業領域的應用實例,其目的是為了監控某復印機廠裝配流水線的生產狀況。載有各種生產信息的條碼或貼在部件和成品上,或放于相應工位上,流水線出入口配有自動條碼掃描器,各工位上則配有手動條碼掃描器,這些條碼掃描器通過條碼掃描網絡儀連接到車間監控計算機上。實際運行時,自動或手工掃描器將條碼信息送入車間監控計算機上,在其上運行的監控軟件可以動態地模擬整個車間所有流水線的實時動作。一旦發現各個工位的故障及警報信息,及時通知值班人員,值班人員可以通過該系統查詢故障及報警信息,并根據該系統提供的參考處理辦法調度維修人員進行搶修。
1 系統的硬件及軟件結構
  系統的硬件結構如圖1所示。


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


  基于上述系統軟硬件結構,要將條碼信息轉換成反映生產線現狀的控制信號,我們必須完成三方面工作:(1)生產信息分析及編碼;(2)使用RS-232串口進行信息采集;(3)使用DDE實現數據采集模塊與監控模塊的通訊。本文給出以上三方面功能的實現。
2 生產信息分析及編碼
  車間監控系統要用現代化的管理手段, 在生產過程中,最合理地安排好生產流程,及時發現并排除故障,使各生產工序處于最理想的正常工作狀態。為此,所需的生產信息基本上可分為以下幾個方面:
  工件監視
  工件(指裝配線上的部件或成品)的情況,包括當前位置、裝配狀態、裝配時間、關鍵測試數據。
  操作工監視
  包括操作工崗位、工作狀態、技術水平及突發請求等的監視。
  生產過程監視
  包括流水線開工/停工,生產系統物流狀態,各生產單元完成工件的品種及數量,各工位實際勞動負荷等。
  故障監視
  包括直接故障及間接故障。直接故障是指明確包括故障源的故障信息,如設備故障、零件不足等;間接故障指未知故障源引發的系統級故障,如系統生產率明顯低于額定生產率等。
  關鍵工位監視
  包括對直接影響整個生產系統流程的重要工位各種數據的監視。主要有生產勞動負荷相對飽和的工位、生產限制條件多的工位(如零件品種多,供應源多,輔助設備多等)、技術工藝要求高的工位等等。
  基于以上生產信息的分析,監控管理系統必須實現對跟蹤、監測對象的自動識別。目前最好的辦法就是采用條碼自動識別技術。工業上最常采用的是39碼,本系統也采用這一碼制。用39碼制設計以上生產信息所需的條碼如下:
  · 工件標簽條碼:每個成品或重要部件上都貼有條碼,是其身份的標識。
  · 考勤條碼:載有該工位上操作工的信息。
  · 操作狀態條碼:載有裝配開始/結束信息,用于工位操作狀態的監視。
  · 設備故障/故障排除條碼:用于監測設備故障。
  · 異常報警條碼:用于表示除設備故障外的各種故障信息。
  ·流水線狀態條碼:載有流水線開工和停止生產等信息。
  · 撤銷輸入條碼:表示撤銷前一次的條碼輸入,用于工位數據輸入的容錯。
  條碼實例:
  
3 數據采集模塊的RS-232串口通訊
  本監控系統中條碼信息經過條碼掃描器送到車間監控計算機的串口COM2上(COM1被鼠標占用)。所以條碼信息的實時采集就是串口數據實時采集。 Windows95平臺下串口通訊的實現有以下三種方法:
  (1) 定時采集方式。設置一個定時器,每隔一段時間產生一個WM_TIMER消息,該消息的相應函數讀取串口緩沖器中的數據。這種方法實現簡單,但有以下幾個缺點:一是受Windows計時器數據分辨率的限制,最高采樣頻率為18.2Hz。另外WM_TIMER消息在Windows消息隊列中優先權低,可能得不到及時響應。最重要的一點是Windows會將消息隊列中沒有來得及處理的幾個WM _TIMER消息合并成一個,這意味著前幾次定時器消息沒有得到響應,因而可能導致數據丟失。
  (2)在Win95操作平臺下,利用其支持多線程的特點,開辟一個線程專門讀取串口數據。每當串口有數據到來時,此線程被激活,讀取串口緩沖器中的數據;無數據時,該線程被掛起。盡管可以設置線程的優先級,這種采集方式仍稱不上實時通訊。
  (3) 保護模式下的中斷方式。Windows支持一種特殊的DOS服務,稱為DOS保護模式接口DPMI(DOS Protected Mode Interface),由一些INT 2FH和INT 31H組成??梢杂密浿袛郔NT 31H掛住保護模式中斷向量,以中斷方式處理外部實時事件。這種方式對數據量不太大但需要準確及時響應的條碼信息采集很適用,因此,我們采用這種方式。具體實現方案如下:
  信息采集模塊主窗口第一次被創建時,Windows向它傳遞WM_CREATE消息,在該消息響應函數中調用INT 31H的0204H功能將老的中斷向量保存起來,用INT 31H的0205H號功能將中斷向量指向新的中斷服務例程;監控管理模塊退出時,Windows將向它傳遞WM_DESTROY消息,在該消息響應函數中調用INT 31H的0205H功能恢復老的中斷服務例程。以上步驟在VC++1.52集成開發環境中,采用嵌入匯編方式加以實現。主要包括以下幾個函數:
  · 初始化串口2(VOID PASCAL InitCom2())
  保存COM2的當前狀態,然后把COM2的波特率設置為9600,每個字符8bits,1個停止位。允許0xoc號中斷。
  · 中斷初始化(BOOL PASCAL InitComm())
  調用DMPI,保存舊的0CH號保護模式中斷向量,設置新的保護模式中斷服務例程。
  · 中斷服務例程(void __interrupt __far new_int())
  處理信息的接收。判斷信息類型。如是異常信息,就向主窗口發送一自定義WM_INTERRUPT1消息;如是一般信息,則發送一WM_INTERRUPT2消息。
  · 中斷恢復 (VOID PASCAL Restore_Comm())
  恢復COM2狀態,恢復0CH保護模式向量。
  每當串口有條碼信息到來,0CH中斷將發生,保證消息得到及時處理,因而實現了條碼信息的實時采集。
4 數據采集模塊與監控模塊之間DDE的實現
  數據采集模塊采用中斷方式實時采集串口COM2的條碼信息的同時,還需將所采集的數據傳遞給監控模塊。這兩者之間的信息交換采用Windows系統的動態數據交換(DDE)來實現。
4.1 動態數據交換(DDE)
  動態數據交換(DDE)是一種進程之間的通信形式,而DDE會話則是實現進程通信的手段,它總是在一個客戶程序和一個服務器程序之間進行的。啟動會話并要求接收數據的應用程序是客戶程序。響應客戶程序的要求并提供數據的程序是服務器程序。
  在早期的Windows版本中,DDE會話是通過進程之間互相發送消息的形式來實現的,DDE協議就是一組預定義的消息,被發送的數據包含在消息的兩個參數(wParam和lParam)中。
  在Windows3.0以后的版本中,采用了一種先進的DDE方案,即動態數據交換管理庫(DDEML),DDEML提供了一系列API,將傳統的DDE消息及附屬的各種特征封裝在一個函數調用接口中,應用程序通過調用DDEML中的函數實現DDE會話,從而交換數據或互相提供服務。在DDEML中,進程之間傳遞的是事務(事務是對數據和服務的請求,表現為一組預定義的常量),整個通訊過程都是圍繞著事務進行的:首先,客戶程序向服務器程序發出建立聯接的事務,服務器響應之后,聯接便建立起來;之后,客戶向服務器發出請求數據的事務,服務器便向客戶提供所需的數據,這一過程可以在建立聯接之后多次進行;最后,當客戶不再需要數據時,便向服務器發出終止聯接的事務,從而結束一次DDEML會話過程。
4.2 DDE服務器的實現(工具為VC++1.52)
  DDE會話有三種方式,冷鏈、溫鏈、熱鏈。由于采集的數據要及時得到監控程序的處理,我們就采用了熱鏈方式來傳送數據,即只要一有數據到來,采集服務器就立即把此數據傳送到監控程序。
  下面我們應用DDEML機制來實現數據傳輸編程。其步驟如下:
  步驟1.創建用于處理各類DDEML事務的回調函數(HDDEDATA EXPENTRY_export DdeCallBack(WORD wType,WORD wFmt,HCONV hConv,HSZ hsz1,HSZ hsz2,HDDEDATA hData,DWORD lData1,DWORD lData2))
  在DDEML中,進程之間傳遞的是事務,根據實際的需要,回調函數應處理的事務如下:
  ·XTYP_CONNECT及XTYP_CONNECT_CONFIRM
  證實客戶是否已連接到了采集服務器。
  ·XTYP_ADSTART
  回復客戶熱鏈開始的申請。
  ·XTYP_ADVREQ
  當采集服務器一接收到信息時,就向客戶傳遞此信息,實現動態數據交換。
  ·XTYP_ADVSTOP
  回復客戶熱鏈結束的申請。
  ·XTYP_DISCONNECT
  回復客戶和服務器之間鏈接結束的申請。
  步驟2.初始化DDEML (BOOL PASCAL InitializeDDEML(HWND hWnd))通知DDEML該程序將開始使用DDE機制。
  步驟3.登記服務名、主題名和項目名 (BOOL PASCAL InitializeDDEML(HWND hWnd))
  這涉及到WINDOWS的三級服務名稱管理體系。它們是;服務名(Server Name)、主題名(Topic Name)、項目名(Item Name)。首先,一個應用程序作為服務器必須有一個服務名,當客戶應用程序希望和該服務器會話時,就在發出鏈接事務時指定這個服務器,從而識別出該服務器;主題名是指一個服務器所支持的各類會話主題的名稱,在一次會話期間,客戶程序只能和服務器就某一主題進行會話,客戶在發出鏈接事務時指定所關心的會話主題;項目名是關于一個主題的各類數據項的名稱,在鏈接建立以后,客戶可以請求不同項目的數據,但都只能是屬于當前主題范圍之內。一個服務器可以決定自己所能支持的主題以及每個主題所擁有的各個項目。因此,服務名使客戶以找到服務器,主題名和項目名則合起來標識客戶所需要的數據。
  在這里,服務名為Server,主題名為TiaoMa,項目名則有兩個,一個名為BaoJing,專門傳送異常信息;另一個名為RuKu,專門傳送一般信息。
  步驟4.結束DDEML使用(BOOL PASCAL CleanUpDDEML(HWND hWnd))
  當客戶已不再需要服務器的數據時,服務器需要被撤銷。
4.3 DDE客戶的實現(工具為VB4.0)
  Microsoft公司的Visual Basic號稱Windows程序開發的快槍手,用它來開發Windows程序十分方便。我們在VB4.0下開發監控系統的多媒體和數據庫操作部分。因此,需要在VB下創建DDE客戶程序。具體編程內容如下:
  (1) 確定服務名、主題名和項目名。在Startup Form(假設為Form1)中放入兩個文本框(假設為Text1,Text2),然后在文本框上單擊右鍵,在彈出菜單中選擇Properties(屬性),在彈出的屬性對話框中將Text1和Text2的LinkTopic都設置為“Server|TiaoMa”,LinkMode為“0”;Text1的LinkItem設置為“RuKu ”, Text2的LinkItem設置為“BaoJing ”,或者可以在Sub Form1_Load()中加入下列幾行:
  Form1.Text1.LinkTopic=″server|TiaoMa″
  Form1.Text1.LinkItem=″RuKu″
  Form1.Text2.LinkTopic=″server|TiaoMa″
  Form1.Text2.LinkItem=″BaoJing″
  (2) 建立聯接.在主控程序中,用VB的Shell( )函數啟動采集服務器(同時也是DDE服務器)開始采集數據,然后加入下列語句:
  Form1.Text1.LinkMode=1
  Form1.Text2.LinkMode=1
  (3) 拆除聯接.在Sub Form1_Unload( )中加入下列語句:
  Form1.Text1.LinkMode=0
  Form1.Text2.LinkMode=0
  此時DDE客戶程序向DDE服務器發出終止鏈接的事務,結束一次DDEML會話過程。
  DDE的實現如圖3所示。


  本系統采用了條碼自動識別技術,使車間生產線上的各種信息可以快速準確地傳遞到監控管理系統,以便系統及時地作出各種反應,提高了工廠生產效率。
  在開發過程中,解決了Windows操作環境中數據實時采集的技術難題。同時,DDE不失為Windows下進程間交換信息的好辦法。Visual Basic這個Windows應用快速開發工具有不少優點,用它來開發多媒體動畫、數據庫查詢等程序非常方便,但它作為一種解釋執行語言,要將它用在工業現場實時監控系統中,我們不得不慎重考慮它的運行速度可能帶來的影響,需要采取妥善的辦法加以克服。
參考文獻
1 周建榮.工業生產系統的故障監控和診斷實時專家系統開發工具的研究.信息與控制,1994;23(1):53~58
2 李郝林,孔祥利,史維祥.生產監控系統研究概況.信息與控制,1991;20(1):33~38
3 疏松桂,譚 民.非串行CIMS生產線可靠性建模、分析與綜合.自動化學報,1994;20(6),642~649
4 李金哲,朱俊英,黃增滿,劉義春.條形碼自動識別技術.北京:國防工業出版社
5 張國峰.Windows應用程序設計——原理、方法和技巧.北京:電子工業出版社
6 楊國才,武偉,何國斌.VB4.0實用技術與方法,成都:電子科技大學出版社
7 謝金寶,虞琦.Visual Basic程序設計.上海:上海交通大學出版社

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: **aaaa**毛片在线播放| 中文成人无字幕乱码精品区| 男人的天堂一区二区视频在线观看| 国产成人亚洲综合欧美一部| GOGOGO免费高清在线中国| 日本pissjapantv厕所自| 亚洲国产成人久久综合区| 精品久久久久久中文字幕大豆网 | 亚洲一区二区三区免费在线观看| 疯狂做受xxxx高潮欧美日本| 国产主播精品福利19禁vip| 色www永久免费网站| 天天做日日做天天添天天欢公交车 | 国产精品无码AV天天爽播放器 | 毛片毛片免费看| 午夜人性色福利无码视频在线观看| 麻豆国产福利91在线| 国产综合精品一区二区| 一二三四社区在线中文视频| 日本亚洲娇小与非洲黑人tube| 亚洲人成电影在线观看青青| 激情久久av一区av二区av三区| 台湾佬中文娱乐在线| 韩国伦理电影我妻子的秘密| 国产精品久久久久久久久齐齐| 99久热只有精品视频免费观看17| 性欧美69式xxxxx| 久久久久国产视频| 最近中文字幕2018中文字幕6| 亚洲第一福利视频| 穿长筒袜的有夫之妇hd中文| 国产va免费精品观看精品| 黄在线观看在线播放720p| 国产精品免费看久久久久| 99爱在线视频| 婷婷无套内射影院| 丰满肥臀风间由美系列| 日韩乱码人妻无码中文字幕视频 | 青娱乐国产精品| 国产日韩欧美中文字幕| 18禁裸男晨勃露j毛免费观看|