57
Examensarbete i datalogi vid Stockholms universitet 2009 Analys av OLE för processkontroll Lars Öman

Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

Embed Size (px)

Citation preview

Page 1: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

Examensarbete i datalogi vid Stockholms universitet 2009

Analys av OLE för processkontroll

Lars Öman

Page 2: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

NADA

Analys av OLE för processkontroll Lars Öman

Examensarbete i datalogi (30 högskolepoäng) Fristående kurs Stockholms universitet år 2009 Handledare vid Nada var Kjell Lindqvist Examinator var Lars Kjelldahl TRITA-CSC-E 2009:090 ISRN-KTH/CSC/E--09/090--SE ISSN-1653-5715 Institutionen för numerisk analys och datalogi KTH 100 44 Stockholm

Page 3: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

Referat

OPC

är en standard som skapats för överföring av processdata och

andra data mellan olika datorsystem inom olika typer av processindu-

strier. Den utvecklades av olika systemleverantörer ur ett behov inom

processindustrin att möjliggöra utväxling av processdata mellan

system.

På en fabrik fanns (och finns i växande grad) ett stort antal

datasystem. Dessa omfattar hela omfånget från processnära styrsystem

(DCS), via informationssystem och vidare till fabriks- och

koncernvisa planerings- och uppföljningssystem.

Det organ som ansvarar för utvecklingen av olika OPC-standarder,

OPC Foundation, har sedan något år fokuserat sina ansträngningar på

att introducera en ny standard, benämnd UA. Denna medger

användning av ett flertal olika underliggande plattformar där inte

minst val av olika webbtekniker medför ett paradigmskifte jämfört

med föregående OPC-standarder som byggde (med något undantag)

på Microsofts COM/DCOM-teknik.

Syftet med detta arbete har varit att analysera dessa två olika

generationer av OPC och i samband med detta klargöra deras olika

styrkor och svagheter.

De två olika generationerna har jämförts med avseende på

applicerbarhet, prestanda, användning av olika underliggande

standarder, säkerhet, tillförlitlighet och tillgänglighet.

Slutsatsen av detta examensarbete är att OPC genom framtagandet av

UA kommer att ges en stor möjlighet att behålla sin dominerande

ställning på processnära nivå och också att slå sig in och bli en viktig

standard för interkommunikation på affärsnivå. Inte minst borde stödet

från tunga aktörer på marknaden av UA borga för detta. Det kvarstår

att se hur kunderna, systemägarna, tar emot den.

Page 4: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

Abstract

Analysis of OLE for Process Control OPC is a standard created for transfer of process data and other data

between different computer systems within various branches of the

process industry. It originated from a need within the process industry

to exchange data between systems from different suppliers. There is

on each factory site a growing number of computer systems. This

spans all type of systems, from DCS systems for process control

further up towards planning and tracking systems on enterprise level.

The organization responsible for development of different OPC

standards, the OPC Foundation, has since a few years been focusing

on introducing a new standard named UA – ”Unified Architecture”.

This standard allows the use of several underlying platforms where the

availability of several different web technologies leads to a paradigm

switch in comparison to earlier OPC standards. Most of these earlier

standards were, with just a few exceptions, based on Microsoft’s

COM/DCOM technology.

The purpose of this thesis has been to analyze these two generations of

OPC standards and clarify their strengths and weaknesses. The two

generations have been compared concerning applicability, per-

formance, reliance on open standards, security, stability and

availability.

The conclusion of this thesis is that OPC by the development of UA is

given a high possibility to maintain its dominating position on the

process control level and also that it has a high chance of becoming an

important standard for communication on business level. This is

supported by the high number of major suppliers backing up the

standard. It remains to see how their customers, the owners of the

systems, accept it.

Page 5: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

Förord

Denna rapport är den avslutande delen för en magisterexamen i

datalogi vid Stockholms universitet.

Jag vill tacka min handledare på Nada, Kjell Lindqvist, som gett

rådigt och nödvändigt stöd samt tacka min hustru Lotta för hennes

fulla stöd i detta. Utan henne hade denna rapport inte blivit av.

Page 6: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

Innehåll

1 Inledning ........................................................................................ 1

1.1 Bakgrund .............................................................................. 1 1.2 Syfte och problemformulering ............................................. 1 1.3 Metod ................................................................................... 2 1.4 Avgränsningar ...................................................................... 2

2 Genomgång av COM/DCOM-standarden ..................................... 3

2.1 Översikt ................................................................................ 3 2.2 Orsak till varför COM utvecklades ...................................... 4

2.3 Vad är COM? ....................................................................... 4 2.4 Grundläggande krav som COM måste uppfylla .................. 7

2.5 Beskrivning hur COM-objekt används ................................ 7 2.6 Hur klient kommunicerar med COM-objekt ..................... 10 2.7 Beskrivning av hur COM-objekt definieras ....................... 12 2.8 Allmän beskrivning av COM+ .......................................... 13

3 OPC-standarden .......................................................................... 14

3.1 Historik .............................................................................. 14 3.2 Beskrivning OPC (COM-baserad) ..................................... 16

3.2.1 Generell beskrivning ............................................... 16 3.2.2 Beskrivning av OPC DA: Data Access ................... 17

3.2.3 Beskrivning av OPC HDA: History Data Access ... 21 3.2.4 Beskrivning av OPC AE: Alarm and Event............. 22

3.2.5 Beskrivning av OPC XMLDA: XML Data Access . 22 3.2.6 Beskrivning av OPC Batch...................................... 25

3.2.7 Beskrivning av OPC Security.................................. 25 3.2.8 Beskrivning av OPC DX: Data eXchange .............. 25 3.2.9 Beskrivning av OPC CX: Complex Data ................ 26

3.2.10 Beskrivning av OPC Commands ............................ 26 3.3 Beskrivning av OPC UA ................................................. 27

3.3.1 Generell beskrivning ............................................... 27

3.3.2 Utförligare beskrivning ........................................... 28

4 Analys och resultat ...................................................................... 38

4.1 Jämförelse mellan OPC-DCOM och OPC UA .................. 38 4.1.1 Applicerbarhet ......................................................... 38 4.1.2 Prestanda ................................................................. 39

4.1.3 Standarder ................................................................ 40 4.1.4 Säkerhet ................................................................... 40

4.1.5 Tillförlitlighet .......................................................... 41 4.1.6 Tillgänglighet .......................................................... 41

4.2 Generell utvärdering .......................................................... 42 4.3 Utveckling och framtid för OPC ........................................ 45

Källförteckning ................................................................................... 48

Page 7: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

1

1 Inledning

Detta kapitel handlar om examensarbetets bakgrund, syfte och av-

gränsningar.

1.1 Bakgrund

OPC1 är en standard som skapats för överföring av processdata och

andra data mellan olika datorsystem inom olika typer av process-

industrier. OPC har sitt ursprung i användares behov att enkelt och

effektivt möjliggöra kommunikation mellan system av olika fabrikat.

Standarden släpptes 1996 och har sedan dess i allt högre grad använts

inom processindustrin. Om vi bortser från olika systemleverantörers

egna protokoll och sätt att föra över data mellan deras olika noder,

fanns innan OPC i princip inget annat alternativ än textfiler. Detta

innebar problem på olika produktionsanläggningar vilka önskade att

skicka processdata mellan system av olika fabrikat. Anläggningarna

var ofta tvungna att implementera någon form av speciallösning. An-

vändningen av standarden har under årens lopp spridit sig även utan-

för processindustrin, bland annat återfinns standarden för kommunika-

tion mellan styrenheter för styrning av värme och ventilation av fastig-

heter.

1.2 Syfte och problemformulering

Syftet med detta arbete har varit att analysera underliggande tek-

nologier hos OPC och i samband med detta klargöra dess olika styrkor

och svagheter.

Systemingenjörer stöter ofta på problem vid överföring av processdata

mellan datorsystem. OPC-standarden har till viss del underlättat sådan

överföring, men tillämpningen av OPC har knappast varit problemfri.

Det var därför angeläget att undersöka och analysera standarden, in-

klusive vissa av de mest använda delstandarderna.

När denna rapport påbörjades 2005, var OPC UA2 ännu i sin linda,

varför intresset helt fokuserades på den COM-baserade varianten av

standarden. Problemformuleringen var då följande:

Att undersöka och klarlägga standardens underliggande

struktur

Att undersöka och klargöra eventuella felaktigheter och

problem i hur standarden appliceras

1 Object Linking and Embedding for Process Control

2 Unified Architecture

Page 8: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

2

Arbetet avbröts för att återupptas under 2008. Under denna tid hade

OPC UA utvecklats markant genom att en mängd dokument som be-

skriver UA hade släppts. Det uppstod därmed ett intresse av att inklu-

dera UA i studien. Problemformuleringen fick därför även inkludera

följande:

Att jämföra den COM-baserade versionen av OPC-standarden

med OPC-UA, och då särskilt fokusera på frågan har den sen-

are förmåga att ersätta den förra inom processindustrin.

1.3 Metod

Jobbet har främst bestått av litteraturstudier, men vissa studier av

källkodsexempel avseende COM har även gjorts.

1.4 Avgränsningar

Avgränsningar för examensarbetet har utgjorts av att studera enbart

OPC DA3 bland de COM-baserade standarderna. Övriga COM-base-

rade delstandarder har endast översiktligt studerats och beskrivits.

Anledningen till detta är framför allt omfattningen av installerad

mjukvara, där den COM-baserade DA-standarden är den absolut mest

använda.

Utöver detta har också nästa generation av OPC, UA, studerats. Denna

har jämförts mot de äldre, DCOM-baserade, versionerna.

Tiden har inte räckt till för att utföra egen testning av standardens

olika delar.

3 Data Access

Page 9: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

3

2 Genomgång av COM/DCOM-standarden

Detta kapitel handlar om COM/DCOM-standarden, vilken utgör en

plattform för den första generationens OPC-standarder.

2.1 Översikt

COM är en av Microsoft definierad arkitektur eller standard, med

vilken olika program kan erbjuda tjänster på ett strukturerat sätt.

ActiveX4 och OLE

5 är två, bland flera, olika begrepp eller tekniker

som baseras på COM. Men trots att Microsoft inte ens nått upp till ett

releasenummer högre än 0.9 för COM-standarden, är den en standard

på utgående. Inte minst kan denna slutsats dras eftersom COM-stan-

darden inte längre återfinns på Microsofts hemsidor. Detta innebär inte

att COM inte har haft någon betydelse inom mjukvaruindustrin. Sna-

rare är den i dag i högsta grad levande då den är implementerad i ett

otal applikationer och mjukvarulösningar världen över.

Några viktiga årtal värda att nämnas med COM:s utveckling:

1991 OLE (Object Linking and Embedding) 1.0 släpps. Denna

teknik utvecklades i första hand för sammansatta Word- och

Excel-dokument.

1992 Windows 3.1 släpps med OLE 1.0 integrerat.

1993 Första implementationen av COM släpps i form av

underliggande objektmodell för OLE 2.0. Denna version av

OLE utvecklas mer generellt för användning av

mjukvarukomponenter. COM är vid denna tidpunkt inte ett

eget begrepp, utan återfinns under samlingsnamnet OLE.

1996 DCOM släpps.

1997 Microsoft börjar använda COM som eget begrepp.

1999 DCOM version 1.3 släpps

2000 Windows 2000 släpps. Integrerat med detta släpps samtidigt

COM+.

Som namnet indikerar, COM – Component Object Model – baseras

arkitekturen på objektorienterad programmering. Den baseras också

på ett klient/server koncept. De program som tillhandahåller tjänster

enligt standarden kallas för COM-objekt. Varje sådant objekt tillhan-

dahåller sina respektive tjänster genom ett eller flera s.k. gränssnitt

(eng. ”interface”), eller för att uttrycka sig mer konkret, tjänsterna

ifråga är normalt metoder i form av funktioner och procedurer. Varje

COM-objekt hör hemma i en COM-server och är en instansiering av

en COM-klass. En COM-server är alltså en binär fil som innehåller

kod för en eller flera COM-klasser.

4 Microsoft-beteckning av komponent-objektmodell

5 Object Linking and Embedding

Page 10: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

4

2.2 Orsak till varför COM utvecklades

Det finns säkerligen ett flertal olika uppfattningar rörande vilken den

ursprungliga orsaken var till att COM utvecklades som standard. Vid

studie av dess historik (avsnitt 2.1 ovan) framgår det att den senaste

versionen av standarden inte till fullo överensstämmer med de ur-

sprungliga idéer som fanns – vilket dock hör till sin natur.

En grundläggande tanke när standarden utformades var att man måste

kunna ändra i en implementationsklass utan att detta kräver att klient-

applikation måste omkompileras. Om ett stort antal klientapplikationer

finns distribuerade, måste man kunna ändra i serverapplikationen utan

att klienterna tvingas uppgradera sina applikationer. En annan grund-

läggande tanke var att om en ändring nu görs på serversidan, måste en

klientapplikation ges möjlighet att kunna upptäcka denna – annars är

ju tanken med att kunna ändra i serverapplikationen tämligen

meningslös. Ett ytterligare krav var att användning av olika kompila-

torer måste tillåtas. Programutvecklare måste på olika håll kunna

