Protokol OPC Historical Data Access 1.20 Client
Podporované typy a verzie zariadení
Konfigurácia komunikačnej linky
Konfigurácia komunikačnej stanice
Konfigurácia meraných bodov
Nastavenie správnej stratégie pre čítanie údajov
Konfigurácia DCOM pre pripojenie sa ku remote OPC serveru
Chyby a problémy
Literatúra
Zmeny a úpravy
Revízie dokumentu
Podporované typy a verzie zariadení
Protokol podporuje klientskú stranu komunikácie s OPC (OLE for Process Control) HDA (Historical Data Access) serverami podľa špecifikácii OPC HDA ver. 1.20.
Konfigurácia komunikačnej linky
Kategória komunikačnej linky: OPC Client.
Parametre OPC:
- OPC Host: Požadované len pre "Remote" prístup. Počítač, kde je nainštalovaný OPC HDA Server, zadáva sa len pre typ OPC servera "Remote" (string max. 50 znakov). Možno zadať mená podľa konvencie UNC (napr. "\\server" alebo "server", doménové DNS mená (napr. "domain.com", "example.company.com") alebo IP adresy ("196.54.23.113").
- Backup Host: Požadované len pre "Remote" prístup. Záložný OPC host. V prípade, že je definovaný, po výpadku komunikácie sa proces D2000 KOM snaží nadviazať komunikáciu striedavo s OPC Host-om a Backup Host-om.
- OPC Server: Meno (ProgID) OPC servera (string max. 50 znakov).
- Server Type: Podľa typu servera – "InProc", "Local" alebo "Remote".
Parametre protokolu linky
Pre protokol "OPC Historical Data Access 1.20 Client" je možné konfigurovať nasledovné globálne parametre protokolu linky:
Názov | Popis | Jednotka | Náhradná hodnota |
---|---|---|---|
Authentication Level | Úroveň autentifikácie použitá pri vytváraní spojenia na OPC server. OPC štandard definuje tieto úrovne:
Pozn: prednastavená hodnota RPC_C_AUTHN_LEVEL_CONNECT (2) už nemusí vyhovovať. Microsoft zaviedol security hardening kvôli riešeniu bezpečnostných problémov popísaných v CVE-2021-26414. Viac detailov viď "KB5004442—Manage changes for Windows DCOM Server Security Feature Bypass (CVE-2021-26414)". | - | 2 |
Konfigurácia komunikačnej stanice
Komunikačný protokol: OPC Historical Data Access 1.20.
Tento komunikačný protokol nevyžaduje zadávanie žiadnych adresných parametrov pre stanicu.
Parametre protokolu stanice
Môžu byť konfigurované nasledovné parametre protokolu stanice:
Tab. č. 1
Kľúčové slovo | Plný názov | Popis | Jednotka | Náhradná hodnota |
---|---|---|---|---|
FULL_DEBUG | Full Debug | Zapína ladiace výpisy. Výrazne zvýši počet informácií o chode komunikácie. Odporúčame zapínať iba pri detekcii problémov a ladení komunikácie. | YES/NO | NO |
RCD | Reconnect/Reinitialisation Delay | Oneskorenie po zlyhaných operáciách:
| sec | 5 |
BNDS | Include Bounds | Nastavuje parameter "Bounds" (čítanie hraničných hodnôt intervalu, aj keď sú mimo požadovaný interval) pri synchrónnom/asynchrónnom čítaní "raw" hodnôt. | YES/NO | NO |
ASM | Async Mode | Nastavuje asynchrónny mód činnosti pri čítaní údajov. Viď kapitolu Nastavenie správnej stratégie pre čítanie údajov. | YES/NO | NO |
NVAL | Maximum number of values | Nastavuje parameter NumItems pri synchrónnom/asynchrónnom čítaní "raw" hodnôt. Implicitná hodnota 0 znamená všetky hodnoty v danom intervale. Viď kapitolu Nastavenie správnej stratégie pre čítanie údajov. | Nezáporné celé číslo | 0 |
RINTR | Resample Interval | Nastavuje hodnotu parametra "ResampleInterval" pri synchrónnom/asynchrónnom čítaní "processed" hodnôt. Viď kapitolu Nastavenie správnej stratégie pre čítanie údajov. | ddd hh:mi:ss | 60 sec |
UINTR | Update Interval | Nastavuje hodnotu parametra "UpdateInterval" vo volaniach "AdviseRaw" a "AdviseProcessed". Viď kapitolu Nastavenie správnej stratégie pre čítanie údajov. | ss.mss | 1 sec |
QERR | QERR Value | Celočíselná hodnota stavu "ERROR" pre prevod do štvorstavového vstupu Qi. | 0,1,2,3 | 3 |
QOFF | QOFF Value | Celočíselná hodnota stavu "OFF" pre prevod do štvorstavového vstupu Qi. | 0,1,2,3 | 2 |
QON | QON Value | Celočíselná hodnota stavu "ON" pre prevod do štvorstavového vstupu Qi. | 0,1,2,3 | 1 |
QTRANS | QTRANS Value | Celočíselná hodnota stavu "TRANS" pre prevod do štvorstavového vstupu Qi. | 0,1,2,3 | 0 |
OPCHQED | Map ExtraData as flag | Mapovanie OPC HDA príznaku kvality Extra Data do atribútov hodnoty meraného bodu. | None, FA, FB, FC, FD, FE, FF, FG, FH, FI, FJ, FK, FL, FM, FN, FO, FP | None |
OPCHQIN | Map Interpolated as flag | Mapovanie OPC HDA príznaku kvality Interpolated do atribútov hodnoty meraného bodu. | ||
OPCHQRA | Map Raw as flag | Mapovanie OPC HDA príznaku kvality Raw do atribútov hodnoty meraného bodu. | ||
OPCHQCA | Map Calculated as flag | Mapovanie OPC HDA príznaku kvality Calculated do atribútov hodnoty meraného bodu. | ||
OPCHQNB | Map NoBound as flag | Mapovanie OPC HDA príznaku kvality No Bound do atribútov hodnoty meraného bodu. | ||
OPCHQND | Map NoData as flag | Mapovanie OPC HDA príznaku kvality No Data do atribútov hodnoty meraného bodu. | ||
OPCHQDL | Map DataLost as flag | Mapovanie OPC HDA príznaku kvality Data Lost do atribútov hodnoty meraného bodu. | ||
OPCHQCO | Map Conversion as flag | Mapovanie OPC HDA príznaku kvality Conversion do atribútov hodnoty meraného bodu. | ||
OPCHQPA | Map Partial as flag | Mapovanie OPC HDA príznaku kvality Partial do atribútov hodnoty meraného bodu. | ||
OPCQFNS | Map NonSpecific as flag | Mapovanie OPC DA príznaku kvality Non Specific do atribútov hodnoty meraného bodu. | ||
OPCQFLO | Map LocalOverride as flag | Mapovanie OPC DA príznaku kvality LocalOverride do atribútov hodnoty meraného bodu. | ||
OPCQFCE | Map ConfigError as flag | Mapovanie OPC DA príznaku kvality Config Error do atribútov hodnoty meraného bodu. | ||
OPCQFNC | Map NotConnected as flag | Mapovanie OPC DA príznaku kvality Not Connected do atribútov hodnoty meraného bodu. | ||
OPCQFDF | Map DeviceFailure as flag | Mapovanie OPC DA príznaku kvality Device Failure do atribútov hodnoty meraného bodu. | ||
OPCQFSF | Map SensorFailure as flag | Mapovanie OPC DA príznaku kvality Sensor Failure do atribútov hodnoty meraného bodu. | ||
OPCQFLK | Map LastKnown as flag | Mapovanie OPC DA príznaku kvality Last Known do atribútov hodnoty meraného bodu. | ||
OPCQFCF | Map CommFailure as flag | Mapovanie OPC DA príznaku kvality Comm Failure do atribútov hodnoty meraného bodu. | ||
OPCQFOOS | Map OutOfService as flag | Mapovanie OPC DA príznaku kvality Out Of Service do atribútov hodnoty meraného bodu. | ||
OPCQFWID | Map WaitingForInitData as flag | Mapovanie OPC DA príznaku kvality Waiting For Initial Data do atribútov hodnoty meraného bodu. | ||
OPCQFLU | Map LastUsable as flag | Mapovanie OPC DA príznaku kvality Last Usable do atribútov hodnoty meraného bodu. | ||
OPCQFSC | Map SensorCal as flag | Mapovanie OPC DA príznaku kvality Sensor Cal do atribútov hodnoty meraného bodu. | ||
OPCQFEGUE | Map EGUExceeded as flag | Mapovanie OPC DA príznaku kvality EGU Exceeded do atribútov hodnoty meraného bodu. | ||
OPCQFSN | Map SubNormal as flag | Mapovanie OPC DA príznaku kvality Sub Normal do atribútov hodnoty meraného bodu. |
Konfigurácia meraných bodov
Možné typy hodnôt bodov: Ai, Ci, Di, Qi, TiA, TiR, TxtI.
Adresa meraného bodu vyžaduje zadať "OPC Item ID" (string max. 200 znakov).
Ďalšie požadované parametre ("OPC HDA Item Parameters") sú:
- Výber medzi "Raw" a "Processed" typom čítanej hodnoty.
- V prípade výberu "Processed" typu voľbu požadovaného typu "Aggregate".
- Voľba "Async Advise" pre povolenie asynchrónneho priebežného zberu hodnôt údajov.
Nastavenie správnej stratégie pre čítanie údajov
OPC Historical Data Access je špecifikácia, ktorá umožňuje čítanie historických údajov a to jednak "surových" - "raw" alebo spracovaných - "processed". Údaje je možné čítať sychrónnymi alebo asynchrónnymi volaniami. Asynchrónny interfejs umožňuje naviac "advise" požadovaných údajov, t.j. periodické (viď parameter protokolu "Update Interval") zasielanie aktuálnych hodnôt z OPC HDA Servera asynchrónnym call-back volaním do klienta - KOM procesu. Jediný povinný interfejs podľa špecifikácie OPC HDA je však iba "SyncRead" na synchrónne čítanie "raw" údajov.
Implementácia protokolu OPC HDA v D2000 KOM Procese je realizovaná štýlom, ktorý umožňuje čo najefektívnejšie čítanie archívnych údajov vrátane aktualizácie posledných hodnôt tak, aby nebolo nutné kombinovať protokol "OPC Historical Access" s protokolom "OPC Data Access". Čítanie historických hodnôt je v ľubovoľnom požadovanom intervale možné vyžiadať tell príkazom GETOLDVAL, získané hodnoty sú ukladané do D2000 Archívu, ak je daný meraný bod archivovaný primárnou Archivovanou hodnotou.
Možné sú dve stratégie pre zber aktuálnych údajov:
- Minimalistická:
Používa iba synchrónny interfejs "SyncRead". Podľa nastavenia časových parametrov stanice sú periodicky volané funkcie "ReadRaw" a "ReadProcessed". Požadovaný interval hodnôt je od času poslednej platnej hodnoty po aktuálny čas. Ak je získaných niekoľko hodnôt za daný interval, posledná hodnota s najmladšou časovou značkou je vyhlásená za aktuálnu hodnotu. Ostatné hodnoty sú odoslané ako "old" values do servera a ukladajú sa do D2000 Archívu. - Advise:
Využíva funkcie asynchrónneho interfejsu "AsyncRead" "AdviseRaw" a "AdviseProcessed". OPC HDA Server v perióde danej parametrom protokolu "Update Interval" zasiela posledné platné hodnoty "raw" alebo "processed" itemov. Ak nie je v danom intervale žiadna nová hodnota, vráti OPC HDA Server príznak kvality "No Data".
Parametrom protokolu "Async Mode" je možné nastaviť plne asynchrónny režim, ktorý používa iba interfejs "AsyncRead". Asynchrónny režim však má určité obmedzenia, preto ho neodporúčame:
- Pri asynchrónnom čítaní "raw" údajov nie je podporené opakované dočítavanie údajov, ktoré sa nezmestili do jedného volania (vrátený príznak OPC_S_MOREDATA).
- V asynchrónnom režime nie je riešené správne načasovanie ukončenia transakcie tell príkazu GETOLDVAL, čo má za následok neefektívnejšie ukladanie získaných hodnôt procesom D2000 Archív.
Implementácia protokolu OPC Historical Data Access nepodporuje zápis hodnôt (interfejsy "SyncUpdate" a "ReadUpdate"). Tak isto nie sú podporené interfejsy "SyncAnnotations", "AsyncAnnotations", "Browser" a "Playback".
Konfigurácia DCOM pre pripojenie sa ku remote OPC serveru
Remote browsing/lokálna registrácia OPC servera
D2000 KOM Proces od verzie 7.01.020 rel. 055 a vyššie podporuje získavanie GUID OPC Serverov z ProgID na vzdialených počítačoch cez DCOM interfejs pomocou utility OPCENUM (remote browsing). Ak je na strane vzdialeného OPC servera nainštalovaná utilita/windows service OPCENUM a úroveň nastavenia prístupových práv umožňuje remote browsing, netreba vykonávať lokálnu registráciu OPC servera na strane klienta. Utilita OPCENUM je súčasťou balíka "OPC Core Components Redistributable", ktorý sa dá získať na lokalite http://www.opcfoundation.org/, alebo zvyčajne býva už súčasťou inštalácie samotného OPC servera.
Registrácia OPC servera na strane OPC klienta (procesu D2000 KOM) nie je nutná. Ak sa uživateľ pre ňu rozhodne, dá sa docieliť dvomi spôsobmi:
- Niektoré OPC servery sú dodávané s inštalačným programom pre podporu pripojenia sa OPC klientov “tretích strán” ku vzdialenému OPC serveru. Takéto programy majú názvy ako “OPC Server Connect” a podobne. Po ich nainštalovaní sa objaví OPC server (jeho ProgID) v zozname OPC serverov na počítači klienta. D2000 OPC klient však použije tieto informácie iba na získanie CLSID zo zadaného ProgID (viď konfigurácia komunikačnej linky). Takto zaregistrovaný OPC server pravdaže nemôže byť prevádzkovaný na strane klienta.
- Ručné zaregistrovanie OPC servera na strane klienta, postupujte podľa tohto návodu:
- Skopírujte OPC server (z počítača, kde je nainštalovaný, stačí samotný .exe súbor + prípadne požadované .dll súbory) do pomocného adresára na strane klienta.
- Odštartuje v tomto adresári príkazový riadok.
- Zaregistrujte OPC server. Ak sa OPC server na disku volá napr. "OPCSERVER.EXE" tak napíšte príkaz: "OPCSERVER.EXE /regserver" a stlačte ENTER.
- Pomocný adresár môžete zmazať.
Vždy si pozorne prečítajte návod ku OPC serveru od jeho výrobcu a skonfrontujte si v ňom uvedené údaje a návody s horeuvedenými postupmi.
Nastavenie prístupových práv
Pripojenie sa ku vzdialenému OPC serveru podlieha kontrole prístupových práv operačného systému Windows. Na oboch počítačoch preto musí byť vytvorený rovnaký užívateľ (aj s rovnakým heslom) a tento užívateľ musí byť na strane OPC klienta aj prihlásený. Na strane OPC servera musí mať tento užívateľ určité práva, preto postupujte podľa tohto návodu:
- Na príkazovom riadku na počítači, kde je nainštalovaný OPC server, odštartujte program "DCOMCNFG". Skontrolujte, či je povolený DCOM zaškrtnutím voľby "Enable Distributed COM on this computer".
- V zozname komponentov nájdite požadovaný OPC server a otvorte okno jeho parametrov ("Properties"). Otvorte záložku "Security".
- Prepnite "Launch Permissions" na "Customize" a kliknite na tlačidlo "Edit...".
- Skontrolujte, či sa v zozname nachádza požadovaný užívateľ, prípadne ho tam pridajte.
- To isté urobte aj pre "Access Permissions".
Zlé nastavenie prístupových práv pravdepodobne povedie ku chybe (viď kapitolu "Výpis COM/OPC chýb"):
ERROR: ServerProgID caused COM/OPC error 80070005H on CoCreateInstanceEx(CLSCTX_REMOTE_SERVER), Error string : Access is denied.
Sledujte záznamy v systémovom prehliadači udalostí "Event Viewer".
Problém sa dá do určitej miery obísť pridaním skupiny "Everyone" do "Launch Permissions" a "Access Permissions". Aby bolo zabezpečené, že bude OPC server odštartovaný v kontexte určitého užívateľa (a nie pod "SYSTEM account"), otvorte záložku "Identity" a vyplňte údaje pre voľbu "This user". V tomto prípade však nie je možné hovoriť o bezpečnosti OPC servera.
V každom prípade nesmie byť OPC klient (proces D2000 KOM) odštartovaný ako "Windows service" s parametrami "/X1" alebo "/X2", pretože potom nefunguje v kontexte prihláseného užívateľa, ale pod "SYSTEM account" a overenie prístupových práv OPC serverom zlyhá. Použite štartovací parameter "/X4".
Opäť si pozorne prečítajte návod ku OPC serveru od jeho výrobcu a dodržujte jeho odporúčania.
Pre užívateľov operačného systému WindowsXP s nainštalovaným SP2, a príp. novších operačných systémov, odporúčame v nastaveniach "Local Security Policy/Security Options" zmeniť parameter "Network access: Let Everyone permissions apply to anonymous users" na hodnotu "Enabled".
Poznámka o SIMATIC NET a možno aj iných OPC serveroch
Ak je vo vlastnostiach OPC servera na poslednej záložke Identity nakonfigurované, že OPC server beží pod prihláseným užívateľom ("The interactive user"), tak to môže spôsobovať, že OPC server je k dispozícii iba pokiaľ je na počítači prihlásený užívateľ. Odporúčame toto nastavenie zmeniť ("The launching user", "This user", prípadne "The system account")
Chyby a problémy
Vo fáze štartu alebo aj počas komunikácie sa môžu vyskytovať nasledovné chybové hlásenia. Pre ľahšiu identifikáciu problému zapnite úroveň sledovania komunikácie v konfigurácii príslušnej linky minimálne na úroveň "Monitor", najlepšie však dočasne na úroveň "Monitor & Disk". V prípade nastavenia "Monitor & Disk" bude v podadresári "\TRACE" adresára aplikácie na počítači, kde je bežiaci komunikačný proces, vznikať súbor "meno_linky.LOG", kde sa nachádzajú všetky ladiace a chybové informácie.
Chyba: | Unconvertible value for Item: 'ItemID', I/O tag: 'IOTagName' ! |
Popis: | Nie je možné previesť získanú hodnotu do adekvátneho typu hodnoty meraného bodu v D2000. Prispôsobte typ hodnoty meraného bodu. |
Chyba: | ShutDown OPC HDA Server : 'ServerProgID' ! |
Popis: | OPC server bol zastavený, pravdepodobne korektným spôsobom aj napriek tomu že má aktívnych klientov. |
Chyba: | OPC HDA Server 'ServerProgID' is unavailable ! |
Popis: | Remote DCOM OPC server je nedostupný. Proces D2000 KOM ako klient sa bude opakovane pokúšať pripojiť ku serveru. Skontrolujte PC, kde je nainštalovaný OPC server (či beží a je správne pripojený na lokálnu sieť). |
Chyba: | Async reading raw data failed, Item: 'ItemID' |
Popis: | Chyba pri volaní "ReadRaw" interfejsu "AsyncRead". Pozrite výpis COM/OPC chyby pre detailné informácie. |
Chyba: | Sync reading raw data failed, Item: 'ItemID' |
Popis: | Chyba pri volaní "ReadRaw" interfejsu "SyncRead". Pozrite výpis COM/OPC chyby pre detailné informácie. |
Chyba: | Async reading processed data failed, Item: 'ItemID' |
Popis: | Chyba pri volaní "ReadProcessed" interfejsu "ReadAsync". Pozrite výpis COM/OPC chyby pre detailné informácie. |
Chyba: | Sync reading of processed data failed, Item: 'ItemID' |
Popis: | Chyba pri volaní "ReadProcessed" interfejsu "ReadSync". Pozrite výpis COM/OPC chyby pre detailné informácie. |
Chyba: | SetCallBack - FAILED, Server: 'OPCServerProgID'. |
Popis: | Chyba pri registrácii asynchrónnej call-back procedúry. Pozrite výpis COM/OPC chyby pre detailné informácie. |
Chyba: | OPCConnectToServer - FAILED, Host: 'ServerName', Server: 'OPCServerProgID'! |
Popis: | Zlyhanie pripojenia sa na OPC Server. Pozrite výpis COM/OPC chyby pre detailné informácie. |
Chyba: | AsyncAdviseRaw - FAILED, I/O tag: 'IOTagName', ItemID: 'ItemID', Station: 'StationName' |
Popis: | Chyba volania "AdviseRaw" interfejsu "ReadAsync". Pozrite výpis COM/OPC chyby pre detailné informácie. |
Chyba: | AsyncAdviseProcessed - FAILED, I/O tag: 'IOTagName', ItemID: 'ItemID', Aggregate='Aggregate', Station: 'StationName' |
Popis: | Chyba volania "AdviseProcessed" interfejsu "ReadAsync". Pozrite výpis COM/OPC chyby pre detailné informácie. |
Chyba: | GetItemHandle - FAILED, I/O tag: 'IOTagName', ItemID: 'ItemID', Station: 'StationName' ! |
Popis: | Chyba pri volaní "GetItemHandles" interfejsu "Server". Nepodarilo sa zaregistrovať požadovaný item. Vzhľadom na to, že validácia mena itemu bola úspešná (volanie "ValidateItemIDs"), skontrolujte log súbor OPC servera. Pozrite tiež výpis COM/OPC chyby pre detailné informácie. |
Chyba: | ValidateItem - FAILED, I/O tag: 'IOTagName', ItemID: 'ItemID', Station: 'StationName' ! |
Popis: | Zlyhanie volania "ValidateItemIDs" interfejsu "Server". Pravdepodobne neznáme ItemID. Pozrite výpis COM/OPC chyby pre detailné informácie. |
Výpis COM/OPC chýb
Chybové hlásenia v kapitole "Chyby a problémy" sú generované vo vyššej úrovni OPC klienta. Väčšinu uvedených chýb bude sprevádzať chybový výpis na COM/OPC úrovni. Formát týchto chybových hlásení je nasledovný:
WARNING/ERROR: ServerProgID caused COM/OPC error ErrorCodeHexadecimal on CallDescription, Error string : ErrorDescription
Napríklad:
ERROR: Matrikon.OPC.Simulation.1 caused COM/OPC error C0040008H on IOPCHDA_Server::ValidateItemIDs('ItemID'), Error string : OPC_E_INVALIDITEMID The item definition doesn't conform to the server's syntax.
Tieto chybové hlásenia sú dôležité pre analýzu problému a budú, v prípade problémov, požadované technickou podporou firmy Ipesoft.
Literatúra
Dokumenty OPC Foundation, ktoré je možné získať na lokalite http://www.opcfoundation.org/.
- OPC FOUNDATION, Historical Data Access Specification, Version 1.20, December 10, 2003.
- OPC FOUNDATION, OPC Common Definitions and Interfaces, Version 1.0, October 27, 1998.
- OPC FOUNDATION, Using OPC via DCOM with Microsoft Windows XP Service Pack 2, (C) 2004 OPC Foundation Inc.
Iné:
- OPC DCOM White Paper, Richard C. Harrison, Intellution Inc. © Intellution Inc. 1998
Zmeny a úpravy
- 15. okt. 2007 - vytvorenie dokumentu
Revízie dokumentu
- Ver. 1.0 – 15. okt. 2007
- Ver. 1.1 - 7. feb. 2021 - pridaný parameter "Authentication Level"
Súvisiace stránky:
Pridať komentár