OPC·þÎñÆ÷¿ìËÙ¿ª·¢¹¤¾ß
²úÆ·Àà±ð£ºOPC¿ìËÙ¿ª·¢¹¤¾ß(Win32)
¹æ¸ñ£ºDLL
²úÆ·±¸×¢£ºÍ¨¹ýOPC»ù½ð»áCTT²âÊÔ£¬Îȶ¨¿É¿¿
²úƷ˵Ã÷£º
OM_OPCSvr.dll¹¤¾ß°üÆäʵ¾ÍÊÇÒ»¸ö¶¯Ì¬Á´½Ó¿â(DLL)¡£Ö§³ÖOPC l.0ºÍOPC 2.0Êý¾Ý´æÈ¡¹æ·¶¶¨ÒåËùÓбØÐèµÄ½Ó¿Ú£¬»¹°üÀ¨ÊµÏÖÁËä¯ÀÀÆ÷¹¦ÄܵĽӿڡ£OM_OPCSvr.dll×÷Ϊһ¸ö¿ìËÙ¿ª·¢OPC·þÎñÆ÷µÄ¹¤¾ß°ü£¬Ëü·â×°ÁËËùÓйØÓÚCOMºÍOPCµÄ¼¼Êõϸ½Ú£¬½«Microsoft¹«Ë¾µÄOLE¡¢COM¡¢DCOM¼¼ÊõºÍOPCµÄ¼¼Êõϸ½ÚÒþ²ØÆðÀ´£¬Ê¹¿ª·¢OPC·þÎñÆ÷µÄ¹¤×÷¼¯ÖÐÔÚÌØ¶¨µÄÊý¾Ý²É¼¯ÈÎÎñÉÏÀ´¡£ÀûÓÃDLL¿ª·¢OPC·þÎñÆ÷µÄ¿ª·¢ÕßÎÞÐ迼ÂÇÐí¶àÉæ¼°µ½µ×²ãCOM½Ó¿ÚʵÏÖ·½ÃæµÄ¹¤×÷£¬¿ª·¢ÕßÎÞÐëÕÆÎÕATL¡¢COM/DCOM£¬Ò²ÎÞÐëÁ˽âOPC¼¼ÊõµÄϸ½Ú£¬Ö»Ðè¾ßÓлù±¾µÄ±à³Ì»ù´¡¼´¿É¿ìËÙÉÏÊÖ¡£¿ª·¢ÕßµÄÓ¦ÓóÌÐòÍêÈ«¿ÉÒÔÔÚÒ»¸ö½Ï¸ß²ã´ÎÉÏÈ¥ÃèÊöOPCÊý¾Ý¡£¸Ã¹¤¾ß°üÖ§³Ö¶à¸ö¿Í»§¶Ë²¢·¢·ÃÎÊ·þÎñÆ÷£¬²¢ÎªÃ¿¸ö¿Í»§¶Ë´´½¨Ò»¸ö¶ÀÁ¢Ï̡߳£Æä¾ßÓÐÒÔÏÂÌØµã£º
1. ʹÓÃSTL׫д¡£
2. ¿ÉͬʱÓÃ×÷¿ª·¢EXE Server»òDLL ServerµÄ¿ª·¢¹¤¾ß¡£
3. ʹÓÃUnicode×Ö·û¼¯£¬Ô´Âë¿É·½±ãµØÒÆÖ²µ½WinCEƽ̨Ï¡£
4. ʵÏÖÁËOPC DA 2.05a ºÍ 1.0½Ó¿Ú¡£
5. µØÖ·¿Õ¼ä²ÉÓÃHierarchial½á¹¹£¬Í¬Ê±Ö§³Ö°´Flatä¯ÀÀ¡£
6. ͨ¹ýOPC FoundationµÄCompliance Test²âÊÔ¡£
7. ±»¶à¸ö¿ª·¢Æ½Ì¨Ö§³Ö¡£È磺VB¡¢DELPHI¡¢VC++ºÍ.net¡£
OPC¿ª·¢¿ìËÙ¹¤¾ßOM_OPCSvr.dllµÄAPIº¯Êý˵Ã÷£º
APIº¯ÊýµÄ½éÉÜÈçÏ£º
1. HRESULT InitOPCSvr(BYTE *pSvrCLSID, BOOL bExeSvr = TRUE, DWORD dwCoInit = 0)
³õʼ»¯OPC Server
pSvrClSID: ServerµÄCLSID£»
bExeSvr: TrueΪEXE Server£¬ FalseΪDLL Server£»
dwCoInit: ServerÏß³Ìģʽ
2. HRESULT UninitOPCSvr()
·´³õʼ»¯OPC Server
3. HRESULT CreateCustomOPCServer(REFIID riid, LPVOID *ppvObject)
´Ëº¯ÊýΪDLL ServerÔÚʵÏÖIclassFactory½Ó¿Úʱµ÷ÓÃ
4. HRESULT SetServerRate(DWORD dwServerRate)
´Ëº¯ÊýÉèÖÃServer×î¿ìµÄË¢ÐÂËÙÂÊ£¬ClientÇëÇóµÄCallback Rate²»ÄÜСÓÚ´ËÖµ£¬²¢ÇÒ¶¼»á±»ÐÞÕýΪËüµÄ±¶Êý£¬Ä¬ÈÏֵΪ1000ms£¬ÈçÐè¸ü¸Ä£¬ÐëÔÚInitOPCSvrǰµ÷ÓÃ
5. HRESULT SetVendorInfo(LPCWSTR szVendorInfo, WORD wMajorVersion, WORD wMinorVersion, WORD wBuildNumber)
ÉèÖÃServer VendorºÍ°æ±¾ÐÅÏ¢
6. VOID SetServerState(DWORD dwState)
ÉèÖÃServerµÄ״̬£¬³õʼ»¯ÎªÔËÐÐ״̬
7. HRESULT SetServerDelimiter(WCHAR cDelimiter)
ÉèÖÃAddress SpaceÖÐItemIDµÄ¼ä¸ô¸±·û£¬Ä¬ÈÏΪ’.’
8. VOID SetCaseSensitivity(BOOL bOnOff = FALSE)
ÉèÖÃAddress SpaceÖÐItemIDÊÇ·ñÇø·Ö´óСд
====================================================
9. HRESULT CreateTag(LPCWSTR szName, VARIANT Value, WORD Quality, BOOL bWritable, HANDLE hClient, HANDLE *phTag)
Ìí¼ÓTagµ½Address Space
szName: ItemID, Èç“Device0.Group0.Tag0”
Value: ³õʼֵ
Quality: ³õʼֵµÄQuality
bWritable: ´ËTagÊÇ·ñ¿Éд
hClient: ServerÖ÷³ÌÐòÌṩµÄ¾ä±ú£¬ÒÔ¹©¶Áд»Øµ÷ʱʹÓÃ
phTag: Address SpaceÖжÔÓ¦µÄ¾ä±ú
10. HRESULT CreateTagWithTimeStamp(LPCWSTR szName, VARIANT Value, WORD Quality, FILETIME TimeStamp, BOOL bWritable, HANDLE hClient, HANDLE *phTag)
Ìí¼Ó´øTimeStampµÄTagµ½Address Space
11. HRESULT UpdateTag(HANDLE hTag, VARIANT Value, WORD Quality)
¸üÐÂTagµÄÖµ
hTag: CreateTagʱ´«¸øAddress SpaceµÄ¾ä±ú
Value: ¸üеÄÖµ
Quality: ¸üеÄQuality
12. HRESULT UpdateTagWithTimeStamp(HANDLE hTag, VARIANT Value, WORD Quality, FILETIME TimeStamp)
¸üÐÂTagµÄÖµ¼°TimeStamp
13. HRESULT UpdateTagByName(LPCWSTR szName, VARIANT Value, WORD Quality)
°´Ãû³Æ¸üÐÂTagµÄÖµ
14. HRESULT UpdateTagWithTimeStampByName(LPCWSTR szName, VARIANT Value, WORD Quality, FILETIME TimeStamp)
°´Ãû³Æ¸üÐÂTagµÄÖµ¼°TimeStamp
15. HRESULT ReadTag(HANDLE hTag, VARIANT *pValue)
¶ÁÈ¡Address SpaceÖÐTagµÄÖµ
hTag: CreateTagʱ´«¸øAddress SpaceµÄ¾ä±ú
pValue: ±£´æTagµÄÖµ
16. HRESULT SuspendTagUpdate(HANDLE hTag, BOOL bOnOff)
½ûÖ¹»òÔÊÐíClient¶Ô¸ÃTagµÄ·ÃÎÊ
hTag: CreateTagʱ´«¸øAddress SpaceµÄ¾ä±ú
bOnOff: ½ûÖ¹»òÔÊÐí
====================================================
17. HRESULT NumberOfClientConnections(DWORD *pNum)
·µ»ØÁ¬½ÓµÄClientÊýÁ¿
18. HRESULT RequestDisconnect(LPCWSTR szReason = L"")
ÏòËùÓеĿͻ§¶ËÌá³öDisconnectÇëÇó
szReason: ÇëÇóÔÒò
19. VOID RefreshAllClients()
Ïò¿Í»§¶Ë·¢ËÍDataChange Callback
20. HRESULT EnableDeviceRead(DEVICEREADPROC fnCallback)
µ±ClientÒª¶Áȡʵ¼ÊÉ豸ÖеÄÊý¾Ýʱ²úÉú¸ÃCallback
21. HRESULT EnableDeviceWrite(DEVICEWRITEPROC fnCallback)
µ±ClientÒªÏòʵ¼ÊµÄÉ豸ÖÐдÊý¾Ýʱ²úÉú¸ÃCallback
22. HRESULT EnableDiscNotify(DISCONNECTPROC fnCallback)
µ±ÓÐClientÈ¡ÏûÁ¬½Óʱ²úÉú¸ÃCallback