OPC Unified Architecture - OPC Unified Architecture
OPC Unified Architecture ( OPC UA ) er en maskine til maskine kommunikationsprotokol til industriel automatisering udviklet af OPC Foundation . Særlige kendetegn er:
- Baseret på en klientserverkommunikation
- Fokus på kommunikation med industrielt udstyr og systemer til dataindsamling og -kontrol
- Åben - frit tilgængelig og implementerbar under GPL 2.0 -licens
- På tværs af platforme - ikke knyttet til ét operativsystem eller programmeringssprog
- Serviceorienteret arkitektur (SOA)
- Iboende kompleksitet - i september 2020 bestod specifikationen af 3151 sider i 15 dokumenter
- Tilbyder sikkerhedsfunktionalitet til godkendelse, autorisation, integritet og fortrolighed
- Integreret informationsmodel , som er grundlaget for den infrastruktur, der er nødvendig for informationsintegration, hvor leverandører og organisationer kan modellere deres komplekse data i et OPC UA-navneområde for at drage fordel af den rige serviceorienterede arkitektur i OPC UA. Der er over 35 samarbejder med OPC Foundation i øjeblikket. Nøgleindustrier omfatter farmaceutisk , olie og gas , bygningsautomatisering , industriel robotik , sikkerhed, fremstilling og proceskontrol .
Historie
Selvom OPC UA er udviklet af den samme organisation, adskiller det sig markant fra sin forgænger, Open Platform Communications (OPC). Fondets mål for OPC UA var at give en vej fremad fra den originale OPC -kommunikationsmodel (nemlig Microsoft Windows -kun procesudveksling COM/ DCOM ), der bedre ville imødekomme de nye behov inden for industriel automatisering .
Efter mere end tre års specifikationsarbejde og endnu et år til implementering af en prototype, blev den første version af Unified Architecture udgivet i 2006.
Den aktuelle version af specifikationen er den 1.04 (22. november 2017). Den nye version af OPC UA har nu tilføjet publish/subscribe ud over klient/server -kommunikationsinfrastrukturen.
Innovationer
Selvom den oprindelige binding til COM/ DCOM hjalp OPC med at distribuere godt, havde det flere ulemper:
- Hyppige konfigurationsproblemer med DCOM;
- Ingen konfigurerbare time-out;
- Kun Microsoft Windows ;
- Lavere sikkerhed;
- Ingen kontrol over DCOM (COM/DCOM er en sort boks, udviklere har ingen adgang til kilder og skal derfor håndtere fejl eller utilstrækkelige implementeringer).
Disse ulemper sammen med en række andre overvejelser pressede beslutningen om at udvikle en ny og uafhængig stak til OPC UA, som erstatter COM/DCOM. De vigtigste kendetegn ved denne kommunikationsstak var:
- Implementering af flere platforme, herunder bærbare ANSI C- , Java- og .NET- implementeringer;
- Skalerbarhed: fra smarte sensorer og smarte aktuatorer til mainframes;
- Multi-threaded, såvel som single-threaded/single-task operation-nødvendigt for at overføre stakken til integrerede enheder;
- Sikkerhed, baseret på nye standarder;
- Konfigurerbare time-outs for hver service;
- Chunking af store datagrammer.
Denne kommunikationsstak afspejler begyndelsen på forskellige innovationer. OPC UA-arkitekturen er en serviceorienteret arkitektur (SOA) og er baseret på forskellige logiske niveauer.
OPC Base Services er abstrakte metodebeskrivelser, som er protokoluafhængige og danner grundlag for OPC UA -funktionalitet. Transportlaget lægger disse metoder ind i en protokol, hvilket betyder, at det serieliserer/deserialiserer dataene og sender det over netværket. To protokoller er angivet til dette formål. Den ene er en binær TCP -protokol, optimeret til høj ydeevne, og den anden er web -serviceorienteret .
OPC -informationsmodellen er et Mesh -netværk baseret på noder . Disse noder kan omfatte enhver form for metainformation og ligner objekterne i objektorienteret programmering (OOP). En knude kan have attributter til læseadgang (DA, HDA), metoder, der kan kaldes (kommandoer), og udløste hændelser, der kan transmitteres (AE, DataAccess, DataChange). Noder gemmer procesdata samt alle andre typer metadata . OPC -navneområdet indeholder typemodellen.
Klientsoftware kan kontrollere, hvilke profiler en server understøtter. Dette er nødvendigt for at indhente oplysninger, hvis en server kun understøtter DA -funktionalitet eller yderligere AE, HDA osv. Derudover kan der indhentes oplysninger om, hvorvidt en server understøtter en given profil. Nye og vigtige funktioner i OPC UA er:
- Redundans support
- Hjerteslag for forbindelser i begge retninger (for at angive, om den anden ende er "levende"). Det betyder, at både server og klient genkender afbrydelser.
- Buffering af data og anerkendelser af overførte data. Tabte forbindelser fører ikke længere til tabte data. Tabte datagrammer kan hentes igen.
På OPC UA DevCon i oktober 2006 i München blev de første prototyper præsenteret live. Forskellige UA -servere er blevet vist på en Beckhoff -programmerbar logisk controller og et integreret testkort fra euro. Beckhoff PLC er baseret på Windows XP Embedded og den integrerede controller er baseret på real-time operativsystemet Euro. Firmaet Embedded Labs Ltd demonstrerede en OPC UA -server baseret på deres egen C ++ UA Stack, der udføres på en enkelt chip ARM -mikrokontroller med 64 kB RAM . I oktober 2012 viste det tyske Fraunhofer-Application Center IOSB-INA og Institute for Industrial Information Technologies (inIT), at en OPC UA-server er skalerbar ned til 15 kB RAM og 10 kB ROM og derfor kan bruges på chipniveau.
Protokoller
OPC UA understøtter to protokoller. Dette er kun synligt for programmører via ændringer af URL'en. Den binære protokol er opc.tcp: // Server og http: // Server er til Web Service. Ellers fungerer OPC UA helt gennemsigtigt for API'et .
Den binære protokol tilbyder den bedste ydeevne/mindst overhead, kræver minimale ressourcer (ingen XML -parser, SOAP og HTTP påkrævet, hvilket er vigtigt for integrerede enheder), giver den bedste interoperabilitet (binært er eksplicit angivet og tillader færre frihedsgrader under implementering) og bruger en enkelt vilkårligt valgbar TCP -port til kommunikation, der letter tunneling eller let aktiverer via en firewall.
Web Service (SOAP) -protokollen understøttes bedst fra tilgængelige værktøjer, f.eks. Fra Java- eller .NET-miljøer, og er firewallvenlig ved hjælp af standard HTTP (S) -porte.
Binær understøttes af alle implementeringer, mens kun .NET -implementering understøtter SOAP.
specifikationer
OPC UA-specifikationen er en specifikation i flere dele og består af følgende dele:
- Begreber
- Sikkerhedsmodel
- Adresse Space Model
- Services
- Informationsmodel
- Kortlægninger
- Profiler
- Dataadgang
- Alarmer og betingelser
- Programmer
- Historisk adgang
- Discovery og globale tjenester
- Aggregater
- PubSub
- Sikkerhed
- Statsmaskiner (endnu ikke offentliggjort)
- Alias navne
- Brugergodkendelse (ikke offentliggjort endnu)
- Ordbogshenvisninger
Derudover er del 100 enheder og del 200 industriel automatisering også tilgængelig. Disse bygger på kernesættet med specifikationer og tilføjer nye fælles definitioner, der derefter bruges i forskellige ledsagerspecifikationer. F.eks. Bygger både OPC UA til analysatorenheder og OPC UA til maskiner direkte på del 100.
I modsætning til de COM-baserede specifikationer er UA-specifikationerne ikke rene applikationsspecifikationer. De beskriver typisk UA interne mekanismer, som håndteres gennem kommunikationsstakken og normalt kun er af interesse for dem, der port en stak til et specifikt mål eller dem, der ønsker at implementere deres egen UA -stak.
OPC UA -programudviklerne koder mod OPC UA API og bruger derfor hovedsageligt API -dokumentation. Ikke desto mindre kan del 3, 4 og 5 være af interesse for programudviklere.
Diskussion
OPC UA -protokollspecifikationen består af 14 dokumenter på i alt 1250 sider. På grund af denne kompleksitet er eksisterende implementeringer normalt ufuldstændige. Desuden medfører eksistensen af flere serialiseringsformater samt muligheden for selektivt at implementere visse tjenester som PubSub i sidste ende en stor heterogenitet mellem OPC UA -forbindelsespunkterne. Under disse betingelser er det endelig svært at udvikle klientapplikationer, der er uafhængige af den specifikke implementering af hver server. I denne forstand opfylder OPC UA ikke sit løfte om at sikre god interoperabilitet mellem systemer. Dette kan typisk ses i fabriks- og infrastrukturprojekter, der integrerer forskellige PLC -teknologier, hver leveret med en anden og begrænset implementering af OPC UA -protokollen.
Specifikationen udvikler sig stadig, det sidste specifikationsdokument bind 14 er dateret 6. februar 2018, mens den første offentliggørelse af standard OPC UA stammer fra 2006.
Som følge heraf kan OPC UA på trods af en betydelig markedsføringsindsats for at understøtte vedtagelsen betragtes som et standardiseringsforsøg frem for en etableret standard.
UA kommunikationsstak
Arkitekturen for et UA -program, uafhængigt af om det er server- eller klientdelen, er struktureret i niveauer.
Nogle dele udligner med de tidligere COM Proxy/Stubs og fås af OPC Foundation. Bærbarhedsniveauet er nyt; det forenkler overførsel af UA ANSI C -stakken til andre målplatforme. Et portlag til Windows og Linux leveres også af OPC Foundation.
UA -sikkerhed
UA Security består af godkendelse og autorisation, kryptering og dataintegritet via signaturer. For webtjenester bliver WS-SecureConversation brugt og er derfor kompatibel med .NET og andre SOAP- implementeringer. For den binære variant er algoritmerne for WS-SecureConversation blevet fulgt og også konverteret til en binær ækvivalent. Dette kaldes UA Secure Conversation.
Der er også en blandet version, hvor koden er binær, men transportlaget er SOAP. Dette er et kompromis mellem effektiv binær kodning og firewall-venlig transmission. Binær kodning kræver altid UA Secure Conversation. Godkendelsen bruger udelukkende X.509 -certifikater. Det er afhængigt af, at applikationsudvikleren vælger, hvilket certifikatlager UA -programmet bliver bundet til. For eksempel er det muligt at bruge den offentlige nøgleinfrastruktur (PKI) i et Active Directory .
Indbyggede datatyper
OPC UA-standarden definerer 25 indbyggede datatyper:
| Indbygget type | C/C ++ ækvivalent | detaljer | NodeId -type |
|---|---|---|---|
| Boolske | bool | 0/1 (sandt eller falsk) | 0 (numerisk) |
| SByte | int8_t | -128 til 127 | |
| Byte | uint8_t | 0 til 255 | |
| Int16 | int16_t | -32768 til 32767 | |
| UInt16 | uint16_t | 0 til 65535 | |
| Int32 | int32_t | -2147483648 til 2147483647 | |
| UInt32 | uint32_t | 0 til 4294967295 | |
| Int64 | int64_t | -9223372036854775808 til 9223372036854775807 | |
| UInt64 | uint64_t | 0 til 18446744073709551615 | |
| Flyde | flyde | IEEE -værdi med enkelt præcision (32 bit) | |
| Dobbelt | dobbelt | IEEE -værdi med dobbelt præcision (64 bit) | |
| StatusKode | uint32_t | ||
| Snor | uint8_t* / std :: string | 3 (streng) | |
| Dato tid | int64_t | antal 100 nanosekundintervaller siden 1/1/1601 (UTC) | |
| GUID | implementeringsafhængig | 16-byte nummer brugt som en unik identifikator | 4 (GUID) |
| ByteString | (samme som streng) | 5 (byte streng) | |
| XmlElement | (samme som streng) | ||
| NodeId | navnerum indeks og NodeId type | ||
| ExpandedNodeId | (ligner NodeId) | ||
| Kvalificeret navn | navnerum indeks og streng | ||
| LocalizedText | streng og en lokal indikator | ||
| Numerisk område | streng (f.eks. "0: 4,1: 5" for [0..4] [1..5] array) | ||
| Variant | (kun indbyggede datatyper) | ||
| ExtensionObject | skalarer af enhver art | ||
| DataValue | en sammensætning af en værdi, tidsstempler og statuskode | ||
| DiagnosticInfo | detaljerede fejl-/diagnostiske oplysninger |
OPC UA API'er
UA API'er er tilgængelige på flere programmeringssprog. Kommerciel SDK er tilgængelig for C, C ++, Java og .NET. Open-source stakke er tilgængelige i det mindste til C, C ++, Java, Javascript (node), Tcl og Python [1] .
C ++/C Implementering
- Den open62541 Projektet giver en Open Source implementering for OPC UA server og klienter og er licenseret under Mozilla Public License v2.0. Udover Linux og Windows understøtter det også OS X, QNX og forskellige integrerede systemer som kompilationsmål.
- Den S2OPC projektet giver en Open Source sikret implementering og er licenseret under Apache 2.0 licens. Det understøtter Linux, Windows, FreeRTOS, Zephyr, VxWorks og har til formål at være sikkert, sikkert og hurtigt. Kernen i softwaren er formelt designet ved hjælp af B-metoden .
- ASNeG -projektet leverer en C ++ open source (Apache License 2.0) OPC UA -applikationsserver og en OPC UA -webserver ( betatilstand , i øjeblikket kun basisfunktioner).
- Den FreeOpcUa Projektet giver en open source ( LGPL ) server og klient implementering i C ++.
- De UAF Projektet tilbyder en open source (LGPL) C ++ / Python implementering.
.NET implementering
.NET -implementeringen bruger ANSI C til de lavere niveauer og implementerer resten indbygget i .NET. Det betyder, at kun håndteringen af stikket og Message-Chunking bliver integreret fra ANSI C-stakken. De-serialisering finder sted direkte i .NET og konverteres derfor direkte til .NET-strukturer og objekter. Dette giver bedre ydeevne end at de-serialisere til en C-struktur først og derefter kopiere dataene til en .NET-struktur bagefter.
Java implementering
Forskellige stakke til Java blev udviklet. I lighed med .NET er der hovedsageligt tre varianter:
- Indkapsler den komplette ANSI C -stak via JNI , hvilket komplicerer portabilitet. Selvom stakken kan portes til forskellige operativsystemer, skal den kompileres individuelt for dem. Dataene skal også kopieres til JNI-grænsen, men drager fordel af ydelsen af C under de-serialisering.
- Kode direkte på netværkslaget (svarende til den aktuelle. Net-implementering) og de-serialisere i Java. Dette gemmer en datakopiekørsel, men afhænger stadig af C -stakken.
- Skriv en native Java OPC UA -stak. Dette blev observeret som det mest bærbare, men skønnes at tage den mest tekniske indsats at implementere. Eclipse Milo-projektet giver en ren Java, open source, implementering af UA 1.03-klienten og serverspecifikation.
Alternativt er der den enkle variant, der kun understøtter WebService -protokollen. Til det er der brug for et SOAP Toolkit, der understøtter WS-sikkerhed .
JavaScript og Typescript implementering
node-opcua er en fuldstændig gennemførelse af OPC UA til klient og server helt at skrive på skrivemaskine til node.js .
Python -implementering
- Den FreeOpcUa projektet giver to implementeringer i ren Python programmeringssprog - opcua-asyncio (kræver Python> = 3,7) og python-opcua (kompatibel med Python 2, 3 og PYPY, det kræver Cython for LXML bibliotek, men er i vedligeholdelsestilstand og opcua-asyncio anbefales). Begge leverer abstraktioner på højt niveau af en OPC UA-klient og server, som kan bruges som den er eller let kan udvides til brugerdefinerede applikationer.
- Den S2OPC C-implementering giver en python indpakning PyS2OPC .
Rustimplementering
Rust til OPC UA giver en API og prøver til implementering af OPC UA -klient og servere op til integreret profilniveau. Dette inkluderer understøttelse af kryptering, abonnementer og standardnodesættet.
TypeScript / JavaScript -implementering
TypeScript / JavaScript OPC UA -klient til browseren er en OPC UA -klient, der fungerer i browseren. Det er fuldstændig skrevet i TypeScript og kompileret til JavaScript. Kildekoden er offentligt tilgængelig og har en MIT -licens. Det inkluderer OPC UA binær datakodning og bruger WebSockets som transportprotokol.
Tcl implementering
Topcua er en Tcl -binding til OPC UA -klient og server. Det giver flere operationer til at styre og kommunikere ved hjælp af OPC UA -implementeringen. Den er tilgængelig på almindelige POSIX- og Windows -platforme.
IEC 62541
IEC 62541 er en standard for OPC Unified Architecture.
| ID | udgivelses dato | titel |
|---|---|---|
| IEC/TR 62541-1 | 2016 | OPC Unified Architecture - Del 1: Oversigt og koncepter |
| IEC/TR 62541-2 | 2016 | OPC Unified Architecture - Del 2: Sikkerhedsmodel |
| IEC 62541-3 | 2020 | OPC Unified Architecture - Del 3: Address Space Model |
| IEC 62541-4 | 2020 | OPC Unified Architecture - Del 4: Services |
| IEC 62541-5 | 2020 | OPC Unified Architecture - Del 5: Informationsmodel |
| IEC 62541-6 | 2020 | OPC Unified Architecture - Del 6: Mappings |
| IEC 62541-7 | 2020 | OPC Unified Architecture - Del 7: Profiler |
| IEC 62541-8 | 2020 | OPC Unified Architecture - Del 8: Dataadgang |
| IEC 62541-9 | 2020 | OPC Unified Architecture - Del 9: Alarmer og betingelser |
| IEC 62541-10 | 2020 | OPC Unified Architecture - Del 10: Programmer |
| IEC 62541-11 | 2020 | OPC Unified Architecture - Del 11: Historisk adgang |
| IEC 62541-12 | 2020 | OPC samlet arkitektur - Del 12: Opdagelse og globale tjenester |
| IEC 62541-13 | 2020 | OPC Unified Architecture - Del 13: Aggregater |
| IEC 62541-14 | 2020 | OPC samlet arkitektur - Del 14: PubSub |
| IEC 62541-100 | 2015 | OPC Unified Architecture - Del 100: Enhedsgrænseflade |
Se også
Referencer
Litteratur
- Wolfgang Mahnke, Stefan-Helmut Leitner, Matthias Damm: OPC Unified Architecture. Springer Verlag 2009; ISBN 978-3-540-68898-3
- Lange, J., Iwanitz, F., Burke, T. OPC From Data Access to Unified Architecture 2010; ISBN 978-3-8007-3242-5
eksterne links
- OPC Foundation
- Introduktion til OPC UA baseret på open source open62541 SDK
- CECILL-C Licenseret OPC UA implementering
- OPC UA -udvikling på tværs af platforme og gratis cross -platform -klienter (Windows, Linux, Android, iOS)
- Multiplatform OPC UA mySCADA kører på Windows, Linux, MacOS, Android og iOS
- Ignition Native Java OPC UA Stack
- Introduktion til OPC UA Address Space modellering
- Node -OPCUA -OPC UA til nodejs -(MIT -licens)
- OPC UA til Android -enheder
- OPC Unified Architecture e-bog
- Open Source OPC UA SDK til Java
- FreeOpcUa-projektet implementerer en open source (LGPL) OPC UA-stak og tilhørende værktøjer.
- SDK til OPC UA (Java) og gratis klient/server
- OPC -programmørens forbindelse
- En fortælling om to industrielle IoT -standarder: DDS og OPC UA
- Woopsa - en protokol, der bringer funktioner, der ligner OPC UA, til internettet
- OPC UA Gateway for Industry 4.0
- S2OPC sikker kilde til OPC UA
- En komplet guide til OPC UA
- Lær OPC UA online