arbeta med samma klient- och serverlösning utan att först behöva

tänka på vilken utvecklingsmiljö övriga utvecklare arbetar i. Slutligen

måste ett enhetligt system för interprocesskommunikation (seri-

alisering) föreligga.

2.3 Vad är COM?

COM-standarden definierar endast hur de olika gränssnitten till COM-

objekten ska se ut. Den säger således ingenting om implementationen

i objekten bakom varje gränssnitt. Hur programkoden i objekten

(klasserna) utformas är alltså helt upp till objektleverantören, så länge

reglerna för gränssnitten följs.

Ett grundläggande krav i standarden är att ett COM-objekt (COM-

klass) inte kan ändra omfattningen av sina gränssnitt. Olika versioner

kan alltså inte finnas. Ändras något gränssnitt i en COM-klass leder

det till en ny klass med ny klassidentitet (engelska CLSID – Class

Identity). Ett COM-objekt brukar grafiskt representeras enligt figur 1.

Figur 1: Ett COM-objekts tjänster är åtkomliga via dess olika

gränssnitt.

Page 11: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

5

Mot ett sådant gränssnitt ansluter sedan en klientapplikation. Varje

gränssnitt inkluderar en eller flera metoder och varje gränssnitt döps

till ett namn som börjar på ”I” (från engelskans ”Interface”). Ett enkelt

exempel representeras grafiskt i figur 2.

Figur 2: En klientapplikation med pekare till COM-objekts gränssnitt.

En konkurrerande teknologi är OMG:s6 CORBA.

7 (för en intressant

jämförelse läs [10]).

Även om COM-standarden ska vara generell och inte vara bunden till

något programspråk, visar dess uppbyggnad att dess skapare på Mi-

crosoft var influerade av programspråket C++. Allteftersom har dock

olika tillägg gjorts för att anpassa standarden för att andra språk ska få

tillgång till COM, som exempelvis Microsofts Visual Basic och

Borlands Delphi.

COM:s föregångare var Microsofts OLE8-teknik som än i dag används

för utbyte av olika objekt inom Microsofts Office familj. Ett exempel

på dess användning är att man enkelt kan flytta en tabell från ett Mic-

rosoft Excel-ark till ett Microsoft Word dokument.

När COM-standarden släpptes, löste den ett antal problem för

programmerare världen över – inte minst inom Microsoft-världen. Ett

av dessa var att kunna distribuera objekt som kunde användas av an-

dra programmerare utan att dessa behövde tillgång till objektets käll-

kod vid kompilering. Ett annat problem var att program skrivna i olika

programspråk inte kunde användas tillsammans. Ett tredje problem

var att program skrivna i samma språk men kompilerade i kompila-

torer av olika fabrikat ofta drabbades av problem när de skulle an-

vändas tillsammans. Som nummer fyra på listan fanns problemet att

en ändring av ett enskilt objekt i en större applikation medförde om-

kompilering och/eller omlänkning av hela applikationen.

COM behandlar gränssnitt, implementationer och klasser som

distinkta begrepp. Gränssnitt är abstrakta protokoll för att kommuni-

cera med ett objekt. Implementationer är konkreta datatyper som un-

derstöder ett eller flera gränssnitt. Klasser slutligen är namngivna im-

plementationer som representerar instansierbara objekt och kallas för

COM-klasser (på engelska ”coclasses”).

6 Object Management Group www.omg.org

7 Common Object Request Broker Architecture

8 Object Linking and Embedding

Page 12: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

6

En COM-klass är implementerad i en server. En server kan imple-

menteras antingen som en s.k. ”in-process” server – en DLL-fil, som

en lokal server – en EXE-fil, eller som en distansserver – en EXE-fil

på en annan dator. Den sistnämnda innebär implementering av den ut-

ökning av den ursprungliga COM-standarden som betecknas DCOM9.

En DLL10

-fil är ett publikt bibliotek av körklara funktioner. DLL:en

laddas när en applikation som behöver någon funktion i DLL:en gör

ett anrop. Inläsning till internminne sker alltså inte vid start av

applikationen utan först vid anrop. Ett eller flera COM-objekt (med ett

eller flera gränssnitt) i en DLL kan anropas från en klient. En DLL kan

kompileras och länkas separat från den kallande applikationen (t.ex.

en COM-klient). Koden tillhörande en DLL exekverar i samma

process som den kallande applikationen [9].

En lokal server har ett COM-objekt implementerat i en egen exe-fil.

Som sådan exekverar den i en egen process. Detta medför att ett anrop

från klientapplikationen till den lokala servern kräver användning av

något mellanliggande protokoll (som ex. RPC11

). Detta innebär

exekvering av ytterligare kod jämfört med en in-process server.

I figur 3 ser vi ur ett förenklat perspektiv de tre olika sätt på vilket en

COM-klient kan koppla mot en COM-server.

Figur 3: En COM-server kan implementeras på olika sätt.

9 Distributed COM

10 Dynamic Link Library

11 Remote Procedure Call

Page 13: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

7

2.4 Grundläggande krav som COM måste uppfylla

Baserat på vad som nämns i föregående avsnitt (2.2 och 2.3), uppkom

några krav som måste uppfyllas. För det första innebär bristen av en

binär standard hos C++ att omfattningen av funktionaliteter som kan

utväxlas genom DLL-gränser begränsas. För det andra innebär den

täta binära kopplingen i C++ mellan klient och objekt, och

inkompatibilitet mellan kompilatorer och länkare av olika fabrikat att

enkel export av C++-klasser i DLL:er inte låter sig göras.

För att försäkra sig om att alla kompilatorer genererar likartad

maskinkod ställs vissa krav på gränssnittsklassen. Pradeep Tapadiya

uppställer följande punkter för att uppfylla kraven [14]:

endast helt virtuella metoder

inga överladdade (”overloaded”) virtuella metoder

inga variabler (”member variables”)

utgå (”derive”) från maximalt en basklass i arvskedja

Resultatet av detta är att en abstrakt basklass, dvs. grunden till ett

gränssnitt, erhålls.

2.5 Beskrivning hur COM-objekt används

För identifiering av olika COM-typer används GUID:er12

som är 128

bitar långa tal. Dessa baseras på UUID:er13

som används i DCE RPC

[16]. Det får inte finnas två typer med samma UUID överhuvudtaget.

När ett nytt UUID behövs, använder algoritmen som skapar detta

utifrån den lokala nodens klocka och MAC adress.

Om typen ifråga är ett gränssnitt talar man om gränssnitts-identiteter

eller IID:er14

. Handlar det istället om COM implementationer (COM-

klasser) betecknas deras identitet med klassidentitet eller CLSID:er15

.

Olika COM-klasser som är likartade kan kategoriseras tillsammans.

För detta finns möjligheter att tilldela sådana klasser en identisk s.k.

katgori-identitet eller CATID16

. En sådan kategoriuppdelning skulle

exempelvis kunna vara språktillhörighet.

Varje COM-klass som ska användas av någon klient, måste vara

registrerad i Windows systemregister (Windows Registry)17

. Varje

respektive CLSID-nyckel innehåller sedan bl.a. information om var

den sökta COM-servern finns (nod/sökväg).

12

Globally Unique Identifiers 13

Universally Unique Identifiers 14

Interface ID 15

Class ID 16

Category ID 17

nyckel ”HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID”

Page 14: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

8

Om ett CLSID är ohanterligt p.g.a. dess stora antal siffror, kan ett mer

lättläst ID, en ProgID, tilldelas en typ. Denna ProgID garanterar dock

inte samma unikhet av en typ som ett UUID utgör. Även ett ProgID

måste registreras i systemregistret för att kunna användas. Ett ProgID

definieras i form biblioteksnamn.klassnamn.version. Utifrån ett

ProgID kan en klient erhålla motsvarande CLSID och vice versa.

Registrering av en klass kan ske på flera olika sätt beroende på

tillämpning. Antingen kan en register-fil (fil med filändelse ”reg”) där

registernycklar och värden direkt är angivna kan skapas, eller så kan

ett installationsprogram skapas. Alternativt kan klassen själv innehålla

kod som hanterar registrering och avregistrering. För en .exe-

implementerad server (servern finns i en exekverbar fil med filändelse

”exe”) kan då registrering ske genom att exekvera denna med flaggor

tillagda i kommandot. För en dll måste funktionerna

”DllRegisterServer” och ”DllUnregisterServer” vara implementerade

för att möjliggöra registrering och avregistrering. Registrering (och

avregistrering) kan då ske dynamiskt vid exekvering eller som

alternativ statiskt genom anrop av regsvr32.exe. Implementering av

funktionerna kan vara relativt komplexa, men underlättas genom

användning av ATL-mallar eller MFC-funktioner.

COM biblioteket (eng. ”COM Library”) innehåller ett antal tjänster

som behövs i COM och återfinns framför allt i DLL-filen

OLE32.DLL. Bland annat används det för att skapa COM-objekt.

”IUnknown” är roten till alla COM-gränssnitt och är det enda COM-

gränssnitt som inte ärver metodanrop från något annat gränssnitt.

Varje COM-gränssnitt måste vara ett arv från IUnknown eller ett annat

COM-gränssnitt (som i sin tur har ärvt gränssnittet IUnknown) – dock

maximalt ett annat sådant. En orsak till det sistnämnda är att

kompilatortransparans [2] skulle frångås. Det är genom IUnknown

som en klient kan få tillgång till övriga gränssnitt i ett objekt – alla

COM-objekt måste stödja IUnknown. IUnknown innehåller endast tre

metoder: ”QueryInterface”, ”AddRef” och ”Release”.

Eftersom alla funktioner i ett COM-gränssnitt är rent virtuella, måste

den ärvda klassen innehålla implementation för samtliga dessa funk-

tioner, inklusive de som ingår i IUnknown.

Precis som gäller för alla andra gränssnitt, finns det ingen kod

tillgänglig som implementerar IUnknown, utan detta får konstruktören

av server-objektet själv skapa eller kopiera från annat ställe. Dock

beskriver COM noga vad en klient kan förvänta sig vid anrop av

IUnknown. Figur 4 beskriver vilka metoder IUnknown måste stödja.

Page 15: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

9

extern "C" const IID IID_Unknown;

interface IUnknown

{

virtual HRESULT STDMETHODCALLTYPE

QueryInterface(REFIID riid, void **ppv) = 0;

virtual ULONG STDMETHODCALLTYPE AddRef(void) = 0;

virtual ULONG STDMETHODCALLTYPE Release(void) = 0;

}

Figur 4: C++ definition av gränssnitt ”IUnknown”.

Parametern ”riid” till QueryInterface är det fysiska namnet (IID) på

det gränssnitt som sökts av klienten medan parametern ”ppv” är en

pekare som returneras till klienten och som pekar på det önskade

gränssnittet, samtidigt som HRESULT S_OK returneras. Om

gränssnittet inte skulle finnas i objektet, sätts ppv till noll samtidigt

som HRESULT E_NOINTERFACE returneras.

Ett COM-objekt som själv kan finna och instansiera andra COM-

objekt kallas för en moniker och stödjer IMoniker-gränssnittet. Genom

användning av en moniker, kan förfarandet att skapa ett COM-objekt

underlättas för en klient. En moniker kan skapas av en annan moniker.

COM definierar ett antal gränssnitt för att möjliggöra persistens d.v.s.

möjliggöra för ett objekt att såväl spara undan dess status på hårddisk

som att ladda in samma parametrar från hårddisk.

Page 16: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

10

2.6 Hur klient kommunicerar med COM-objekt

Skeendet när en klientapplikation efterfrågar ett COM-objekt, är

följande (åskådliggjort i figur 5):

1. klienten anropar COM-biblioteket med klassidentitet (CLSID)

och identitet för önskat gränssnitt (IID).

2. COM-biblioteket lokaliserar plats (nod och sökväg) för COM-

servern (DLL eller EXE) med hjälp av Windows

systemregister

3. COM-biblioteket ordnar så att servern laddas och instansierar

objektet. COM-biblioteket efterfrågar (och erhåller) samtidigt

pekare till efterfrågade gränssnittet.

4. Pekaren skickas vidare till klienten.

5. Klienten anropar med hjälp av pekaren, önskad metod i det

efterfrågade gränssnittet.

För att lösa uppgiften med att ladda och instansiera objektet, anropar

COM-biblioteket en tjänst vid namn ”Service Control Manager”

(SCM) och som återfinns i filen RPCSS.DLL. Denna kategoriseras

som en av flera beståndsdelar i COM+. Varje maskin som under-

stödjer COM måste ha såväl ett COM-bibliotek som en SCM.

klient

COM

bibliotek

objekt

server

system

registry

5. klienten kan anropa funktioner

i gränssnittet

4. pekare till gränssnitt returneras via

COM-biblioteket

1. klienten anropar COM-biblioteket

2. COM lokaliserar server

3. COM instansierar server

Figur 5: Skapande av COM-objekt.

Den pekare som returneras till klienten, är kopplad till gränssnittet

IUnknown. Genom att sedan anropa metoden

IUnknown::QueryInterface och skicka med IID för den önskade

metoden, returneras till klienten en ny pekare till denna. Klienten kan

därefter anropa den önskade klienten. Figur 6 visar ett exempel där en

klient anropar IUnknown för att tillhandahålla referens till det efter-

