摘 è¦ï¼šåœ¨ç°¡è¦ä»‹ç´¹OPC 技術的基礎上,æè¿°äº†OPCæœå‹™å™¨çš„çµæ§‹åŠé–‹ç™¼æ¥é©Ÿï¼Œè©³ç´°è¬›è¿°äº†OPC技術在CAN總線系統ä¸çš„實ç¾ã€‚
é—œéµè©žï¼šOPC OPCæœå‹™å™¨ COM ç¾å ´ç¸½ç·š
1 OPC技術簡介
  1.1 什么是OPC
  OPC(OLE for Process Control),å³ç”¨äºŽéŽç¨‹æŽ§åˆ¶çš„å°è±¡éˆæŽ¥èˆ‡åµŒå…¥æŠ€è¡“,是一種è¦èŒƒï¼Œæ˜¯åœ¨å·¥æ¥æŽ§åˆ¶å’Œç”Ÿç”¢è‡ªå‹•åŒ–é ˜åŸŸä¸ä½¿ç”¨çš„ç¡¬ä»¶å’Œè»Ÿä»¶çš„æŽ¥å£æ¨™æº–。OPC以組件å°è±¡æ¨¡åž‹å’Œåˆ†å¸ƒå¼çµ„ä»¶å°è±¡æ¨¡åž‹ï¼ˆCOM/DCOM)技術為基礎,采用客戶/æœå‹™å™¨ï¼ˆClient/Server)的模å¼ï¼Œå®šç¾©äº†ä¸€çµ„COMå°è±¡åŠå…¶æŽ¥å£æ¨™æº–。
  OPCè¦èŒƒæ˜¯ç”±ä¸–界范åœå…§è‡ªå‹•åŒ–é ˜åŸŸä¸è™•äºŽé ˜å°Žåœ°ä½çš„硬件和軟件開發商,在微軟的å”ä½œä¸‹åˆ¶å®šçš„ï¼Œå¹¶ä¸”å·²ç¶“å¾—åˆ°è¶Šä¾†è¶Šå¤šçš„å®¢æˆ¶å’Œç¡¬ä»¶åˆ¶é€ å•†çš„èªå¯ã€‚
  1.2 OPCçš„æ„義
  在傳統的控制系統ä¸ï¼Œé‡å°åŒä¸€å€‹ç¡¬ä»¶è¨å‚™ï¼Œæ¯å€‹æ‡‰ç”¨è»Ÿä»¶éƒ½è¦æ ¹æ“šè‡ªå·±çš„需求開發一套硬件驅動程åºã€‚這ä¸åƒ…åŠ å¤§äº†é–‹ç™¼å’Œç¶è·è²»ç”¨ï¼Œè€Œä¸”å¸¶ä¾†äº†è¨ªå•æ²–çªå•題。
  OPC技術將å„個硬件è¨å‚™é©…動程åºå’Œé€šè¨Šç¨‹åºå°è£æˆç¨ç«‹çš„OPCæœå‹™å™¨ï¼Œä¸Šå±¤æ‡‰ç”¨è»Ÿä»¶ï¼ˆä½œç‚ºOPC客戶端)å¯ä»¥ä¸é—œå¿ƒç¡¬ä»¶çš„æ€§èƒ½ç‰¹é»žï¼Œè€Œé€šéŽæ¨™æº–çš„OPC接å£è¨ªå•OPCæœå‹™å™¨ã€‚
  這樣ä¸åƒ…解決了上述å•題,而且實ç¾äº†è»Ÿä»¶çš„â€œå³æ’å³ç”¨â€ã€‚OPC相當于一塊軟件“主æ¿â€ï¼Œå®ƒèƒ½å¤ 直接與ç¾å ´çš„PLCã€å·¥æ¥ç¶²çµ¡ã€æ•¸æ“šé‡‡é›†å’ŒWindows CEè¨å‚™é€£æŽ¥ï¼Œå¿«é€Ÿæœ‰æ•ˆåœ°ç²å–ç¾å ´å¯¦æ™‚數據。PC機內的å„ç¨®ç›£è¦–ã€æŽ§åˆ¶å’Œç®¡ç†ç‰æ‡‰ç”¨è»Ÿä»¶å‰‡åƒæ˜¯æ’在OPC主æ¿ä¸Šçš„軟件“芯片â€ï¼ŒèŠ¯ç‰‡å¯ä»¥é€šéŽOPCç²å¾—ç¾å ´å¯¦æ™‚數據,芯片之間也å¯ä»¥æŒ‰ç…§OPCå”è°é€²è¡Œé€šè¨Šï¼Œå¾žè€Œå¯¦ç¾è»Ÿä»¶çš„â€œå³æ’å³ç”¨â€ã€‚
  1.3 OPCå°è±¡èˆ‡æŽ¥å£
  OPCçš„æ ¸å¿ƒæ˜¯COM/DCOM技術。在COM模型ä¸ï¼Œè»Ÿä»¶çš„功能被分解為一些組件,這些組件通éŽCOMå”è°åœ¨ä¸€å®šæ¢ä»¶ä¸‹é€£æŽ¥èµ·ä¾†ï¼Œå¯¦ç¾ç›¸æ‡‰çš„功能。COMå°è±¡åˆ†ç‚ºå®¢æˆ¶ç«¯å’Œæœå‹™å™¨å…©é¡žï¼Œå®¢æˆ¶ç«¯é€šéŽCOM接å£è¨ªå•æœå‹™å™¨[2]。
  OPC數據訪å•è¦èŒƒæè¿°äº†OPCæœå‹™å™¨éœ€è¦å¯¦ç¾çš„COMå°è±¡åŠå…¶æŽ¥å£ï¼Œå®ƒå®šç¾©äº†å®šåˆ¶æŽ¥å£ï¼ˆcustom interface)和自動化接å£ï¼ˆautomation interface)[1]。OPC客戶程åºé€šé޿ޥå£èˆ‡æœå‹™å™¨é€šè¨Šï¼Œé–“æŽ¥è®€å–æ•¸æ“šã€‚OPCæœå‹™å™¨å¿…é ˆå¯¦ç¾å®šåˆ¶æŽ¥å£ï¼Œä¹Ÿå¯ä»¥æœ‰é¸æ“‡åœ°å¯¦ç¾è‡ªå‹•化接å£ã€‚一般來說,自動化接å£èƒ½ç‚ºVBç‰é«˜ç´šèªžè¨€å®¢æˆ¶ç¨‹åºæä¾›æ¥µå¤§çš„便利,但數據傳輸效率較低;而定制接å£å‰‡ç‚ºç”¨C/C++語言編寫的程åºå¸¶ä¾†éˆæ´»é«˜æ•ˆçš„調用手段。
  OPC客戶程åºè¨ªå•æœå‹™å™¨æ™‚,創建一個æœå‹™å™¨å°è±¡ï¼ˆé€™é‡ŒæŒ‡çš„æ˜¯é‚輯å°è±¡ï¼Œç›®çš„æ˜¯åˆ©ç”¨é€™å€‹é‚輯å°è±¡å»ºç«‹èˆ‡å¯¦éš›æœå‹™å™¨çš„é€£æŽ¥ï¼‰ï¼Œèª¿ç”¨é€™å€‹æœå‹™å™¨å°è±¡çš„æŽ¥å£ï¼Œæœå‹™å™¨å°è±¡å‰µå»ºçµ„å°è±¡å¹¶è¿”回組å°è±¡çš„æŒ‡é‡ï¼Œå®¢æˆ¶ç¨‹åºç²å¾—組å°è±¡çš„æŒ‡é‡åŽèª¿ç”¨å…¶æŽ¥å£ã€‚
  注æ„,OPCé …å¹¶ä¸æ˜¯OPC客戶直接æ“作的å°è±¡ï¼Œå› 為OPCé …æ²’æœ‰å®šç¾©å¤–éƒ¨æŽ¥å£ï¼Œå°è±¡çš„æ‰€æœ‰æ“作都是通éŽåŒ…å®¹è©²é …çš„çµ„å°è±¡é€²è¡Œçš„。