frågade gränssnittet IDataTrans.

Page 17: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

11

Figur 6: En klient kopplar först mot IUnknown.

För att aktivera ett COM-objekt, finns ett gränssnitt, ”IClassFactory”,

som används för att implementera s.k. klassobjekt eller klass-

fabriker18

. När ett sådant klassobjekt skapats, är dess främsta uppgift

att skapa ett eller flera av klienten efterfrågade användarobjekt.

Observera att såväl klassobjektet/klassfabriken som det eller de av

klienten efterfrågade användarobjektet är implementerade enligt

COM.

Fördelen med att använda klassobjekt är att såväl språk- som

lokaltransparens erhålls på ett stringent sätt.

COM definierar tre olika aktiveringsmodeller som kan användas för

att ladda in objekt till internminnet så att metodanrop därefter kan

möjliggöras. Klienter kan via COM-biblioteket anropa ett klassobjekt

(som i sin tur anropar användarobjekt). Klienter kan också anropa

COM-biblioteket för att direkt anropa ett användarobjekt. Slutligen

kan klienten fråga efter ett persistent objekt. d.v.s. ett objekt vars

status är sparad på hårddisk. Av dessa tre är endast anrop av klass-

objekt nödvändigt att implementera.

Består servern av en DLL-fil, är aktivering av ett COM-objekt en

relativt enkel hantering. Detta med hjälp av Windows inbyggda DLL-

hantering och COM/COM+ påbyggnader.

Är servern istället implementerad i en EXE-fil, eller installerad på

annan maskin än klient-maskinen, måste någon form av serialisering

utföras. Med serialisering menas här en hantering för paketering av

data i lämpligt format för utväxling mellan olika processer, antingen i

samma eller mellan olika maskiner. För att hantera serialisering

används mellanservrar19

och stubbar20

. En mellanserver ser från

klientapplikationens håll ut som det efterfrågade objektet d.v.s. dess

gränssnitt ser identiskt ut. Men istället för att utföra den önskade

funktionen, paketerar en mellanserver alla metodparametrar och

skickar dessa vidare till en motsvarande stubb. Denna stubb paketerar

sedan i sin tur upp metodparametrarna och anropar det riktiga objektet

med dessa. Returnerat resultat skickas samma väg tillbaka. Klienten

ser alltså ingen skillnad mellan en server implementerad i en DLL-fil

18

Class Objects , Class Factories 19

Proxies 20

Stubs

Page 18: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

12

och en EXE-fil. Inte heller ser klienten någon skillnad mellan en lokal

server och en server i en annan maskin.

En DLL-baserad server är, då objektet exekverar i samma process som

klienten, naturligtvis snabbare med att returnera ett resultat i

jämförelse med en EXE-baserad dylik. Sker anropet dessutom över ett

nätverk av någon form, ökar svarstiderna än mer. Man talar här om en

kontextgräns, där en process eller en maskin (nod) kan ses som en

sådan (se figur 7). När kontextgränsen är maskingräns, sker

kommunikation mellan maskinerna med hjälp av ORPC21

som i sin tur

använder MS-RPC22

.

Figur 7: Användning av mellanserver och stubb.

2.7 Beskrivning av hur COM-objekt definieras

För att kunna skapa en COM-class, måste man utgå från en IDL-fil23

.

COM:s IDL definition, MIDL24

, bygger på OSF:s25

IDL-specifikation,

men har fått några tillägg för att understödja COM:s objektorienterade

inriktning [12]. För kompilering av sådana MIDL-filer, distribuerar

Microsoft en MIDL-kompilator (MIDL.EXE). För enkelhets skull har

denna kompilator i olika litteratur och dokumentation fått beteck-

ningen MIDL, medan Microsofts IDL-specifikation benämns COM

IDL.

En definition av ett gränssnitt i IDL (åskådliggjort i figur 8) måste in-

ledas med begreppet ”interface”. Denna föregås av attribut som är an-

givna inom hakparenteser. Ett av attributen är en UUID – en unik

identitet för gränssnittet som alltid måste anges.

21

Object RPC 22

Remote Procedure Call 23

Interface Definition Language 24

Microsoft IDL 25

Open Software Foundation

Page 19: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

13

[

local,

object,

uuid(00000000-0000-0000-C000-000000000046)

]

interface IUnknown

{

HRESULT QueryInterface( [in] REFIID riid,

[out] void **ppv);

ULONG AddRef(void);

ULONG Release(void);

}

Figur 8: IDL definition av ”IUnknown”.

När en COM IDL fil kompileras av MIDL, genereras ett flertal filer

som kan sammanfattas enligt följande:

C/C++ header-filer

kod för skapande av mellanservrar/stubbar (med tillhörande

serialisering26

)

typbibliotek27

Header-filerna definierar de abstrakta bas-klasserna som motsvarar de

gränssnitt som är definierade i IDL:en. Dessa header-filer används

såväl av skapare av COM-objekt som av skapare av klientkod. Typ-

biblioteket är binär kod som tillåter andra COM-applikationer att

skapa kopplingar mot den aktuella komponenten. Denna binärkod kan

ingå i koden för en DLL- eller EXE-fil.

2.8 Allmän beskrivning av COM+

I ett försök att skapa en homogen miljö för utveckling och användning

av program, inte minst riktad mot affärskritiska system, skapade

Microsoft något de benämnde DNA. Denna bestod av en logisk

arkitektur av tre lager – presentation, affärslager och datalager. För

kommunikation dessa lager emellan, skulle en blandning av

COM/DCOM och HTTP användas. För hantering av affärslagret,

fanns sedan tidigare en funktionalitet, MTS28

. Denna, tillsammans

med ett antal andra funktioner i Windows, införlivades i Windows

2000 tillsammans med COM. Denna affärslager-funktionalitet

samlades sedan under namnet COM+.

26

Marshalling 27

Type Library 28

Microsoft Transaction Server MTS

Page 20: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

14

3 OPC-standarden

Detta kapitel handlar om de olika OPC-standarder som presenterats av

OPC Foundation. Här beskrivs såväl de tidigare generationerna bas-

erade på COM/DCOM, som den senaste OPC-standarden, OPC-UA.

3.1 Historik

The OPC Foundation är en sammanslutning av över 300 medlemmar i

form av olika företag från hela världen. Den startades ursprungligen

av ett antal företag inom automationsindustrin i avsikt att skapa en

standard för datakommunikation. Arbetet skedde i samarbete med

Microsoft då den ursprungliga standarden baserades på Microsofts

OLE COM/DCOM standarder. De absolut flesta företag som återfinns

inom automationsindustrin är idag medlemmar i sammanslutningen.

Några exempel är ABB, Bosch, Emerson, GE, Honeywell, ICONICS,

ISA Matricon, Microsoft, Metso Automation, Mitsubishi, Siemens,

Toshiba och Yokogawa, En given deltagare är också Microsoft.29

I OPC:s regi har ett antal delstandarder utvecklats. De viktigaste har

varit:

DA: Data Access

Används för överföring av realtidsdata mellan en OPC DA server och

en OPC DA klient. DA servern är normalt ett styrsystem eller annan

processdatakälla. Data skickas normalt från server till klient, men om-

vänd datariktning kan förekomma.

HDA: History Data Access

Används för överföring av historisk data mellan en OPC HDA server

och en OPC HDA klient. HDA servern är normalt ett styrsystem eller

en annan processdatakälla.

AE: Alarm and Event

Används för konfigurerad larm- och händelsehantering (i motsats till

det kontinuerliga dataflödet i DA). Inkluderar processlarm, operatörs-

händelser, informationsmeddelanden och spårnings-/loggningsmed-

delanden.

XMLDA: XML Data Access

Används för överföring av data via XML (mer specifikt, SOAP och

andra ”Web Services”).

Batch:

Används specifikt inom olika batch-processer.

29

Mer information om sammanslutningen kan återfinnas på dess hemsida,

www.opcfoundation.org

Page 21: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

15

Security:

Används för att administrera säkerhet med avseende på åtkomst av

data.

DX: Data Exchange

Används för dataöverföring på server/server-basis (istället för på

klient/server). Konfiguration på distans, diagnostik och över-

vakning/administration kan dessutom tillföras med hjälp av denna

standard.

.

CX: Complex Data

Tilläggsstandard till DA och XML-DA. COmplex Data definierar

(som dess namn antyder) hur mer komplicerade datatyper kan

användas.

Commands:

Standard för att definiera hur OPC servrar och OPC klienter ident-

ifierar, skickar och kontrollerar kommandon som avses exekveras på

någon form av enhet.

Common Definitions:

Dokumentet innehåller gemensamma regler och designfrågor som

berör de övriga delstandarderna.

UA:

Nytt initiativ som i princip ska ersätta alla de tidigare delstandarderna

(se vidare avsnitt 3.3)

Om vi tittar på några årtal som markerar OPC-standardens utveckling,

kan en lista se ut enligt följande:

1996 OPC Foundation presenteras på ISA möte. OPC DA 1.0

släpps något senare

1997 OPC DA 1.0A släpps

1998 OPC DA 2.0 och AE 1.0 släpps

1999 OPC AE 1.01 Auto och DA 2.02 släpps

2000 OPC HDA 1.0 släpps

2001 OPC Batch Auto 1.0, Batch 2.0, HDA Auto 1.0 och Security

1.0 släpps. ”OPC Compliance Testing and Certification” för

OPC DA servrar införs. Certifieringen införs så småningom

även för AE Servrar.

2002 OPC AE 1.1, Common 1.1 och DA 2.05a släpps

2003 OPC HDA 1.2, Complex 1.0, XMLDA 1.0, DX 1.0 och DA

3.0 släpps

2004 OPC Commands 1.0 släpps

2005 OPC UA – Unified Architecture släpps

Page 22: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

16

3.2 Beskrivning OPC (COM-baserad)

Här beskrivs de första generationernas OPC-standarder som föregick

OPC-UA.

3.2.1 Generell beskrivning

På olika fabriker fanns (och finns i växande grad) ett stort antal data-

system. Dessa omfattar hela omfånget från processnära styrsystem

(DCS), via informationssystem och vidare till fabriks- och koncern-

visa planerings- och uppföljningssystem. Då det före OPC inte fanns

någon enhetlig standard för överföring av processdata, utvecklade de

olika leverantörerna egna gränssnitt för kommunikation mellan sina

olika dataenheter i ett system (här avses begreppet gränssnitt mer

generellt). Det var inte ovanligt att flera olika typer av gränssnitt från

en och samma leverantör kunde förekomma. När sedan behov uppstod

av att kommunicera mellan system från olika leverantörer, växte

problematiken allt mer. Följden blev att en leverantör var tvungen att

utveckla ett flertal gränssnitt inte enbart för att kommunicera mellan

egenutvecklade system, utan dessutom ett flertal för att möjliggöra

kommunikation mot alla andra leverantörers olika system. Utifrån

behovet av en allmänt accepterad standard uppstod då OPC. Figur 9

åskådliggör problemet.

Figur 9: Exempel på behov av gränssnitt mellan olika system.

Inte minst baserat på systemägarnas krav, ledde utvecklingen till att

Microsofts Windows-miljö valdes som en allmän plattform på vilken

systemleverantörerna byggde sina applikationer. Det föll sig då

naturligt att använda COM-arkitekturen som grund för en öppen

standard att användas av de olika systemleverantörerna. Man nådde då

en situation som schematiskt åskådliggörs i figur 10.

Page 23: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

17

Figur 10: Exempel på användning av OPC mellan olika system.30

Då behovet till att börja med var att överföra processdata mellan olika

process-system, utvecklades följaktligen OPC-DA standarden först.

Allteftersom DA användes ute i industrierna, uppkom behov av utökad

funktionalitet, varför delstandarder för dessa också utvecklades.

Överföring av larm, händelser och historiska data är exempel på

sådana behov. Då utvecklingen gjorde att slutet för COM kunde börja

anas, utvecklades OPC XML DA där XML/SOAP utgjorde teknisk

plattform. Initialt var intentionerna troligen att utveckla motsvarande

XML-baserade alternativ för de övriga delstandarderna. Dessa

intentioner föll – troligtvis då tanken på en ny arkitektur som skulle

ersätta samtliga delstandarder dök upp. Denna arkitektur är den under

2005 släppta UA.

3.2.2 Beskrivning av OPC DA: Data Access

Den OPC DA standard som här beskrivs avser 3.0 för ”custom”-

gränssnitt och 2.02 för Automation-gränssnitt.

OPC DA specificerar hur data kan utväxlas mellan en OPC DA-klient

och OPC DA-server och baserar sig på COM. Klienten är här (som i

de flesta klient/server-konfigureringar) den begärande parten och

servern är den tjänande parten. Servern hämtar data från (eller skickar

data till) en datakälla via något underliggande gränssnitt som inte

nödvändigtvis är baserat på COM. Datakällan kan exempelvis vara en

modul i ett styrsystem, arkitektoniskt nära belägen en industriprocess

via exempelvis I/O till fältutrustningar. Normalt efterfrågar en DA-

klient senast tillgängliga realtidsdata, men klienten kan också skicka

data med tidstämpel. Tack vare OPC-standardens grundidé inne-

bärande öppenhet, kan en DA-klient koppla sig mot DA-servrar från