2 OPCæ•¸æ“šè¨ªå•æœå‹™å™¨çš„çµæ§‹åŠè¨è¨ˆæ¥é©Ÿ
  2.1 OPCæ•¸æ“šè¨ªå•æœå‹™å™¨çš„çµæ§‹
[align=center]

圖 1 OPCæ•¸æ“šè¨ªå•æœå‹™å™¨çš„çµæ§‹[/align]
  本文實ç¾çš„OPCæ•¸æ“šè¨ªå•æœå‹™å™¨å…·æœ‰æ•¸æ“šé‡‡é›†çš„功能,æä¾›ç¬¦åˆOPCè¦èŒƒçš„定制接å£ã€‚主è¦ç”±OPC æœå‹™å™¨å°è±¡ã€OPC 組å°è±¡ã€OPC é …å°è±¡å’Œé‡å°CAN(Controller Area Network控制器局域網)通訊å¡ç·¨å¯«çš„I/O å‹•æ…‹éˆæŽ¥åº«ï¼ˆDLL)組æˆï¼Œé‡‡ç”¨å¦‚圖1æ‰€ç¤ºçš„çµæ§‹ã€‚
  OPC æœå‹™å™¨å°è±¡æ˜¯å®¢æˆ¶ç«¯èˆ‡æœå‹™å™¨äº¤äº’的首è¦å°è±¡ã€‚客戶端通éŽè¨ªå•æœå‹™å™¨å°è±¡çš„æŽ¥å£å‡½æ•¸èˆ‡ä¹‹é€²è¡Œäº¤äº’。一個æœå‹™å™¨å°è±¡é‡Œå¯ä»¥è¨ç½®ä¸€å€‹ä»¥ä¸Šçš„組å°è±¡ã€‚OPC æœå‹™å™¨å°è±¡çš„主è¦åŠŸèƒ½æ˜¯ï¼šâ‘ å‰µå»ºå’Œç®¡ç†OPC 組å°è±¡;â‘¡ç®¡ç†æœå‹™å™¨å…§éƒ¨çš„狀態信æ¯;③將æœå‹™å™¨çš„éŒ¯èª¤ä»£ç¢¼ç¿»è¯æˆæè¿°æ€§èªžå¥;â‘£ç€è¦½æœå‹™å™¨å…§éƒ¨çš„æ•¸æ“šçµ„ç¹”çµæ§‹ã€‚
  OPC 組å°è±¡ç”¨äºŽçµ„ç¹”ç®¡ç†æœå‹™å™¨å…§éƒ¨çš„實時數據信æ¯ï¼Œå®ƒæ˜¯OPC é …å°è±¡çš„集åˆã€‚æ£å› 為有了組å°è±¡ï¼ŒOPC應用程åºå°±å¯ä»¥æˆæ‰¹åœ°å°æ‰€éœ€è¦çš„æ•¸æ“šé€²è¡Œè¨ªå•,也å¯ä»¥ä»¥çµ„為單ä½å•Ÿå‹•æˆ–åœæ¢æ•¸æ“šè¨ªå•。其主è¦åŠŸèƒ½æ˜¯ï¼šâ‘ ç®¡ç†çµ„å°è±¡å…§éƒ¨çš„狀態信æ¯;②創建和管ç†é …å°è±¡;â‘¢OPCæœå‹™å™¨å…§éƒ¨çš„實時數據å˜å–æœå‹™ï¼ˆåŒæ¥æˆ–ç•°æ¥æ–¹å¼ï¼‰ã€‚
  OPC æœå‹™å™¨å°è±¡å’Œçµ„å°è±¡æ”¯æŒçš„æŽ¥å£ç”±OPCè¦èŒƒå®šç¾©ï¼Œä½†å¹¶æœªè¦å®šå…·é«”如何實ç¾ï¼Œéœ€è¦é–‹ç™¼äººå“¡è‡ªå·±å®Œæˆã€‚
  OPCé …å‰‡èˆ‡ç¾å ´è¨å‚™ä¸çš„æ¨¡å¡Šç›¸å°æ‡‰ï¼Œå®ƒåŒ…嫿•¸æ“šé …的值(value)ã€å“質(quality)和時間戳(time stamp)。
  I/O DLL是é‡å°å…·é«”硬件è¨å‚™é–‹ç™¼çš„驅動程åºï¼Œå¯¦ç¾å¾žç¾å ´è¨å‚™è®€å–數據的功能。
  2.2 實ç¾OPCæ•¸æ“šè¨ªå•æœå‹™å™¨çš„ä¸»è¦æ¥é©Ÿï¼š
  2.2.1 ç²å¾—并注冊OPC標準組件
ã€€ã€€æ ¹æ“šCOMè¦èŒƒï¼ŒCOMæœå‹™å™¨å¯åˆ†ç‚ºé€²ç¨‹å…§æœå‹™å™¨ã€æœ¬åœ°æœå‹™å™¨å’Œé 程æœå‹™å™¨ã€‚åŽå…©ç¨®æœå‹™å™¨èˆ‡å®¢æˆ¶ç¨‹åºé‹è¡Œåœ¨ä¸åŒçš„進程空間,屬于進程外æœå‹™å™¨ã€‚為了實ç¾é€²ç¨‹é–“通訊,需è¦ç”¨åˆ°ä»£ç†/å˜æ ¹æ¨¡å¡Šã€‚代ç†/å˜æ ¹æ¨¡å¡Šç”±æŽ¥å£æè¿°èªžè¨€ï¼ˆIDL)直接生æˆã€‚OPC基金會為æ¯ç¨®OPCæœå‹™å™¨æä¾›äº†ç›¸æ‡‰çš„代ç†/å˜æ ¹å‹•æ…‹éˆæŽ¥åº«ï¼Œé€™äº›æ–‡ä»¶å¯ä»¥åœ¨OPC基金會的網站(www.opcfoundation.org)上å…費下載。
  注æ„,è¨è¨ˆOPCæœå‹™å™¨æ™‚å¯ä»¥åœ¨OPCå°è±¡ä¸Šå¢žåŠ æŽ¥å£ä»¥æ»¿è¶³ç‰¹å®šçš„è¦æ±‚,但ä¸èƒ½ä¿®æ”¹æ¨™æº–çš„OPC IDL文件或相應的 proxy/stub DLLã€‚æ–°å¢žçš„æŽ¥å£æè¿°æ‡‰å®šç¾©åœ¨ç¨ç«‹çš„IDL文件ä¸ï¼Œå¹¶ç”±è©²æ–‡ä»¶ç”Ÿæˆç¨ç«‹çš„代ç†/å˜æ ¹æ¨¡å¡Šä¾†å®ŒæˆæŽ¥å£çš„調用工作。
  組件的注冊將在åŽé¢ä»‹ç´¹ã€‚
  2.2.2 編寫OPCæœå‹™å™¨ä»£ç¢¼
  首先定義0PC數據æœå‹™å™¨çš„å稱(ProgID)和類標è˜ï¼ˆCLSID),實ç¾COM庫的åˆå§‹åŒ–功能和0PC數據æœå‹™å™¨é¡žå» å°è±¡çš„æŽ¥å£åŠŸèƒ½ã€‚ç„¶åŽå¯¦ç¾OPCå°è±¡å’Œæ•¸æ“šç·©æ²–å€ã€‚接下來é‡å°å…·é«”硬件編寫I/O DLLï¼Œå¯¦ç¾æ•¸æ“šçš„實時讀å–ã€‚é€™é …å·¥ä½œæ˜¯å分ç¹é‡çš„ï¼Œè¦æ±‚開發人員具有良好的COM編程知è˜ï¼Œå…·é«”éŽç¨‹é™äºŽç¯‡å¹…ä¸èƒ½è©³è¿°ï¼Œé€™é‡ŒæŒ‡å‡ºå…©é»žå¼•起注æ„:
  ⑴全局唯一標è˜ç¬¦ï¼ˆGUID)
  GUID是為æ¯å€‹COMå°è±¡æä¾›çš„åå…å—ç¯€æ¨™è˜æ•¸ã€‚COM類至少有兩個GUID:類標è˜ï¼ˆCLSIDï¼‰å’ŒæŽ¥å£æ¨™è˜ï¼ˆIID)。CLSID用于標è˜COM類,登記在Windows注冊表ä¸ï¼ŒåŒ…嫿Œ‡å‘包括COM類的DLL或EXE組件的路徑。IID用于標è˜è©²é¡žçš„æŽ¥å£ï¼Œè¢«æ‡‰ç”¨ç¨‹åºç”¨ä¾†æŸ¥è©¢å’Œè§¸ç™¼è©²é¡žçš„æ–¹æ³•,也登記在注冊表ä¸ã€‚由于å°è±¡é¡žæ˜¯ç”±GUID標è˜çš„ï¼Œæ‰€ä»¥å¿…é ˆä¿è‰å®ƒå€‘的唯一性,æ‰èƒ½ä½¿æœ€çµ‚用戶在使用由ä¸åŒè»Ÿä»¶å•†é–‹ç™¼çš„çµ„ä»¶æ™‚ä¸æœƒç™¼ç”Ÿæ²–çªã€‚
  å¯ä»¥ä½¿ç”¨å®DEFINE_GUID (name , long , word , word , word , byte1 , … ,byte8 )