olika leverantörer.

Till varje värde hör en tidstämpel och en tillförlitlighetsfaktor.

Tidstämpeln är normalt konfigurerbar att sättas av OPC-servern eller

av OPC-klienten. Om inte OPC-servern och OPC-klienten är konti-

30

Cirkeln i figuren ska inte ses som någon fysisk eller logisk enhet, utan mer som

en abstraktion.

Page 24: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

18

nuerligt synkroniserade med avseende på aktuell tid, kan denna kon-

figurering vara av stor vikt. Tillförlitlighetsfaktorn kan även den sättas

av OPC-servern eller OPC-klienten. Den anger med ett procenttal, i

vilken grad värdet kan anses tillförlitligt. När exempelvis ett värde

befinner sig utanför gränsvärdena med vilken en fältgivare är

definierad att leverera data, sätts tillförlitlighetsfaktorn till ett värde av

noll.

OPC DA specificerar endast COM gränssnitt – inte implementation av

klient eller server-objekt (inkl. grupper och poster). Genom använd-

andet av COM, får man i OPC DA en klient-server arkitektur, där en

OPC-server via ett gränssnitt levererar ett antal objekt (och dess

metoder) för en OPC-klient.

OPC DA specificerar två typer av gränssnitt: DA ”custom” och DA

”Automation”. En DA-server måste alltid understödja custom-

gränssnittet medan stöd av Automation-gränssnittet är valfritt. Ett DA

Automation-hölje31

i servern kan hantera den utökade funktionalitet

som krävs för dess funktion. Det kan här nämnas att OPC Foundation

tillhandahåller ett sådant hölje. En C++-applikation kan använda sig

av ett DA custom gränssnitt medan en Visual Basic applikation (eller

andra liktydig, ex. Delphi), måste använda ett Automation-gränssnitt

(se figur 11).

Figur 11: C++ applikation och Visual Basic application.

Kommunikationen mellan DA-servrar och datakällor sker ofta med

något internt format av kommunikation specificerad av datakällans

leverantör. DA-servern kan vara av typ ”in- process”, lokal exe-fil

eller på distans d.v.s. finnas på annan maskin än klientapplikationerna.

DA custom-standarden definierar två grundläggande gränssnitt:

”OPCServer” och ”OPCGroup”.

Varje DA server-objekt implementerar gränssnittet OPCServer och

fungerar som en behållare32

för ett eller flera DA grupp-objekt. DA-

servrar innehåller dessutom information om sig själva.

31

Wrapper 32

Container

Page 25: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

19

En DA-server tillhandahåller medel för en DA-klient för att skapa och

manipulera DA-grupper, som i sin tur tillhandahåller medel för att

skapa och manipulera DA-poster. Enligt OPC DA-standarden ska ett

minimum av definierade gränssnitt understöds av en server (se figur

12). Förutom gränssnitten kan utvecklaren av en DA-server konstruera

ytterligare egna sådana.

Figur 12: Standard OPC DA server objekt.

Servern måste konstrueras med ett delmål att minimera resursbehov

på datakällan. Ett sätt att möjliggöra detta är att buffra (eng. ”cache”)

data så att det räcker med en läsning i datakällan om flera klienter

efterfrågar samma data. Någon form av optimering som balanserar

behov från klienter av aktuell data kontra last på datakällan måste då

ske. Förutom att optimera dataåtkomst i datakällan, ska servern även

medge att data skickas dit.

En DA-server kan lagra egen konfigurering på disk med hjälp av

COM:s ”IPersistFile” gränssnitt. All konfigurering (inkl. lagring på

disk) av DA-grupper och DA-poster måste dock hanteras av klienten.

Ett DA grupp-objekt implementerar gränssnittet ”OPCGroup” och

fungerar som behållare för ett eller flera DA post-objekt (eng.

”items”). DA-servrar innehåller dessutom information om sig själva.

Enligt OPC DA-standarden ska ett minimum av definierade gränssnitt

understöds av en grupp (se figur 13).

Page 26: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

20

Figur 13: Standard OPC DA-grupp objekt.

En DA-post representerar en koppling till ett datavärde i servern. Till

varje post hör datavärdet själv (i form av typen VARIANT), ett

kvalitetsvärde och en tidstämpel. Åtkomst från en DA-klient av dessa

värden kan inte ske direkt, utan måste hanteras via en DA-grupp. Det

finns helt enkelt inga publika COM/OPC gränssnitt definierade för en

DA-post.

Det finns två olika sätt för en klient att begära data från en server:

synkron och asynkron. Den synkrona begäran innebär att klienten in-

väntar svaret på anropet i form av data från servern, utan att däre-

mellan kunna göra något annat. Normalt läses synkron data från

buffert. Normalt begärs också synkron data periodiskt, vilket innebär

att all data som skapats sedan föregående begäran från klient läses

från buffert, oavsett om datan ändrat värde eller ej.

Asynkron begäran däremot innebär att klienten inte kan förutse hur

lång tid det tar innan data returneras, men är å andra sidan normalt

snabbare än synkron begäran. Asynkron begäran av data innebär i

princip en prenumeration av data, fram till dess att denna avslutas av

klienten. När begäran om asynkron data inkommer till servern, kan

data returneras direkt eller efter ett längre tag beroende på bland annat

att data inte ändrar värde. Asynkron leverans av data implementeras

genom gränssnittet ”IOPCDataCallback”. Genom användande av

olika parametrar kan bland annat dödband33

och uppdateringshastighet

definieras, varvid den totala mängden av överförd data kan

kontrolleras och därigenom indirekt belastning på noder och nätverk.

33

Dödband specificerar (normalt i procent) andel av ett värdes mätområde som

värdet måste ändra för att anses intressant för klienten. Ett värde vars ändring

inte överskrider denna gräns skickas inte till klienten

Page 27: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

21

Den synkrona läsningen kan användas när relativt små mängder av

data skickas. För effektivt utnyttjande av maskin- och nätverksresurser

rekommenderas den asynkrona läsningen.

Tillsammans med standarden själv, levererar OPC Foundation IDL-

filer och header-filer för felhantering. Dessutom finns standardfiler för

mellanservrar34

, stubbar35

och C header-filer som genereras vid

kompilering av ovan nämnda IDL-fil, även att tillgå på OPC

Foundations hemsida.

Användning av IOPCItemIO gränssnittet understöds först i version 3.0

av OPC DA.

Om asynkron data önskas, måste implementering av en OPC DA

grupp göras för att en prenumeration av data ska initieras. Detta är det

normala sättet för en OPC DA klient att efterfråga data i en server och

har understötts i tidigare versioner.

3.2.3 Beskrivning av OPC HDA: History Data Access

OPC HDA specificerar hur data kan utväxlas mellan en HDA-klient

och HDA-server och den baserar sig på COM. Klienten är (som i de

flesta klient/server-konfigureringar) den begärande parten och servern

den tjänande parten. En HDA-klient begär normalt data inom en viss

tidsperiod, d.v.s. historisk data kan efterfrågas.

På samma sätt som fallet gäller för OPC DA, specificerar OPC HDA

endast COM gränssnitt. Någon implementation av klient eller server-

objekt (inkl. grupper och poster), specificeras inte. Genom använ-

dandet av COM, erhåller man i OPC HDA en klient-server arkitektur,

där en HDA-server via ett gränssnitt levererar ett antal objekt och dess

metoder för en HDA-klient.

Likheterna med OPC DA är fler. OPC HDA specificerar två typer av

gränssnitt: HDA custom och HDA Automation. En HDA-server måste

alltid understödja custom-gränssnittet medan understöd av

Automation-gränssnittet är valfritt. Ett OPC Automation-hölje36

i

servern kan hantera den utökade funktionalitet som krävs för dess

funktion. OPC Foundation tillhandahåller ett sådant hölje.

En C++-applikation kan använda sig av ett HDA custom gränssnitt

medan en Visual Basic applikation måste använda ett Automation-

gränssnitt. HDA-servern kan vara av typ ”In Process”, lokal exe-fil

eller på distans d.v.s. finnas på annan maskin än klient-

applikationerna.

34

proxies 35

stubs 36

wrapper

Page 28: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

22

3.2.4 Beskrivning av OPC AE: Alarm and Event

OPC AE specificerar hur en klient kan tillhandahålla larm och andra

händelser från en server och baserar sig på COM. Specifikationen

kompletterar, men är samtidigt separat från OPC DA specifikationen.

Standarden specificerar i detalj de gränssnitt som kan användas vid

implementation av OPC-DA klienter resp. OPC-DA servrar och hur

dessa ska tillämpas. Standarden beskrivs inte ytterligare i denna

rapport.

3.2.5 Beskrivning av OPC XMLDA: XML Data Access

Den standard som här beskrivs avser 1.0.

I motsats till övriga standarder som föregick UA, baseras inte

XMLDA på COM. Istället beskriver den hur data kan utväxlas genom

användning av XML och SOAP. Förutom skillnader i underliggande

teknisk plattform, kan XMLDA ses som en utvidgning av DA 3.0

specifikationen. Den bygger på SOAP 1.1 och är utformad så att den

tillåter strukturerad information att överföras i ett SOAP-meddelande.

XML-DA servrar kan skapas som en självständig enhet, alternativt

konstrueras för att fungera som ett lager utanpå en COM-baserad 2.0

eller 3.0 DA server. Standarden har inte någon mekanism som

lokaliserar noder med OPC XML-DA servrar.

På samma sätt som OPC DA specificerar en mekanism som möjliggör

att en klient kan prenumerera på data från en server, definierar även

OPC XML-DA en sådan mekanism. För den senare består

prenumerationen av att klienten initierar en sådan, varefter den

periodiskt frågar servern om nya data. I grundutförande definierar

XML-DA följande tjänster för att hantera en dataprenumeration:

”Subscribe”, ”SubscriptionPolledRefresh” och ”SubscriptionCancel”.

Klientapplikationen initierar en prenumeration på data hos servern,

varvid servern returnerar en prenumerationsreferens37

till svar. Är

flaggan ”ReturnValuesOnReply” satt returneras dessutom samtidigt

efterfrågade värden (värde, kvalitet och tidstämpel). Därefter skickar

klienten periodiskt förfrågan om nya data genom anrop till

”SubscriptionPolledRefresh” genom den initialt tillhandahållna

prenumerationsreferensen. Servern ska då omedelbart svara genom att

returnera all data som insamlats sedan sista förfrågan. Detta fortgår

sedan fram till att klienten önskar upphöra prenumerationen, varvid

den skickar en ”SubscriptionCancel”.

Klientapplikationen måste kunna hantera felkoder från servern. Skulle

begäran om prenumeration returneras med en felkod som indikerar att

felet försvinner inom viss tid, begär lämpligtvis klienten återigen en

37

handle

Page 29: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

23

prenumeration (en eller flera gånger). Skulle å andra sidan felkoden

indikera en annan typ av fel, måste klientapplikationen hantera detta

på lämpligt sätt. Detta inkluderar även vid fall där upprättad prenu-

meration avbryts oplanerat.

För att möjliggöra för en OPC-DA server att optimera dess hantering

av en prenumerationsförfrågan från en klient, finns de två prenu-

merationsparametrarna ”Holdtime” och ”Waittime” att tillgå. Genom

att använda dessa, kan klienten delegera till servern att hantera väntan

mellan varje förfrågan av data.

OPC XML-DA definierar på samma sätt som för OPC DA att en tid-

stämpel och ett tillförlitlighetsvärde hör ihop med varje datavärde

(processvärde). På liknande sätt definierar OPC XML-DA att data kan

hämtas direkt från datakällan38

eller från en buffert39

. När klienten gör

ett första anrop med begäran om att påbörja en prenumeration, kan

klienten samtidigt ange vissa parametrar indikerande vissa önskemål

som exempelvis önskad samplingshastighet, huruvida buffring av data

önskas och önskad dödband. Det är sedan upp till servern att försöka

leva upp till önskemålen, utan att stabil driftkondition överskrids, t.ex.

med avseende på belastning.

Samplingshastighet anger önskad maximal tid mellan insamlade

värden d.v.s. hur ofta servern ska fråga datakällan efter ny data (för att

lagra dessa värden i buffert – se nedan). Servern har som ovan nämnts

möjlighet att buffra upp data. En fördel med detta är att om två eller

fler klienter efterfrågar samma data, behöver servern bara efterfråga

data från datakällan en gång. När data sedan skickas till de olika

klienterna, kan den hämtas från bufferten, utan att upprepade gånger

gå ut och läsa från datakällan. Detta förfarande kan, beroende på

serverimplementation tillsammans med hur datakällan är konstruerad,

minimera belastning på underliggande nätverk och noder.

Är buffring inte begärd, skickas enbart senaste värdet vid näst-

kommande anrop. Om buffring önskas, lagrar servern alla värden den

läser i datakällan sedan sista anrop av ”SubscriptionPolledRefresh”,

och skickar alla dessa värden vid nästkommande anrop.

Ett värde vars ändring inte överskrider gränsen för dödband, sparas

inte i bufferten och skickas således inte till klienten vid nästa anrop av

”SubscriptionPolledRefresh”.

Tidstämpeln indikerar tidpunkten när värdet erhölls från datakällan,