ã€€ã€€å…¶ä¸ name æ˜¯æ¨™è˜æ•¸çš„åå—ï¼Œå…¶ä½™åƒæ•¸æ˜¯å¯¦éš›çš„ID碼。類標è˜çš„命必£ä¾‹æ˜¯CLSID_ClassName ,而接å£IDçš„å‘½åæ…£ä¾‹æ˜¯IID_InterfaceName。
  有兩種途徑來ç²å¾—GUID:
  ①Microsoft Visual C++æä¾›äº†å…©å€‹å·¥å…·ä¾†ç”¢ç”ŸGUID:UUIDGen.exeå’ŒGUIDGen.exe(大å°å¯«æ²’有影響)。å‰è€…是一個命令行程åºï¼Œç›´æŽ¥ç”¢ç”Ÿä¸€å€‹GUID;åŽè€…是一個基于å°è©±æ¡†çš„æ‡‰ç”¨ç¨‹åºï¼Œé‹è¡ŒUUIDGen.exe,產生一個Create GUIDå°è©±æ¡†ã€‚它æä¾›å››ç¨®æ ¼å¼ï¼Œé¸å®šä¹‹åŽï¼ŒæŒ‰New GUIDéµç”¢ç”Ÿæ–°çš„GUID,顯示在Result欄ä¸;按Copyéµå¯ä»¥å¾©åˆ¶ç”¢ç”Ÿçš„çµæžœã€‚
  ②利用COM庫æä¾›çš„API函數來產生GUID:
  HRESULT CoCreateGuid (GUID *pguid )
  如果創建GUIDæˆåŠŸï¼Œå‰‡å‡½æ•¸è¿”å›žS_OK,并且pguidå°‡æŒ‡å‘æ‰€å¾—到的GUID值。
  ⑵OPC組件的注冊
  注冊表是客戶和組件程åºå…±åŒè¨ªå•的信æ¯å€‰åº«ï¼Œé€šå¸¸æƒ…æ³ä¸‹ï¼Œç•¶çµ„件程åºè¢«å®‰è£åˆ°è¨ˆç®—機上之åŽï¼Œå¿…é ˆé€šéŽæŸç¨®é€”å¾‘æŠŠå®ƒçš„ä¿¡æ¯æ³¨å†Šåˆ°æ³¨å†Šè¡¨ä¸ï¼Œç„¶åŽå®¢æˆ¶ç¨‹åºæ‰èƒ½æ ¹æ“šæ³¨å†Šè¡¨ä¸çš„ä¿¡æ¯å°çµ„件程åºé€²è¡Œæ“作。
ã€€ã€€æ ¹æ“šCOMè¦èŒƒï¼Œçµ„件程åºå¯åˆ†ç‚ºè‡ªæ³¨å†Šçµ„件程åºå’Œéžè‡ªæ³¨å†Šçµ„件程åºã€‚OPC基金會æä¾›çš„組件都是自注冊組件。å°äºŽéžè‡ªæ³¨å†Šçµ„件程åºï¼Œå…¶æ³¨å†ŠéŽç¨‹èˆ‡çµ„ä»¶ç¨‹åºæ²’æœ‰ç›´æŽ¥é—œç³»ï¼Œå¿…é ˆå–®ç¨é€²è¡Œæ³¨å†Šä¿¡æ¯çš„é…置,比如,å¯ä»¥ç·¨å¯«ä¸€å€‹æ³¨å†Šè¡¨æ–‡ä»¶ï¼Œç„¶åŽåœ¨RegEditä¸å¼•入。
  å°äºŽDLLå½¢å¼çš„進程內自注冊組件,Windows系統æä¾›äº†RegSvr32.exeæ³¨å†Šå·¥å…·é€²è¡Œçµ„ä»¶æ³¨å†Šå’Œæ³¨éŠ·ã€‚çµ„ä»¶ç¨‹åºæœ¬èº«å¿…é ˆåŒ…å«DllRegisterServerå’ŒDllUnregisterServer兩個注冊表入å£å‡½æ•¸ã€‚æ³¨å†Šå’Œæ³¨éŠ·çš„æ ¼å¼åˆ†åˆ¥ç‚ºï¼š
  RegSvr32 <系統路徑>
  RegSvr32 /u <系統路徑>
  å°äºŽEXEå½¢å¼çš„進程外自注冊組件,COMè¦èŒƒè¦å®šï¼Œå¿…é ˆæ”¯æŒå…©å€‹å‘½ä»¤è¡Œåƒæ•¸/RegServerå’Œ/UnregServer(大å°å¯«ç„¡é—œï¼Œå¹¶ä¸”“/â€å¯ä»¥ç”¨â€œ-â€ä»£æ›¿ï¼‰ï¼Œä»¥ä¾¿å®Œæˆæ³¨å†Šå’Œæ³¨éŠ·æ“ä½œã€‚æ³¨å†Šå’Œæ³¨éŠ·çš„æ ¼å¼åˆ†åˆ¥ç‚ºï¼š
  <系統路徑> /RegServer
  <系統路徑> /UnregServer
  2.2.3 測試OPCæœå‹™å™¨
  OPCæœå‹™å™¨ç¶“éŽèª¿è©¦ä¹‹åŽï¼Œé‚„需è¦åˆ©ç”¨OPC客戶程åºå°å®ƒçš„主è¦åŠŸèƒ½é€²è¡Œæ¸¬è©¦ã€‚
3 OPC技術在CANç¾å ´ç¸½ç·šç³»çµ±ä¸çš„æ‡‰ç”¨
  本文開發的OPCæœå‹™å™¨æ˜¯é‡å°è¯æŽ§å…¬å¸çš„CAN通訊å¡ç·¨å¯«çš„ï¼Œç”¨äºŽå¾žè¯æŽ§çš„CAN通訊å¡å’ŒRSM智能模塊組æˆçš„ç¾å ´é€šè¨Šç¶²çµ¡ä¸è®€å–ä¿¡æ¯ã€‚
  3.1 系統組æˆ
  系統主è¦ç”±ä¸Šä½æ©Ÿï¼Œ CAN通訊å¡ï¼ŒOPC 客戶端,OPCæœå‹™å™¨ï¼ŒRSM智能模塊,通訊媒體ç‰çµ„æˆã€‚如圖2所示。
[align=center]

圖2 系統構æˆ[/align]
ã€€ã€€â‘ ä¸Šä½æ©Ÿçš„軟ã€ç¡¬ä»¶é…置: Microsoft Windows 98/2000 或Windows NTæ“作系統;32M以上內å˜ã€1G以上å¯ç”¨ç¡¬ç›¤ç©ºé–“ã€SVGA顯示å¡ã€‚
  ②CAN通訊å¡é¸ç”¨è¯æŽ§å…¬å¸çš„HK-CAN30B,它是一種將CAN通訊å”è°èˆ‡PC機PCIç¸½ç·šæ¨™æº–ç›¸é€£æŽ¥çš„éžæ™ºèƒ½CANæ’å¡ï¼Œé€šéŽè©²å¡å¯å°å·¥æ¥ç¾å ´å…·æœ‰CAN通訊接å£çš„儀表和控制è¨å‚™é€²è¡Œç›£æŽ§ã€‚
  ③CANç¾å ´è¨å‚™é¸ç”¨è¯æŽ§çš„RSM智能模塊,æ¯å€‹æ¨¡å¡Šéƒ½æ˜¯åœ¨ä¸€å€‹åµŒå…¥å¼å¯¦æ™‚å¤šä»»å‹™çš„å…§æ ¸ç®¡ç†ä¸‹å‘¨æœŸæ€§å·¥ä½œï¼ŒæŒ‰çµ„æ…‹è¦æ±‚定時地å‘上發é€å’Œå–得數據。
  ④通訊媒體å¯ä»¥é¸ç”¨é›™çµžç·šã€å¸¶å±è”½é›™çµžç·šç‰ã€‚
  ⑤客戶端é¸ç”¨åŠ›æŽ§å…¬å¸çš„力控2.6監控組態軟件。力控2.6支æŒOPC技術。它作為OPC客戶端,充分利用了OPCæœå‹™å™¨çš„強大性能,為工程人員æä¾›äº†æ–¹ä¾¿é«˜æ•ˆçš„æ•¸æ“šè¨ªå•能力。在力控ä¸å¯ä»¥åŒæ™‚掛接任æ„多個OPCæœå‹™å™¨ï¼Œæ¯å€‹OPCæœå‹™å™¨éƒ½å¯ä»¥ç•¶ä½œä¸€å€‹å¤–部è¨å‚™é€²è¡Œå®šç¾©ã€å¢žåŠ æˆ–åˆªé™¤ã€‚
  3.2 OPC æœå‹™å™¨èˆ‡å®¢æˆ¶ç«¯çš„連接
  3.2.1 定義OPCè¨å‚™
  首先在力控導航器窗å£ä¸é¸æ“‡â€œå¯¦æ™‚數據庫â€ä¸çš„ “I/Oè¨å‚™é©…å‹•â€å¹¶å±•開,出ç¾â€œOPCâ€è¨å‚™ã€‚雙擊“OPC(Client)â€ï¼Œå‡ºç¾I/Oè¨å‚™å®šç¾©å°è©±æ¡†ã€‚在“è¨å‚™å稱â€ä¸å®šç¾©é‚輯è¨å‚™çš„å稱(由用戶隨æ„定義),ä¸å¦¨å®šç¾©ç‚ºâ€œOPCâ€ï¼Œåœ¨â€œæ•¸æ“šæ›´æ–°å‘¨æœŸâ€ä¸æŒ‡å®šé‡‡é›†å‘¨æœŸï¼Œå¡«å¯«æ•…éšœåŽæ¢å¾©æŸ¥è©¢çš„周期和最長時間,然åŽå–®æ“Šâ€œä¸‹ä¸€æ¥â€ï¼Œå‡ºç¾OPCè¨å‚™å®šç¾©å°è©±æ¡†ã€‚
  力控會自動æœç´¢è¨ˆç®—機系統ä¸å·²ç¶“安è£çš„æ‰€æœ‰OPCæœå‹™å™¨ã€‚如果OPCæœå‹™å™¨ç·¨å¯«ç„¡èª¤å¹¶ä¸”注冊æ£ç¢ºï¼Œå‰‡é»žæ“Šä¸‹æ‹‰æ¡†â€œOPC æœå‹™å™¨â€æ™‚會列出已經安è£çš„æ‰€æœ‰OPCæœå‹™å™¨çš„åç¨±ï¼Œé¸æ“‡è¦ä½¿ç”¨çš„OPCæœå‹™å™¨ï¼Œé€™é‡Œé¸æ“‡æœ¬æ–‡è¨è¨ˆçš„æœå‹™å™¨â€œOPC.Server.1â€ã€‚
ã€€ã€€é¸æ“‡â€œServer類型â€ï¼Œæ˜¯â€œç•¶åœ°ï¼ˆlocal)â€é‚„是“é 程(remote)â€ã€‚åœ¨â€œæ•¸æ“šè¨ªå•æ–¹å¼â€ä¸é¸æ“‡â€œç·©æ²–å€â€æˆ–“外è¨â€æ–¹å¼ï¼Œå°äºŽâ€œç·©æ²–å€â€æ–¹å¼ï¼ŒOPC客戶程åºå°‡é€šéŽOPCæœå‹™å™¨çš„ç·©æ²–å€è®€å–數據;å°äºŽâ€œå¤–è¨â€æ–¹å¼ï¼ŒOPC客戶程åºå°‡é€šéŽOPCæœå‹™å™¨ç›´æŽ¥å¾žè¨å‚™è®€å–數據。從è¨å‚™ç›´æŽ¥è®€å–æ•¸æ“šé€Ÿåº¦æœƒæ…¢ä¸€äº›ï¼Œä¸€èˆ¬åªæœ‰åœ¨æ•…障診斷或極特殊的情æ³ä¸‹æ‰æœƒä½¿ç”¨ã€‚在“æ»å€ç™¾åˆ†æ¯”â€ä¸è¼¸å…¥ä¸€å€‹ç™¾åˆ†å€¼ï¼Œè¡¨ç¤ºéŽç¨‹æ•¸æ“šå€¼çš„變化ä¸è¶…出這個比例將ä¸å°å…¶é€²è¡Œæ•¸æ“šæ›´æ–°ã€‚å–®æ“Šâ€œç¢ºå®šâ€å°±å®Œæˆäº†OPCè¨å‚™çš„定義。
  3.2.2 å°OPCæ•¸æ“šé …é€²è¡Œæ•¸æ“šé€£æŽ¥
  啟動力控的數據庫組態程åºDBMan。首先在點組態ä¸å‰µå»ºæ‰€è¦ç”¨çš„變é‡ï¼Œä¸å¦¨è¨ç‚ºgg1。展開“數據連接â€é …,已經建立的OPCè¨å‚™å°±æŽ’列在其ä¸ã€‚雙擊我們剛æ‰å»ºç«‹çš„OPCè¨å‚™ “OPCâ€ï¼Œå‰‡å‡ºç¾â€œæ•¸æ“šé€£æŽ¥â€å°è©±æ¡†ã€‚鏿“‡è¦é€£æŽ¥çš„é»žåƒæ•¸gg1åŽï¼Œå–®æ“Šâ€œå¢žåŠ â€æŒ‰éˆ•,出ç¾â€œæ•¸æ“šé …組態â€å°è©±æ¡†ã€‚
  如果OPCæœå‹™å™¨æ”¯æŒâ€œç€è¦½â€åŠŸèƒ½ï¼Œé›™æ“Šå³ä¸Šå´åˆ—表框ä¸çš„“Rootâ€ï¼Œåˆ—表框會自動列出它æä¾›çš„æ•¸æ“šå€;如果OPCæœå‹™å™¨ä¸æ”¯æŒâ€œç€è¦½â€åŠŸèƒ½ï¼Œå…¶æ•¸æ“šé …çš„æè¿°éœ€è¦ç”¨æˆ¶æ ¹æ“šOPCæœå‹™å™¨çš„è³‡æ–™èªªæ˜Žï¼Œåœ¨â€œæ•¸æ“šé …â€è¼¸å…¥æ¡†å…§æ‰‹å·¥å¡«å¯«ã€‚鏿“‡â€œæ•¸æ“šé¡žåž‹â€å’Œâ€œè®€å¯«æ¬Šé™â€ï¼Œåœ¨â€œè¨ªå•路徑â€ä¸è¼¸å…¥æ•¸æ“šçš„訪å•è·¯å¾‘ï¼ˆé€™ä¸€é …ä¸æ˜¯å¿…需的,需è¦å¡«å¯«çš„,å¯ä»¥åƒè€ƒæ‰€ä½¿ç”¨çš„OPCæœå‹™å™¨çš„æ‰‹å†Šï¼‰ï¼Œé€™é‡Œä¸ç”¨å¡«å¯«ã€‚
  最åŽå–®æ“Šâ€œç¢ºå®šâ€æŒ‰éˆ•,就生æˆäº†ä¸€å€‹æ•¸æ“šé …的數據連接,如圖3所示,從而實ç¾äº†èˆ‡ç¾å ´å¯¦éš›ä¿¡æ¯çš„連接。