eller tidpunkten när servern uppdaterade eller validerade värdet och

tillförlitlighetsvärdet i bufferten.

OPC XML-DA specificerar ett antal standard returkoder (för att indi-

kera lyckad utgång eller fel). Dessa kvalificeras alltid med namn-

38

device 39

cache

Page 30: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

24

rymden ”http://opcfoundation.org/webservices/XMLDA1.0/1.0/”.

Utöver detta kan egna returkoder skapas, då med en egen namnrymd

(exempelvis ”http://bolag.com/etc”).

När en klientbegäran fallerar totalt (då exempelvis servern inte är

konfigurerad korrekt), måste servern returnera ett SOAP-fel, definierat

genom SOAP-specifikationen. Om det däremot är ett fel med ett efter-

frågat värde (men servern fungerar i övrigt och andra värden kan

skickas utan fel), definierar OPC XML-DA en mekanism som på-

minner om SOAP-fel.

XML-DA definierar bas-mallar (eng. ”schemas”) som återfinns i

andra mallar och som beskriver meddelanden som överförs. XML-DA

mallar baseras på hierarkisk struktur av information. I tillägg kan

information specificeras genom s.k. attribut.

Som första mall, beskriver XML-DA ”RequestList” (se figur 14 för

exempel). Denna inkluderar attribut som används vid läs, skriv och

prenumerationsförfrågan från klienten.

<s:complexType name="RequestList">

<s:attribute name="ItemPath" type="s:string" />

<s:attribute name="ReqType" type="s:QName" />

</s:ComplexType>

Figur 14: Exempel på ”RequestList”.

En annan mall som beskrivs är ”ItemValue”. Denna är en behållare

som transporterar datavärden (se figur 15 för exempel).

<s:complexType name="ItemValue">

<s:sequence>

<s:element minOccurs="0" maxOccurs="1"

name="DiagnosticInfo" type="s:string" />

<s:element minOccurs="0" maxOccurs="1" name="Value" />

<s:element minOccurs="0" maxOccurs="1" name="Quality"

type="s0:OPCQuality" />

</s:sequence>

<s:attribute name="ValueTypeQualifier" type="s:QName"

use="optional" />

<s:attribute name="ItemPath" type="s:string" />

<s:attribute name="ItemName" type="s:string" />

<s:attribute name="ItemPath" type="s:string" />

...

Figur 15: Exempel på ItemValue.

Page 31: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

25

3.2.6 Beskrivning av OPC Batch

OPC Batch specificerar hur data kan utväxlas mellan en Batch-klient

och batch-server och baseras på COM. En OPC Batch server måste

understödja alla gränssnitt givna i OPC DA 2.0 specifikationen, och

därtill måste ytterligare ett antal gränssnitt stödjas.

OPC Batch specificerar hur en klient kan tillhandahålla diverse

värden, intressanta för processindustrier som hanterar satsvis prod-

uktion. Datautväxling är avsedd att utväxlas med framför allt fyra

typer av information: utrustningskapacitet, pågående driftstatus, hist-

orisk data och receptdata.

Standarden specificerar i detalj de gränssnitt som kan användas vid

implementation av OPC Batch klienter resp. OPC Batch servrar och

hur dessa ska tillämpas. Standarden beskrivs inte ytterligare i detta

dokument.

3.2.7 Beskrivning av OPC Security

Varje OPC server (DA, AE, HDA, etc.) som implementerar OPC

Security måste implementera något av, eller båda gränssnitten

”IOPCSecurityNT” respektive ”IOPCSecurityPrivate”.

Implementering av dessa ger tillgång till såväl autentisering som

bemyndigande av klient att komma åt data på servern.

En klient ska dock inte förutsätta att dessa gränssnitt existerar, utan

måste snarare förutsätta motsatsen. Först när en klient erhåller en

pekare när något av gränssnitten efterfrågats (via QueryInterface) kan

klienten förutsätta att OPC Security är implementerat på servern.

Standarden specificerar i detalj gränssnitten IOPCSecurityNT

respektive IOPCSecurityPrivate när OPC Security ska implementeras

på servrar. Standarden beskrivs inte ytterligare i detta dokument.

3.2.8 Beskrivning av OPC DX: Data eXchange

Medan de flesta andra OPC standarder anger hur en klient ska få

tillgång till data från en server, specificerar OPC DX hur data kan ut-

växlas mellan två eller fler OPC DA servrar. En DX-server definieras

som en OPC DA server med viss ytterligare funktionalitet. Standarden

anger medel för överföring av data som inte är tidskritisk, från en

OPC DA eller OPC DX server till en OPC DX server. Vidare speci-

ficerar standarden i detalj de tillägg till OPC DA som används vid

implementation av OPC DX servrar och hur dessa ska tillämpas.

Standarden beskrivs inte ytterligare i detta dokument.

Page 32: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

26

3.2.9 Beskrivning av OPC CX: Complex Data

OPC CX specificerar hur data av mer komplex karaktär kan utväxlas

inom det existerande OPC DA ramverket. OPC DA specifikationen

fordrar att klienters och servrars dataposter40

, med vilka data utväxlas,

ska vara av enkla datatyper eller vektorer med enkla datatyper. Som

namnet antyder möjliggör OPC CX-standarden användning av mer

komplexa datatyper.

OPC CX specificerar i detalj de tillägg till OPC DA som används vid

implementation av OPC CX och hur dessa ska tillämpas. Standarden

beskrivs inte ytterligare i detta dokument.

3.2.10 Beskrivning av OPC Commands

OPC Commands är utvecklad för att skicka metodanrop till olika typer

av enheter inom processindustrin, som exempelvis en styrenhet, en

robot, ett fordon eller liknande. Standarden specificerar hur en klient

kan få reda på vilka metoder som en server tillhandahåller och hur

klienten därefter anropar dessa. Dessutom specificerar den hur

metoderna implementeras på servern.

Standarden beskrivs inte ytterligare i detta dokument.

40

items

Page 33: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

27

Beskrivning av OPC UA

Här beskrivs den senaste generationen av OPC-standard.

3.3.1 Generell beskrivning

Under 2005 offentliggjorde och släppte OPC Foundation en arkitektur

eller standard vid namn ”Unified Architecture”. Denna har alltefter-

som kompletterats.

De dokument som släppts är följande (2008.10.01):

OPC UA part 1 – Overview and Concepts RC 1.01.03 Specification

OPC UA Part 2 – Security Model RC 1.01.52 Specification

OPC UA Part 3 – Address Space Model RC1.01.13 Specification

OPC UA Part 4 – Services RC 1.01.30 Specification

OPC UA Part 5 – Information Model RC 1.01.13 Specification

OPC UA Part 6 – Mappings RC 1.00.08 Specification

OPC UA Part 7 – Profiles RC 1.00.00 Specification

OPC UA Part 8 – Data Access RC 1.01.10 Specification

OPC UA Part 9 – Alarms Draft v0.62

OPC UA Part 10 – Programs 1.00 Specification

OPC UA Part 11 – Historical Access 1.00 Specification

Avsikten med denna standard var att ersätta alla befintliga del-

standarder baserade på COM. OPC XML-DA ersätts då också.

Införandet av UA har inte bara skapat en ny plattform för att ersätta

befintliga applikationer (DA, HDA, ...), utan istället har hela struk-

turen som möjliggör systemintegrationer med ett större omfång av

data och dess typer, byggts om från grunden.

OPC UA är en plattformsoberoende standard som möjliggör utväxling

av data mellan olika system och enheter. Den är i grunden baserad på

vad som populärt betecknas för ”Web Services” – en samling olika

funktionaliteter som bygger på datautbyte via webbgränssnittet. Därtill

är ett mer binärt format definierat, vilket möjliggör en mer

resurseffektiv hantering – till priset av man frångår öppna och

standardiserade specifikationer.

I och med introduktionen av OPC UA frikopplas således OPC från sitt

beroende av en underliggande standard som i hög grad styrs av en

enskild leverantör. Den föregående generationen av OPC-standarder

var till stor del baserade på Microsofts COM/DCOM-standard.

Grundtanken med OPC är som nämnts att utväxla produktionsdata

mellan olika styrsystem inom processindustrin, men med UA fortsätter

utvecklingen mot en mer generell arkitektur som möjliggör utväxling

av data även uppåt från produktionssystem nära fabriksprocesserna till

system av mer överordnad och administrativ karaktär (figur 16).

Page 34: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

28

Figur 16: UA-servrar och klienter på olika nivåer på en fabrik [4].

3.3.2 Utförligare beskrivning

Grunden för utväxling av data när UA används är meddelanden. Detta

är en konsekvens av att UA i stora drag baseras på Web Services, i

vilket standarder som XML, WSDL och SOAP är grundpelare. Till

detta kommer WS-standarder, såsom WS-Policy och WS-Eventing.

Förutom att specificera hur olika meddelanden ska se ut, definierar

UA ett antal olika tjänster41

som en server kan tillhandahålla.

3.3.2.1 UA Server- och klientstruktur

En UA server tillhandahåller minst en tjänst, men kan innehålla flera. I

motsats till vad som gäller inom COM, måste en UA server vara i drift

innan en klient anropar serverns tjänster. Varje tjänst ansluts via en s.k.

ändpunkt (”Endpoint”), vilken utgörs av fysisk adress som klienten

anger. När sådan ändpunkt ansluts, måste såväl transportprotokoll som

serverns nodnamn och sökväg anges. Om det anslutande portnumret

frångår standard, måste naturligtvis även en sådan anges.

Följande portnummer har blivit tilldelade av IANA:

UA-TCP: 4840

UA-SSL: 4843

De tjänster som är specificerade enligt OPC UA finns definierade i

WSDL-dokument vilka finns tillgängliga i UA SDK (levereras av

OPC Foundation). Dessa är avsedda att användas av utvecklare av UA

klient- och server-programvara vilken kan ses som motsvarigheten till

IDL i COM-miljön.

Tjänsterna är grupperade i s.k. ”Service sets” i specifikationerna.

Dessa är i första hand avsedda att underlätta beskrivning i

41

Services, Service Sets

Page 35: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

29

specifikationerna och knappast av värde vid implementation av server-

programvara.

De service sets som är definierade i ”UA Specification Part 4” är:

Service Set Beskrivning

Discovery Tjänster som kan anropas för att få angivet

samtliga ändpunkter och dessas krav på

säkerhet på refererad server.

SecureChannel Tjänster som används för att öppna en

kommunikationskanal på godtaget sätt sett

ur säkerhetsperspektiv.

Session Tjänster för att etablera kopplingar på

applikationsnivå inom ramen för sessioner.

NodeManagement Tjänster för att administrera UA

objektnoder inom dess adressrymd

View Tjänster för att navigera bland UA

objektnoder inom adressrymd eller för att

navigera inom en vy

Query Åtkomst av UA objektsnoders data.

Attribute Åtkomst av UA objektsnoders attribut.

Method Funktionsanrop av UA objekt.

MonitoredItem Prenumeration av data och händelser.

Tjänsterna som kategoriseras i ”Discovery Service Set” kan placeras

såväl tillsammans med övriga tjänster i samma server som i en dedi-

kerad ”Discovery Server”-nod.

3.3.2.2 UA objektmodell

En grundläggande funktionalitet som eftersträvas med UA är att för-

medla data, huvudsakligen processdata. För att hantera detta används

en objektmodell (”OPC UA Object Model”) som består av noder vilka

återfinns i en adressrymd. Denna rymd är strukturerad som en

hierarki, där de högsta nivåerna är standardiserade att se likadana ut på

alla servrar.

Varje enhet i en fabrik kan representeras av en nod i adressrymden.

Detta avser inte minst mätande enheter (transmittrar), vilka samlar in

och skickar processdata vidare. Även noder för icke datainsamlade

enheter kan representeras, för att strukturera noderna i adressrymden

så att de i någon mån återspeglar verkligheten. Ett enkelt exempel på

hur verkligheten skulle kunna representeras i adressrymden ges i figur

17 nedan.

Page 36: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

30

Figur 17: Verkligheten representerad i UA:s objektmodell.

I specifikationerna för UA återfinns några grundbegrepp avseende

objektmodellen:

nod (eng. ”node”)

nodklass (eng. ”node Class”)

objekt (eng. ”object”)

objekttyp (eng. ”object Type”)

variabel (eng. ”variable”)

attribut (eng. ”attribute”)

egenskap (eng. ”property”)

referens (eng. ”reference”)

metod (eng. ”method”)

datatyp (eng. ”data Type”)

metoder (eng. ”methods”)

händelser (eng. ”events”)

En nod, som är en grundläggande entitet, kan vara ett objekt som

representerar en enhet i verkliga livet eller mjukvaruvärlden.

Alternativt kan en nod också skapas enbart för att representera ett

värde.

Noderna i adressrymden kan vara instansierade utgående från olika

nodklasser, beroende på dess olika representation. Som grund för alla

dessa klasser finns en ”Base NodeClass”. Utifrån denna är sedan ett

antal andra nodklasser definierade.

Någon av dessa nodklasser används sedan när noder instansieras.

Varje nod kan innehålla såväl attribut, egenskaper som referenser till

andra noder, där attribut är dataelement som beskriver noden –

identitet är exempelvis en sådan som återfinns i alla noder.

Egenskaper är server-definierade dataelement där nodversion är ett

exempel.

Page 37: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

31

En nod som symboliserar en fysisk enhet i riktiga världen består nor-

malt av flera noder av olika typer av noder i en hierarkis struktur. I

figur 18 ser vi ett exempel där processvärde och mätområde hörande

till flödestransmitter ”FT-019” är lagrade i två noder instansierade från

en ”Variable NodeClass”.

Figur 18: Värden lagras i separata noder.

Specifikationen sätter inga hinder att vid implementation av server,

spara värden som attribut istället för som i exemplet ovan i externa

noder.

Det finns även möjligheter att använda vyer. Med dessa kan valfria

delar av adressrymden presenteras för klienter. En vy kan konfigureras

så att vissa mellanliggande noder i den ordinarie strukturen inte syns.

En grundtanke med att använda vyer är att begränsa det omfång av

adressrymden som görs tillgängligt för klienter. Som utgångsläge kan

hela adressrymden ses som en stor vy.

När ett stort antal noder med tillhörande undernoder önskas definieras

för att motsvara motsvarande enheter i verkligheten, kan en form av

mallar eller typdefinitioner skapas. Dessa typdefinitioner används för

att skapa önskat antal kopior och namnge dessa lämpliga namn som

motsvarar verkligheten (ett exempel ges i figur 19). Det är i detta

sammanhang som nodklasser av objekttyp och datatyp kommer till

användning.

Figur 19: Typdefinitioner kan användas.

Page 38: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

32

Metoder definierar anropbara funktioner och anropar genom ”Call

Service”-tjänsten. De definieras i noder och en specifik nodklass

används när sådan metodnod ska instansieras.

Noder kan tillåta att klienter prenumererar på händelser beroende på

hur noderna är konfigurerade, exempelvis när ett värde som tillhör en

nod når en viss nivå. För händelseprenumeration används tjänsten

”Monitoring and Subscription”. En server som stödjer händelse-

hantering måste ha minst en nod som är definierad som händelse-

aviserare42

.

3.3.2.3 UA kommunikationsstack

UA definierar en egen kommunikationsstack (figur 20) i det app-

likationslager som återfinns i OSI:s och TCP/IP:s referensmodell.

Denna kommunikationsstack innehåller tre lager: meddelande-,

säkerhets- och kodningslager. Ovanpå denna kommunikationsstack

återfinns dessutom UA applikationslager. Detta kan även uttryckas

som att transportlagret i UA:s kommunikationsstack är inte densamma

som det i OSI:s och TCP/IP:s referensmodeller och dessutom är UA:s

applikationslager inte detsamma som applikationslagret i de senare

nämnda referensmodellerna. Det förstnämnda ingår däremot i det sist-

nämnda.

Figur 20: UA kommunikationsstack.

Lagret för meddelandekodning används för att omforma meddelanden,

sådant att dessa kan skickas via ett nätverk. Här sker enligt UA-stan-

darden, en meddelandekodning antingen enligt ett format kallat ”UA

XML” alternativt ”UA Binary”. XML-syntax används för att

strukturera data i båda fallen, men i det förra fallet kodas data genom

läsbara textsträngar medan data i det senare fallet kodas som binära

dataströmmar.

UA XML-kodning baseras på ett specifikt XML-Schema format ut-

givet av OPC Foundation. Detta XML-Schema återfinns på OPC

Foundations hemsidor.43

42

Event Notifier 43

http://www.opcfoundation.org/UAPart6/Types.xsd

Page 39: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

33

”UA Binary”-kodning är en binär version av WS-Secure och medger

säker kommunikation för UA där varken SOAP eller XML används.

Specifikationen för ”UA Binary”-kodning återfinns även den, enligt

”OPC UA Part 6 – Mappings RC 1.00.08 Specification” på OPC

Foundations webbsidor.44

UA Binary-kodning ger ett binärt meddelandeformat som är avsett att

kräva mindre utrymme och kapacitetskrav jämför med meddelanden i

UA XML-format. Detta till priset av att använda en specifikation som

inte är allmänt känd utan istället definierad av OPC Foundation.

I säkerhetslagret återfinns funktionaliteter som tillförsäkrar att

meddelanden kan utväxlas utan att förvanskas eller obehörigen

avlyssnas. Detta sker genom kryptering där två olika algoritmer kan

användas; ”WS Secure Conversation” eller ”UA Secure

Conversation”. Den förstnämnda är baserad på WS-Security, vilken är

en öppen standard som beskriver hur signaturer och kryptering

appliceras på SOAP-meddelanden. För närvarande används version

1.1. I denna ingår delstandarder WS-Trust, WS-Addressing, XML

Signature och ”XML Encryption. Den sistnämnda, ”UA Secure

Conversation”, är en binär version av ”WS Secure Conversation”.

Transportlaget i UA:s kommunikationsstack hanterar slutligen komm-

unikation mot underliggande strukturer – återigen normalt transport-

lagret i en OSI- eller TCP/IP-stack.

Det finns två olika strukturer att använda sig av i UA:s transportlager:

SOAP/HTTP

UA TCP

Det är svårt att uppskatta resursbehov (framför allt på nätverk) relativt

de två transportlagren, då det inte getts möjlighet att testa dylikt, och

material rörande test dessutom inte återfunnits i öppna media. Man

kan dock anta att ”UA TCP” genom sitt binära format inte är mer

resurskrävande än SOAP/HTTP, utan med stor säkerhet istället

mindre.

De ovan angivna alternativen i de olika UA-lagren kan sedan

kombineras ihop på följande tre olika sätt (se figur 21):

”XML Web Services”

”UA Native Binary”

”UA Native Binary” med SOAP

44

http://www.opcfoundation.org/UAPart6/2008/02/Types.bsd.xml

Page 40: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

34

Figur 21: UA kommunikationsstack [1] .

Det fösta alternativet, ”XML Web Services” använder

SOAP/HTTP/HTTPS tillsammans med ”WS Security” för att kommu-

nicera UA-meddelanden. Som figuren visar, kan såväl ”UA XML”-

kodning som ”UA Binary”-kodning användas för ”XML Web

Services”. Skulle istället SOAP/HTTP/HTTPS användas tillsammans

med ”UA Security” och ”UA Binary”, kategoriseras detta som ”UA

Native Binary” med SOAP. Ersätter man slutligen

SOAP/HTTP/HTTPS med ”UA TCP” istället, når man ”UA Native

Binary”.

Dessa tre olika alternativ ingår i olika s.k. profiler, där en profil speci-

ficerar de krav som en tjänst uppfyller. I en profil ingår då bland annat

vilken variant av UA-stack som används.

3.3.2.4 UA Meddelandestruktur

Grunden i kommunikation mellan en UA-klient och en UA-server är

utväxling av meddelanden. Klienten skickar en förfrågan på vilken

servern skickar ett svar. Servern är uppbyggd av ett antal tjänster där

typ av förfrågan avgör vilken tjänst som svarar.

För att tillförsäkra en hög tillförlitlighet av kommunikation, ingår

vissa specifika funktionaliteter. När en kommunikation mellan en

klient och en server ska uppnås, måste först en ”secure channel” upp-

rättas mellan de två enheternas UA-stackar (kommunikationslager i

figur 22 nedan). Därefter upprättas en session på applikationsnivå.

Page 41: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

35

Figur 22: Sessioner och ”secure channels”.

Först efter det att en session är upprättad, kan en klient anropa en

tjänst på servern. En session är fortfarande öppen såtillvida att den kan

återuppkopplas om den ”secure channel”-koppling som sessionen

använder, fallerar. Innan sessionen återuppkopplas, måste naturligtvis

en ”secure channel” först återskapas. Skulle det sistnämnda inte

inträffa inom sessionens definierade livslängd, faller även sessionen.

Det finns några få tjänster som ingår i ”Discovery Service Set” som

inte kräver att en underliggande ”secure channel” finns upprättad

innan anrop från klient görs. En av dessa är ”FindServers”-tjänsten.

Ett upprättande av en kommunikation mellan en UA-klient och en

UA-server kan typiskt se ut enligt följande:

en klient anropar ”FindServers”-tjänsten på en känd

”Discovery Server”. Till svar får klienten en

”ServerDescription” som anger ändpunkter till lämpliga

servrar.

klienten anropar ”GetEndpoints”-tjänsten på den server med

vilken klienten önskar kontakt. Till svar får klienten en

”EndpointDescription” som anger ändpunkter till tillgängliga

tjänster på servern. Dessutom erhåller klienten all annan konfi-

guration som är nödvändig för att upprätta kontakt med önskad

tjänst på servern.

klienten anropar ”OpenSecureChannel”-tjänsten för att skapa

en säker kommunikationskanal. Detta anrop sker enbart på

UA-stacknivå, d.v.s. ingen tjänst på UA-applikationsnivå är

inblandad.

klienten anropar därefter ”CreateSession”- och

”ActivateSession”-tjänsterna (användande den säkra kanalen).

om klienten är ett interaktivt MMI kan ”Browse”-tjänsten an-

ropas för att kunna presentera vilken data som finns tillgänglig

för presentation.

klienten anropar ”CreateSubscription”-tjänsten för att initiera

en prenumeration på utvald data medförande att klienten konti-

nuerligt erhåller uppdaterad data.

Det finns ett antal tjänster för att avsluta prenumeration, session

respektive kanal.

Page 42: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

36

3.3.2.5 UA Säkerhetsstruktur

Stor vikt har lagts avseende säkerhet i UA specifikationen. För alla

UA applikationer krävs ett ”application instance” certifikat utfärdat av

en ”Certificate Authority” (CA). Varje organisation som utvecklar en

UA klient eller en UA Server måste alltså ordna att ett sådant certifikat

som tilldelas applikationen. Dessa certifikat utväxlas sedan mellan

klient och server för validering av implementation.

Autentisering av användare och användarrättigheter hanteras på appli-

kationslagernivå. För det förstnämnda kan antingen användarnamn

med tillhörande nyckel användas, alternativt kan digitalt certifikat som

intygar användarens identitet. I det sistnämnda fallet används X.509-

standarden. Oavsett val av implementation, måste användarens iden-

titet skickas till servern.

På kommunikationslagernivån (UA stack) hanteras konfidentialitet

(data endast tillgänglig för avsedd mottagare), integritet (data är inte

manipulerat) och applikationsidentitet. Detta uppnås genom kryp-

tering och signering av alla meddelanden som skickas.

För UA/”Web Services” används ”WS Security Conversation” med

underliggande WS-Security, som beskriver hur signaturer och kryp-

tering appliceras på SOAP-meddelanden. För närvarande används

version 1.1. I denna ingår delstandarder WS-Trust, WS-Addressing,

XML Signature och XML Encryption 1.0.

För UA/Binary används ”UA Security Conversation”, som har en

underliggande struktur som motsvarar till WS Security. Istället för att

krypteringen appliceras på SOAP-meddelanden, appliceras kryp-

teringen på meddelanden i binärform med hjälp av SSL/TLS.

3.3.2.6 Integrering av DCOM-OPC till UA-OPC

För att möjliggöra användning av UA klienter mot en stor bas av redan

installerade OPC DA COM Servrar, kan höljen användas. Figur 23

åskådliggör detta.

Figur 23: Användning av hölje mellan UA-klient och DA Server.

Höljen kommer att på motsvarande sätt kunna användas när DCOM-

baserade klienter ska användas mot UA servrar (figur 24).

Page 43: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

37

Figur 24: Användning av höljen mellan DA-klient och UA Server.

OPC Foundation har ett antal höljen tillgängliga för utvecklare att utgå

ifrån, när de vill implementera funktionen.

Page 44: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

38

4 Analys och resultat

I detta kapitel analyseras de olika OPC-standarderna. En jämförelse

görs mellan de äldre och den senaste standarden (OPC UA).

4.1 Jämförelse mellan OPC-DCOM och OPC UA

Då OPC-UA:s kommunikationsstack kan baseras på flera olika

kommunikationsstrategier, måste hänsyn tas till dessa valmöjligheter

när en jämförelse görs mellan den nyare OPC-UA och den äldre OPC-

standarden baserad på DCOM.

Nedan följer en jämförelse mellan de olika alternativen av UA och

OPC-DCOM ur olika perspektiv.

4.1.1 Applicerbarhet

När man jämför UA med DCOM-baserad OPC, framträder några

signifikanta skillnader, sett ur ett perspektiv där användbarhet eller

applicerbarhet bedöms.

Först och främst är DCOM i praktiken begränsat till noder med ett

Windows-operativ. Även om DCOM-lösningar finns för Unix/Linux,

verkar dessa vara implementerade i ytterst begränsad omfattning.

En annan begränsning för DCOM är dess användning av portar. Ett

antal fasta och dynamiska portar behövs för att DCOM ska fungera

som avsett. Detta kan skapa problem om kommunikationen ska ske

genom brandväggar, orsakerna är två:

de fasta portarna återfinns bland portnummer 135–139, vilka

är ökända och används ofta av icke behörig programvara. Inte

minst används port 135 för att lokalisera alla på noden

befintliga COM-servrar. Olika säkerhetsbrister (kända eller

okända) i dessa kan då användas för att obehörigen få tillgång

till noden.

dynamisk tilldelning av portnummer innebär att ett stort antal

portar måste öppnas i en brandvägg.

Båda ovanstående punkterna ses av de flesta nätverksadministratörer

som en källa till säkerhetsproblem. Olika lösningar existerar, exempel-

vis att använda på marknaden befintliga programvaror som medger

någon form av så kallad tunnling. Nackdelen av att använda sådan

tunnling är tillkommande licenskostnader, i tillägg till installation av

ytterligare programvara. Olika meningar råder huruvida det

sistnämnda också innebär utökat administrativt arbete.

Page 45: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

39

Svagheten med nödvändiga portar undviks om UA används istället.

Väljs UA/”Web Services”, som baseras på SOAP/HTTP, används den

normala porten för webbkommunikation, port 80 (ytterligare filtrering

av meddelanden genom denna port kan ske genom isolering av

MIME-typer). Väljs istället UA/”Binary”, kan en godtycklig fast port

väljas, port 4840 är dock tilldelad för UA-TCP och port 4843 för UA-

SSL av IANA.

Om UA/”Web Services” används, kan val av Webbserver medföra

vissa konsekvenser. Antingen används en på marknaden befintlig

standardprodukt, eller tvingas man utveckla en egen. Det förra valet

har vissa nackdelar – bl.a. onödig överbyggnad i form av funk-

tionalitet (inkl. administrationsverktyg). Inte minst kan det finnas en

motvilja mot att installera sådana standardprodukter i processnära och

kritiska tillämpningar. Mot detta står att utveckla en egen webbserver,

vilket är ett jobb vars omfattning inte ska negligeras.

4.1.2 Prestanda

Då UA/”Web Services” baseras på SOAP/HTTP, kan dataöverföring i

flera avseenden anses mer resurskrävande i jämförelse med

COM/DCOM. En orsak till detta är säkerligen förhållandet att

SOAP/HTTP är baserat på ett textformat, medan COM/DCOM är

baserat på ett binärformat. Ett flertal studier har påvisat denna skillnad

i prestanda [6][10][11]. Dock påpekar Cook och Barfield i en studie

de genomförde att webb-baserad teknologi kan vara minst lika effektiv

som traditionella objektbaserade standarder om överföring av data

utgår från data i dokumentformat istället för i objektformat [5]. Även

om de i undersökningen använde CORBA för utvärdering, kan

troligen COM/DCOM anses jämförbar med CORBA i detta

sammanhang. Detta då de båda i grunden är baserade på en likartad

objektmodell.

Å andra sidan är tillämpningen av ”Web Services” i OPC mer objekt-

än dokumentbaserad, innebärande att nackdelarna avseende prestanda

för ”Web Services” i hög grad gäller. En undersökning visade att

XML-baserad OPC-kommunikation var tre till sex gånger

långsammare än DCOM-baserad motsvarighet [7]. Även om UA inte

testades i detta fall, kan användandet av webbformat som

kommunikationsplattform i undersökningen indikera en skillnad i

prestanda vid OPC-tillämpningar.

Användning av UA/Binary kan med stor säkerhet anses mindre resurs-

krävande än UA/”Web Services”, men hur resurskrävande den förra är

i förhållande till OPC/DCOM är oklart.

Page 46: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

40

4.1.3 Standarder

Microsofts COM/DCOM stöds numera inte till fullo. Det är egentligen

bara vid utveckling av inbäddade tillämpningar och tillämpningar

inom mobiltelefonsegmentet som COM/DCOM fortfarande finns till-

handa i form av utvecklingsmiljöer. Inom alla andra tillämpningar

stöds standarden såtillvida att tidigare utvecklade applikationer kan

exekveras i Windows-miljö. Även om viss nyutveckling kan ske i

Microsofts senaste utvecklingsmiljö, kan Microsofts minskade

understöd av standarden märkas bland annat genom minskad

dokumentation av COM/DCOM på dess webbsidor. Leverantörer av

olika OPC-produkter baserade på DCOM, vilka under årens lopp har

byggt upp nödvändiga kunskaper och verktyg, kommer troligen att

även under överskådlig tid leverera nya produkter baserade på COM-

plattformen. Detta parallellt med att leverantörerna börjar utveckla

produkter baserade på UA.

När specifikationerna för UA tagits fram, har ett av kriterierna varit att

använda befintliga öppna standarder i möjligaste mån. Detta gäller

framför allt för UA/”Web Services” men även till stor del UA/Binary.

Med detta har man kommit från den låsning till Microsoft-standard

som man de facto befann sig i genom COM/DCOM.

4.1.4 Säkerhet

Begreppet säkerhet innefattar flera olika delar, vart och ett med sin

egen innebörd; autentisering, behörighet, konfidentialitet, integritet.

Säkerhetshanteringen i DCOM baseras i mångt och mycket på funk-

tionalitet i Windows operativsystem. Även om hanteringen av många

anses vara roten till många problem, inte minst vid installationer, kan

den anses för ändamålet fungera tillfylles. Dess stora nackdel är

snarare just behovet av en Windows-miljö, vilket försvårar integration

mot system som inte har Windows-operativ.

Genom implementering av ett flertal öppna standarder som hanterar

olika aspekter av säkerhet, har man försökt att nå en betryggande

säkerhetsnivå inom UA. Detta inbegriper såväl användning av certi-

fikat för autentisering, som kryptering för konfidentialitet och inte-

gritet. Med detta har man kommit från beroendet av Windows. Genom

olika tillämpning av dessa säkerhetsstandarder, kan en för systemet

lämplig säkerhetsnivå nås.

UA-specifikationen har ett avsnitt om ”Cyber Security Management

System” (CSMS), som avser ett dokument som varje systemägare är

ansvarig för och som specificerar olika säkerhetsaspekter för

systemet.45

Detta inbegriper säkerhetspolicy, procedurer och ansvars-

45

OPC UA Part 2, avsnitt 4.4

Page 47: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

41

förhållanden. Säkerhetsnivån i UA borde sedan överensstämma med

den nivå som eftersträvas i CSMS. Det är meningen att det ska vara

upp till varje systemansvarig att definiera rätt säkerhetsnivå när UA

implementeras.

Det går således inte att påstå att UA är säkrare än DCOM eller vice

versa. Det är – som ofta är fallet – inte tekniken utan tillämpningen

som avgör om säkerheten är acceptabel, d.v.s. god. Den stora skill-

naden är att säkerhetsarkitekturen i UA medger upprätthållen säkerhet

mellan system med olika operativsystem.

4.1.5 Tillförlitlighet

OPC-applikationer utvecklade i DCOM är vid det här laget in-

stallerade i många tusental, världen över. Dessa installationer har, ofta

i produktionskritiska tillämpningar, ombesörjt datakommunikation

utan större problem, vilket indikerar en stabilitet som UA-standarden

fortfarande har att bevisa.

OPC Foundation har, förutom att publicera specifikationer för UA,

dessutom gett ut standardiserade procedurer och krav med avsikt att

leverantörer ska kunna certifiera sina produkter. Detta talar för att UA-

produkter borde kunna nå lika hög tillförlitlighet som DCOM-

baserade produkter. Med tanke på det fåtal lösningar av UA som hit-

intills installerats, går det inte att ännu uttala sig om något utfall. Det

kommer troligen att ta flera år innan sådan bas finns så att någon

slutsats kan dras.

Oavsett om en produkt uppfyller alla krav, återstår det också att se om

UA kan uppfylla alla krav i olika produktionsmiljöer. Inte minst blir

det intressant att se om den webb-baserade varianten innebär några

lastproblem om – eller kanske snarare när – den ersätter befintliga

DCOM-installationer.

4.1.6 Tillgänglighet

En faktor som påverkar en standards genomslagskraft, är tillgång till

olika slag av utvecklingsverktyg och SDK-er46

.

När det gäller DCOM, har i princip alla OPC-applikationer utvecklats

i Microsofts Visual Basic och Visual C++. Till detta har funnits ett

flertal tilläggspaket från tredjepartsleverantörer. Med introduktionen

av Microsofts Dotnet-miljö, har ett antal höljen47

utvecklats i Visual

C++, vilka möjliggör utveckling av OPC-applikationer även med

Microsofts språk C#.

46

Software Development Kit 47

wrappers

Page 48: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

42

Med införandet av UA öppnas fler möjligheter att välja

utvecklingsmiljö, detta kommer till uttryck bland annat i OPC

Foundations avsikt att släppa följande UA SDK-er:

ANSI C

Dotnet 3.0

Java EE 5.0

En annan faktor, måhända av lägre vikt, som påverkar tillgängligheten

är den komplexitet med vilken underliggande struktur påverkar

programkodning. Även om UA och alla dess byggstenar kan vara allt

annat än enkelt att sammanfoga till en enhet, är det många som hävdar

att COM/DCOM och dess uppbyggnad i sig medför en komplexitet

som överstiger UA. Har man som programleverantör lyckats utveckla

en stor mängd av DCOM-lösningar, borde förutsättningarna för att

utveckla UA-lösningar inte vara sämre.

En ytterligare faktor, som inbegriper tillgänglighet, är hur uppgrad-

eringar av applikationer kan – och måste – genomföras. Jämför man

UA:s användning av WSDL med DCOM:s användning av Windows-

registret, måste DCOM anses komma till korta. Det är alltså mindre

komplicerat att uppgradera en UA applikation. Inte minst medför

kravet på ändringar i Windows-registret tillgång till administratörs-

rättigheter, såväl på server som på klient (sedan länge ett administra-

tivt problem inom många organisationer).

4.2 Generell utvärdering

De flesta OPC-delstandarder fram till idag har varit baserade på

COM/DCOM arkitektur. Även om COM fortfarande understöds på

alla Windows-system – inte minst med tanke på det ofantliga antal

applikationer som är i bruk – är det en teknik på utgående. Microsoft

är drivande i denna fråga. Som tidigare nämnts går COM-standarden48

inte sedan länge att återfinnas på Microsofts hemsidor. På Windows

”portal” för COM [8], kan man läsa att COM fortsättningsvis kommer

att stödjas som en del av Windows. På samma sida rekommenderas

samtidigt att inte påbörja nyutveckling av COM-baserade

applikationer, istället förordas implementering av s.k. ”Managed

Code” inom .NET-miljön.

Trots Microsofts rekommendation kan man fortfarande utveckla

COM-baserade applikationer genom att konstruera ”Unmanaged

Code”, företrädesvis i C++. Med tanke på den utveckling som pågår,

bör detta rekommenderas endast vid vidareutveckling av befintliga

lösningar.

När de ursprungliga (COM-baserade) OPC-standarderna togs fram var

48

”The Component Object Model Specification”, version 0.9

Page 49: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

43

ovanstående perspektiv inte förutsebart. Snarare sågs OPC som en i

det närmaste nödvändig tillämpning för datakommunikation inom

tillverknings- och processindustrin.

UA-standarden har således framtagits för att undvika liknande

problem i framtiden. OPC UA kan ses som helt ny ansats då

medlemmarna i OPC Foundation har strävat efter att använda

funktionalitet given i öppna standarder, på tillfredsställande teknisk

och funktionsmässigt nivå. Med detta har man förhoppningsvis fått en

acceptans för standarden inom branschen, hos såväl absoluta flertalet

av systemleverantörer som hos alla slutanvändare, d.v.s. systemägare.

En uppställning av UA:s för- och nackdelar gentemot DCOM-baserad

OPC, kan se ut enligt följande:

Fördelar med UA

Generellt samtycke av industrin genom användning av öppna

standarder.

Operativoberoende.

Tillgänglighet: utveckling av applikationer.

Ingen användning av Windows-registret.

Lägre komplexitet än DCOM.

Förekomst av brandvägg innebär inte ett större hinder

Ett flertal alternativ erbjuds avseende val av delstandarder.

Nackdelar med UA

Flertalet alternativ avseende val av delstandarder.

Stabilitet återstår att visas.

Tillgång till Webb Server (om SOAP/HTTP implementeras).

Fördelar med COM

Fördelarna med COM/DCOM kan kanaliseras till några få egenskaper.

Låga resurskrav genom binärt format.

Inbyggd autenticitets- och rättighetskontroll genom Windows.

Demonstrerad stabilitet genom stort antal installationer genom

åren.

Nackdelar med COM

Arkitekturen som definierar COM är ganska omfattande i syfte att

täcka olika krav, men trots det finns dock ett flertal nackdelar med

denna. Don Box anger t.ex. åtta begränsningar hos COM [3]:

Ingen enhetlig standard för att definiera typer.

Såväl IDL som typbibliotek kan användas för att beskriva

typer. Dessa båda kan delvis ersätta varandra.

Brist på specifikation vilken DLL (och version) som måste

installeras för att komponent ska fungera korrekt. En

komponent som har fungerat mot en tidigare version av en

DLL, kan sluta fungera när en senare version av DLL:en in-

stallerats. Även om gränssnitten är oförändrat, kan ändrad

Page 50: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

44

implementation bakom, orsaka oförutsedda resultat49

Ingen specifikation tillgänglig angående vilka privata typer

som används internt inom komponenten.

Ingen klar definition av termen ”komponent”. Den kan tolkas

såväl som ett objekt, en klass eller som en DLL som innehåller

en eller flera klasser. Då denna punkt kanske mer är av

språklig art, visar den ändå på en brist i standarden. Detta inte

minst då termen ingår i standardens förkortning – COM.

Det är möjligt att definiera privata gränssnitt (”interfaces”) i

C++ även om de inte är definierade i IDL eller något COM

typbibliotek. Denna möjlighet för en utvecklare att skapa

odokumenterade gränssnitt kan medföra problem. Inte minst

faller möjligheten att systemet kan skapa ”marshaller” när

kontextbyte ska ske (exempelvis när en klient i en process ska

kommunicera med en server i en annan process).

Typsystemet har två rötter: ”IUnknown” och ”VARIANT” –

det förra utgör rottypen för objektreferenser, det senare

rottypen för värden. Behovet av två olika typsystem visar på

en viss inkonsekvens i standarden som medför ökad

komplexitet.50

.

Endast singel-arv tillåts. Detta är ett medvetet val för att

behålla öppenheten för flera typer av kompilatorer att skapa

COM-komponenter. Detta medför dock en begränsning i sättet

att använda OOP51

.

Ytterligare nackdelar som kan anses väsentliga:

Dess beroende av Windows

En klient, som inte längre behöver data från en komponent, är

ansvarig för att uppbundet minne frigörs. Detta leder till att

slarvigt utformade applikationer kan orsaka svårupptäckta

minnesläckor.

Att öppenhet för val av delstandarder medtagits som såväl fördel och

nackdel baseras på att UA-standarden ger utrymme för anpassning till

rådande situation vid installation. Fördelen är alltså att oavsett vilken

IT-miljö som föreligger, kan UA appliceras. Nackdelen kan sägas vara

att alternativen indikerar en brist i den grundläggande strukturen – UA

kan ses som ett lapptäcke och inte en enhetlig standard.

En frågeställning som dyker upp är om inte CORBA hade kunnat

ersätta DCOM och användas istället för de standarder som nu valts.

Svaret på detta är att i princip har då de nackdelar som följer med

DCOM, också erhållits med CORBA. Detta då de båda i grunden är

baserade på en objektmodell som i grunden är likartad.

49

”DLL Hell” 50

Som jämförelse kan nämnas att samtliga typer i .Net utgår från en typ -

”System.Object” 51

OOP: Objektorienterad programmering

Page 51: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

45

4.3 Utveckling och framtid för OPC

Den befintliga basen av OPC-DCOM installationer som återfinns före-

trädelsevis på en processnära nivå, kommer att kvarstå ett antal år

framåt. Även efter det att UA konstaterats hålla vad som utlovas, leder

inte det till att befintliga DCOM-installationer kommer att ersättas

bara för sakens skull. Istället måste ett tekniskt eller ekonomiskt

incitament uppstå för att så ska ske.

Ett stort antal applikationsleverantörer kommer med tiden att får fram

nya produkter som stödjer UA. Troligen kommer ett flertal av dessa

produkter att medge att såväl UA/”Web Services” som UA/Binary kan

väljas vid installation. Dessa kommer sedan att användas framförallt

vid nyinstallationer, där det inte redan finns en befintlig (DCOM-

baserad) OPC-lösning. Grundkravet för detta är att UA-applikationer

då finns att tillgå på marknaden för såväl mottagande (klient) som

sändande (server) sida. Under en övergångsperiod kommer DCOM-

baserade applikationer att samexistera med UA-applikationer med

hjälp av s.k. höljen52

.

När det gäller processnära installationer är det författarens antagande

att ”UA/Binary” kommer att väljas före UA/”Web Services”.

Anledningen är behovet av resurssnåla dataöverföringar över ofta

driftkritiska nätverk.

När vi istället börjar förflytta oss uppåt i systemarkitekturen, handlar

det om att förbinda de processnära systemen med system av mer

administrativ art på olika nivåer, benämnda MES (”Manufactoring

Execution System”), PDM (”Product Data Management”), ERP

(”Enterprise Resource Planning”) och annat. Information som utväxlas

på denna nivå är normalt inte av realtidskaraktär, d.v.s. det är inte

tidskritiskt att få data. Till skillnad från de tidigare DCOM-baserade

OPC-standarderna, har introduktionen av UA medfört tillgång av ett

större urval av underliggande tekniker för detta. Här kan UA/”Web

Services” ha en möjlighet att få ett genomslag.

OPC kommer genom framtagandet av UA att ges en stor möjlighet att

behålla sin dominerande ställning på processnära nivå och också att

slå sig in och bli en betydande faktor för interkommunikation på

affärsnivå. Inte minst borde stödet från tunga aktörer på marknaden av

UA borga för detta. Det kvarstår att se hur kunderna, systemägarna, tar

emot den.

Skulle UA-standarden inte uppnå sådan acceptans och dess genomslag

således utebli, står vi inför en utveckling där få alternativ existerar.

Det första är att DCOM-lösningarna kvarstår under överskådlig tid.

Med tanke på den ofantligt stora mängd gjorda installationer av

DCOM-lösningar (som inte har med OPC att göra), kommer den med

52

wrappers

Page 52: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

46

säkerhet att stödjas i Windows-miljön under överskådlig tid. Vad som

är av större vikt, är ett ökat behov att understödja OPC på andra

miljöer än Windows. Om sådant stöd inte utvecklas, kommer det

uppenbara alternativet vara att ett antal egna standarder utvecklas av

olika leverantörer. Detta skulle innebära en utveckling som frångår

alla parters önskemål och behov av en öppen standard.

Page 53: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

47

Förkortningar

AE Alarm and Event (OPC delstandard)

ATL Active Template Library (programbibliotek utgivet av

Microsoft, bestående av C++-klasser)

CATID Category ID (COM-begrepp)

CLSID Class ID (COM-begrepp)

COM Component Object Model

CORBA Common Object Request Broker Architecture

CX Complex Data (OPC delstandard)

DA Data Access (OPC delstandard)

DCE Distributed Computing Environment

DCOM Distributed COM

DCS Distributed Control System

DLL Dynamic Linking Library (filtyp)

DNA Distributed interNet Applications Architecture (begrepp

skapat av Microsoft, numera ovanligt)

DX Data Exchange (OPC delstandard)

EXE Executable (filtyp)

HDA History Data Access (OPC delstandard)

HTTP Hypertext Transfer Protocol

IDL Interface Definition Language

IETF Internet Engineering Task Force

IID Interface ID

MAC Media Access Control

MFC Microsoft Foundation Classes (programbibliotek utgivet av

Microsoft, bestående av C++-klasser)

MIDL Microsoft Interface Definition Language

MTS Microsoft Transaction Server

OLE Object Linking and Embedding

OOP Object Oriented Programming

OPC OLE for Process Control

ORPC Object RPC

OSF Open Software Foundation

ProgID Program ID (COM-begrepp)

RPC Remote Procedure Call

SOAP Simple Object Access Protocol

SDK Software Development Kit

UA Unified Architecture (OPC standard)

UUID Universally Unique Identifiers

W3C World Wide Web Consortium

XML Extensible Markup Language

Page 54: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

48

Källförteckning

[1] Armstrong. 2007. Implementing UA – The Stack and Wire

Protocol, DevCon 2007 OPC Unified Architecture. http://www.opcfoundation.org/DownloadFile.aspx?CM=3&RI=459&CN=K

EY&CI=288&CU=42, senast besökt 2008-10-15.

[2] Box. 1998. Essential COM, Addison Wesley, ISBN 0-201-63446-5

[3] Box. december 2000. Is COM Dead?. MSDN Magazine,

http://msdn.microsoft.com/msdnmag/issues/1200/com/toc.asp?frame=

true, senast besökt 2008-10-15.

[4] Burke. 2007. Introduction to Unified Architecture – The Next

Generation of System Interoperability, DevCon 2007 OPC Unified

Architecture. http://www.opcfoundation.org/DownloadFile.aspx?CM=3&RI=425&CN=K

EY&CI=288&CU=42, senast besökt 2008-10-31.

[5] Cook, Barfield. 2006. Web Services versus Distributed Objects: A

Case Study of Performance and Interface Design. http://

www.cs.utexas.edu/~wcook/Drafts/2006/WSvsDO.pdf, senast besökt

2008-10-15.

[6] Davis, Zhang. 2002. A comparative Study of DCOM and SOAP,

Proceedings of the IEEE Fourth International Symposium on

Multimedia Software Engineering. årgång 2002

[7] Lange, Softing AG. 2006. Quo Vadis OPC? From Data Access to

Unified Architecture

http://www.softing.com/home/en/pdf/ia/professional-

article/opc/2006/0604_Quo_Vadis_OPC.pdf, senast besökt 2008-10-15.

[8] Microsoft. Microsoft COM: Component Object Model Technolo-

gies. http://www.microsoft.com/Com/default.mspx. Senast besökt

2008-10-15

[9] Microsoft. MSDN Library - DLLs.

http://msdn.microsoft.com/library/default.asp?url=/library/en-

us/vccore/html/_core_dll_topics.asp. Senast besökt 2008-10-15

[10] Microsoft. Performance of ASP.NET Web Services, Enterprise

Services, and .NET Remoting.

http://msdn.microsoft.com/en-us/library/ms996381.aspx, senast besökt

2008-10-31.

Page 55: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

49

[11] Nordström, Noreklint. 2002. Nya möjligheter med .NET – en

utredning av skillnaderna mellan DCOM och webbtjänsttekniken.

Examensarbete C-nivå.

http://www.cs.kau.se/cs/education/courses/dvgc09/Exjobb_2002/C200

2-11.pdf, senast besökt 2008-10-15.

[12] OMG. Catalog of OMG IDL / Language Mappings Specifica-

tions.

http://www.omg.org/technology/documents/idl2x_spec_catalog.htm,

Senast besökt 2008-10-15

[13] Rydberg. 2004. Utvärdering av kommunikationsprotokollen

SOAP, DCOM, CORBA samt HTML/PHP med avseende på

Interliving-projektet. Examensarbete

http://www.nada.kth.se/utbildning/grukth/exjobb/rapportlistor/2004/ra

pporter04/rydberg_claes-johan_04048.pdf, senast besökt 2008-10-31.

[14] Tapadiya. 2000. COM+ Programming, A Practical Guide Using

Visual C++ and ATL, Prentice Hall. ISBN 978-0130886743

[15] The Component Object Model Specification, version 0.9. finns

inte längre som officiellt dokument hos Microsoft. Finns dock till-

gänglig på Department of Computer Science – DaimiFaculty of Sci-

ence, University of Aarhus

http://www.daimi.au.dk/~datpete/COT/COM_SPEC/html/com_spec.ht

ml, senast besökt 2008-10-15.

[16] The Open Group. The Open Group DCE Portal.

http://www.opengroup.org/dce, Senast besökt 2008-10-15

[17] COM är beskrivet hos Microsoft på

http://msdn.microsoft.com/en-us/library/ms877981.aspx, senast besökt

2008-10-15.

Page 56: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

50

Följande specifikationer finns 2008-10-01 tillgängliga för nerladdning

på www.opcfoundation.org (registrering krävs):

OPC Common 1.00 Specification

OPC Common 1.10 Specification

OPC DA Auto 2.02 Specification

OPC DA 2.05a Specification

OPC DA 3.00 Specification

OPC XMLDA 1.01 Specification

OPC HDA Auto 1.00 Specification

OPC HDA 1.20 Specification

OPC AE 1.01 Auto Specification

OPC AE 1.10 Specification

OPC Batch Auto 1.00 Specification

OPC Batch 2.00 Specification

OPC Commands 1.00 Specification

OPC Complex Data 1.00 Specifikation

OPC DX 1.00 Specification

OPC Security 1.00 Specification

OPC UA part 1 – Overview and Concepts RC 1.01.03

Specification

OPC UA Part 2 – Security Model RC 1.01.52 Specification

OPC UA Part 3 – Address Space Model RC1.01.13

Specification

OPC UA Part 4 – Services RC 1.01.30 Specification

OPC UA Part 5 – Information Model RC 1.01.13 Specification

OPC UA Part 6 – Mappings RC 1.00.08 Specification

OPC UA Part 7 – Profiles RC 1.00.00 Specification

OPC UA Part 8 – Data Access RC 1.01.10 Specification

OPC UA Part 9 – Alarms Draft v0.62

OPC UA Part 10 – Programs 1.00 Specification

OPC UA Part 11 – Historical Access 1.00 Specification

OPC Test Lab Part 1 – Concepts RC 1.00.01 Specification

OPC Test Lab Part 2 – Abstract Test Suite RC 1.00.01

Specification

OPC Test Lab Part 3 – Test Lab Realization RC 1.00.02

Specification

OPC Test Lab Part 4 – Certification Process RC 1.00.01

Specification

OPC Test Lab Part 5 – Quality Management Manual RC

1.00.01 Specification

OPC Test Lab Part 6 – COM DA Server RC 1.00.01

Specification

OPC Test Lab RC 1.00 Specification Parts 6-7

Page 57: Analys av OLE för processkontroll - nada.kth.se · på Microsofts COM/DCOM-teknik. ... Analysis of OLE for Process Control OPC is a standard created for transfer of process data

TRITA-CSC-E 2009:090 ISRN-KTH/CSC/E--09/090--SE

ISSN-1653-5715

www.kth.se