[align=center]

圖3 åŠ›æŽ§æ•¸æ“šé€£æŽ¥çµæžœ[/align]
  在系統é‹è¡Œæ™‚,力控和æœå‹™å™¨å»ºç«‹é€£æŽ¥ï¼Œè‡ªå‹•完æˆå’ŒOPCæœå‹™å™¨ä¹‹é–“的數據交æ›ã€‚
4 çµæŸèªž
  本文è¨è¨ˆçš„OPCæ•¸æ“šè¨ªå•æœå‹™å™¨ç¬¦åˆOPCè¦èŒƒï¼Œå¯¦ç¾äº†å°æ•¸æ“šçš„實時讀寫,具有實用價值。總之,有了OPCè¦èŒƒï¼ŒæŽ§åˆ¶ç³»çµ±è»Ÿä»¶å¯ä»¥é«˜æ•ˆã€ç©©å®šåœ°å°ç¡¬ä»¶è¨å‚™é€²è¡Œæ•¸æ“šå˜å–, 系統應用軟件之間也å¯ä»¥éˆæ´»åœ°é€²è¡Œä¿¡æ¯äº¤äº’,極大地æé«˜äº†æŽ§åˆ¶ç³»çµ±çš„互æ“ä½œæ€§å’Œé©æ‡‰æ€§ã€‚
åƒè€ƒæ–‡ç»
  1 OPC Foundation . Data Access Custom Interface Standard , Version 2.05A, 2002年。
  2 潘愛民 COM原ç†èˆ‡æ‡‰ç”¨ 清è¯å¤§å¸å‡ºç‰ˆç¤¾ 1999.12