09.03.2014 Views

OPC kurs Introduksjon

OPC kurs Introduksjon

OPC kurs Introduksjon

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>OPC</strong> <strong>kurs</strong><br />

Del 1<br />

v / Olav Aaker – Prediktor AS<br />

Prediktor as <strong>OPC</strong> Kurs - Del 1 1


Kurset vil omhandle<br />

• <strong>OPC</strong> Foundation<br />

• <strong>OPC</strong> Data Access<br />

• <strong>OPC</strong> Alarms & Event<br />

• <strong>OPC</strong> Historical Data<br />

• <strong>OPC</strong> UA<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 2


<strong>OPC</strong> – hva står det for?<br />

• Tidligere: <strong>OPC</strong> OLE for Process Control<br />

• OLE Object Linking and Embedding<br />

Integrasjon av office applikasjoner<br />

OLE Versjon 1 var basert på DDE<br />

OLE Versjon 2 var basert på COM<br />

• Nå: Openness Productivity and<br />

Connectivity<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 3


COM<br />

• Component Object Model<br />

Generell komponent teknologi<br />

Interoperabilitet<br />

Ikke kun for OLE<br />

• DCOM Distributed Component Object Model<br />

• <strong>OPC</strong> er basert på COM/DCOM og ikke OLE<br />

(OLE er også basert på COM)<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 4


Hvorfor <strong>OPC</strong>?<br />

Presentasjons lag Applikasjons lag Data lag<br />

Trender og<br />

plott<br />

Operatør<br />

skjermer<br />

Rapporter<br />

Data Analyse<br />

Regulering og<br />

styring<br />

Simulering<br />

Prosessdata<br />

Alarmer og<br />

Hendelser<br />

Tidsserier<br />

Leverandør X<br />

Generasjon N<br />

Leverandør Y<br />

Generasjon N<br />

Leverandør Z<br />

Generasjon N<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 5


Løsning: Standardisert grensesnitt muliggjør<br />

bedre struktur<br />

Presentasjons lag Applikasjons lag Data lag<br />

Trender og<br />

plott<br />

Operatør<br />

skjermer<br />

Rapporter<br />

Data Analyse<br />

Regulering og<br />

styring<br />

Simulering<br />

Prosessdata<br />

Alarmer og<br />

Hendelser<br />

Tidsserier<br />

<strong>OPC</strong><br />

XML<br />

.net<br />

<strong>OPC</strong><br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 6


Fordeler med <strong>OPC</strong><br />

• Reduserte utviklingskostnader for produsenter<br />

• Hardware produsenter lager ett sett <strong>OPC</strong> drivere for<br />

deres produkter istedenfor utvikling og vedlikehold av<br />

multiple sett av drivere.<br />

• Produsentene konkurrerer da på verdien av deres<br />

løsninger istedenfor å låse kunden i proprietære<br />

teknologier.<br />

• Reduserte integrasjonskostnader for brukere.<br />

• Brukere fokuserer på verdiskapende aktiviteter<br />

istedenfor integrasjonsproblemer.<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 7


Universalspråk for industriell programvare 1<br />

<strong>OPC</strong> Klient applikasjon fra<br />

Leverandør Y<br />

<strong>OPC</strong> Server Leverandør X<br />

Fysisk utstyr<br />

IO enhet<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 8


Universalspråk for industriell programvare 2<br />

Alarm liste<br />

SCADA<br />

MMI / Trender<br />

Avansert Prosess<br />

Styring<br />

Manufacturing Execution<br />

System (MES)<br />

<strong>OPC</strong> Alarms & Events<br />

<strong>OPC</strong> Historian<br />

<strong>OPC</strong> Data Access 1<br />

<strong>OPC</strong> Data Access 2<br />

<strong>OPC</strong> Data Access X<br />

Prosess utstyr 1<br />

PLS/IO 1<br />

Prosess utstyr 2<br />

PLS/IO 2<br />

Prosess utstyr X<br />

PLS/IO X<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 9


Plug & Play for industrielle applikasjoner<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 10


<strong>OPC</strong> Foundation<br />

organisasjonen<br />

Prediktor as <strong>OPC</strong> Kurs - Del 1 11


<strong>OPC</strong> Foundations visjon 1<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 12


Utvikling – antall medlemmer<br />

• 1996: 23 medlemmer<br />

• 2011(hittil): 405 medlemmer<br />

• Medlemmer i Europa: 196<br />

• Medlemmer i Norge: 8<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 13


Norske <strong>OPC</strong> Foundation medlemmer<br />

Company Name<br />

Date Joined<br />

Baze Technology AS 10.04.2008<br />

Fieldnet AS 18.09.2000<br />

Goodtech Projects & Services AS 26.09.2007<br />

Institute For Energy Technology (IFE) 21.08.2001<br />

Kongsberg Maritime AS 28.01.2003<br />

Prediktor AS 25.04.1997<br />

Statoil ASA 09.08.2010<br />

Vianova Eureka AS 11.10.2002<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 14


Tilgjengelige server/klienter<br />

• Stort økende komponent marked<br />

Mer enn 2500 leverandør bedrifter<br />

Mer enn 15000 produkter<br />

• Eksempel: Profibus <strong>OPC</strong> leverandører<br />

AG-E, Applicom, TwinCAT, Grayhill, Iconics, Ifak<br />

system, NemaSoft, Siemens, Softing, SST, Trebling &<br />

Himstedt<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 15


<strong>OPC</strong> Spesifikasjonene<br />

• Utvikles i ”Working Groups”<br />

• Basert på frivillig arbeide fra medlemsbedriftene<br />

• Tilgjengelig for medlemmer:<br />

Drafts, pre-relase og working group meeting notes<br />

• Fritt tilgjengelig for alle:<br />

Ferdige releasede spesifikasjoner (Unntatt <strong>OPC</strong> UA)<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 16


Publiserte <strong>OPC</strong> Spesifikasjoner 1<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 17


Publiserte <strong>OPC</strong> Spesifikasjoner 2<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 18


Relasjoner (”Classic <strong>OPC</strong>”)<br />

<strong>OPC</strong><br />

Complex Data<br />

<strong>OPC</strong><br />

Data Exchange<br />

<strong>OPC</strong><br />

Security<br />

<strong>OPC</strong><br />

Command<br />

<strong>OPC</strong><br />

Data Access<br />

<strong>OPC</strong><br />

DA Auto<br />

<strong>OPC</strong><br />

Batch<br />

<strong>OPC</strong><br />

Batch Auto<br />

<strong>OPC</strong><br />

Common<br />

<strong>OPC</strong><br />

Alarms & Events<br />

<strong>OPC</strong><br />

AE Auto<br />

<strong>OPC</strong><br />

XML<br />

<strong>OPC</strong>Historical<br />

Data Access<br />

<strong>OPC</strong><br />

HDA Auto<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 19


<strong>OPC</strong> Data Access<br />

Nå - verdier<br />

Prediktor as <strong>OPC</strong> Kurs - Del 1 20


Hva brukes <strong>OPC</strong> Data Access til?<br />

• Lesing av nåverdier<br />

Måleinstrumenter<br />

Styresignaler<br />

Beregnede verdier<br />

• Skriving av nåverdier<br />

Settpunkt i regulator<br />

Startkriterier i logikk<br />

programmer<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 21


Eksempel på systemarkitektur 1<br />

SCADA<br />

<strong>OPC</strong> Data Access klient<br />

MMI<br />

<strong>OPC</strong> Data Access klient<br />

Avansert Prosess<br />

Styring<br />

<strong>OPC</strong> Data Access klient<br />

Manufacturing Execution<br />

System (MES)<br />

<strong>OPC</strong> Data Access klient<br />

<strong>OPC</strong> Data Access server 1<br />

<strong>OPC</strong> Data Access server 2<br />

<strong>OPC</strong> Data Access server X<br />

Prosess utstyr 1<br />

PLS/IO 1<br />

Prosess utstyr 2<br />

PLS/IO 2<br />

Prosess utstyr X<br />

PLS/IO X<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - <strong>OPC</strong> Data Access Oversikt 22


Logisk objektmodell mot klient<br />

<strong>OPC</strong>Server<br />

<strong>OPC</strong>Group<br />

<strong>OPC</strong>Group<br />

<strong>OPC</strong>Group(s)<br />

<strong>OPC</strong>Item(s)<br />

<strong>OPC</strong>Item(s)<br />

<strong>OPC</strong>Item(s)<br />

<strong>OPC</strong>Item(s)<br />

<strong>OPC</strong>Item(s)<br />

<strong>OPC</strong> Item(s)<br />

<strong>OPC</strong>Item(s)<br />

<strong>OPC</strong>Item(s)<br />

<strong>OPC</strong> Item(s)<br />

Prediktor as<br />

<strong>OPC</strong> Properties<br />

<strong>OPC</strong> Kurs - Del 1 23


<strong>OPC</strong> Data Access 2.04<br />

• Server navnerom aksess (item-browsing)<br />

• Klient basert item-gruppering<br />

• Utveksling av nåverdier data<br />

Gruppe lesing<br />

• Synkron lesing<br />

• Asynkron lesing<br />

• Abonnement (på 2 måter)<br />

Gruppe skriving<br />

• Synkron skriving<br />

• Asynkron skriving<br />

• Asynkron skriving med tilbakekall<br />

• Et item har<br />

Verdi<br />

Kvalitet<br />

Tidsstempel<br />

Aksess rettighet<br />

Properties<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 24


<strong>OPC</strong> Server<br />

• Lar klienten opprette og vedlikeholde en samling med<br />

grupper<br />

• Lar klienten ”browse” i navnerommet til serveren<br />

Flatt eller hierarkisk navnerom<br />

Leverer ItemID til klient<br />

Filtrere<br />

• Aksess rettighet (lese/skrive)<br />

• ItemID med ”wildcard” streng<br />

• Data type<br />

• Lar klienten aksessere Item properties (<strong>OPC</strong> 2.0)<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 25


Eksempel på navnerom browsing<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 26


<strong>OPC</strong> Gruppe<br />

• Lar klienten opprette og vedlikeholder en samling med <strong>OPC</strong> Items<br />

• Utfører lese og skrive operasjoner<br />

Synkront eller asynkront<br />

Leser fra CACHE eller DEVICE<br />

• Sender abonnements basert oppdatering til klienten<br />

Dødbåndsbasert: % variasjon innenfor itemenes range<br />

Minste oppdateringsintervall angis i gruppen<br />

Oppdatering kan akttiveres/deaktiveres for<br />

• Hvert item<br />

• Hele gruppen<br />

• Kan konfigureres til å operere innenfor forskjellige språk<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 27


<strong>OPC</strong> Item<br />

• ItemID<br />

Unik for hvert Item<br />

Eksempel: Apis.SoftPLC.Variabe2<br />

Oversettes til en 32 bits <strong>OPC</strong>HANDLE for effektiv referanse<br />

• Verdi<br />

Flyttall (enkel/dobbel presisjon)<br />

Heltall (8/16/32 bits)<br />

Boolean (digital)<br />

Tekst<br />

Dato/tid<br />

Array (vektor) av alle typene over<br />

• Kvalitet<br />

Forteller noe om verdien<br />

God, dårlig eller usikker<br />

Og årsaken til kvaliteten<br />

• Tidsstempel<br />

UTC (GMT)<br />

NT FILETIME, dvs 100-nanosekund oppløsning siden 01.01.1601<br />

Eks: 17.09.2001 11:17:49.745<br />

• Aksess rettighet<br />

Read, Write eller Read & Write<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 28


<strong>OPC</strong> DA kvaliteter<br />

Quality value<br />

<strong>OPC</strong>_QUALITY_BAD<br />

<strong>OPC</strong>_QUALITY_CONFIG_ERROR<br />

<strong>OPC</strong>_QUALITY_NOT_CONNECTED<br />

<strong>OPC</strong>_QUALITY_DEVICE_FAILURE<br />

<strong>OPC</strong>_QUALITY_SENSOR_FAILURE<br />

<strong>OPC</strong>_QUALITY_LAST_KNOWN<br />

<strong>OPC</strong>_QUALITY_COMM_FAILURE<br />

<strong>OPC</strong>_QUALITY_OUT_OF_SERVICE<br />

<strong>OPC</strong>_QUALITY_UNCERTAIN<br />

<strong>OPC</strong>_QUALITY_LAST_USABLE<br />

Description<br />

The value is bad but no specific reason is known<br />

There is some server specific problem with the configuration. For example the item is question has been deleted<br />

from the configuration.<br />

The input is required to be logically connected to something but is not.<br />

A device failure has been detected<br />

A sensor failure had been detected (the ‟Limits‟ field can provide additional diagnostic information in some<br />

situations.)<br />

Communications have failed. However, the last known value is available. Note that the „age‟ of the value may be<br />

determined from the TIMESTAMP in the <strong>OPC</strong>ITEMSTATE.<br />

Communications have failed. There is no last known value is available.<br />

The block is off scan or otherwise locked This quality is also used when the active state of the item or the group<br />

containing the item is InActive.<br />

There is no specific reason why the value is uncertain.<br />

Whatever was writing this value has stopped doing so. The returned value should be regarded as „stale‟.<br />

<strong>OPC</strong>_QUALITY_SENSOR_CAL<br />

<strong>OPC</strong>_QUALITY_EGU_EXCEEDED<br />

<strong>OPC</strong>_QUALITY_SUB_NORMAL<br />

Either the value has „pegged‟ at one of the sensor limits or the sensor is otherwise known to be out of calibration<br />

via some form of internal diagnostics<br />

The returned value is outside the limits defined for this parameter.<br />

The value is derived from multiple sources and has less than the required number of Good sources.<br />

<strong>OPC</strong>_QUALITY_GOOD<br />

<strong>OPC</strong>_QUALITY_LOCAL_OVERRIDE<br />

The value is good. There are no special conditions<br />

The value has been Overridden. Typically this is means the input has been disconnected and a manually entered<br />

value has been „forced‟.<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 29


<strong>OPC</strong> Properties<br />

• Assosierte data til et item<br />

Beskrivelse<br />

Ingeniør enhet<br />

Skalerings område<br />

.... Side 19 i <strong>OPC</strong> Data Access Custom Interface Standard 3.0<br />

• Egen definerte properties kan brukes<br />

• Kan aksesseres uten å lage en gruppe<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - <strong>OPC</strong> Data Access Oversikt 30


Dynamikk i objektmodell<br />

<strong>OPC</strong> Name<br />

Space<br />

Browser<br />

<strong>OPC</strong><br />

Gruppe 1<br />

Navnerom<br />

Node a<br />

Leaf 1<br />

Leaf 2<br />

Leaf 3<br />

<strong>OPC</strong> Item<br />

1a<br />

<strong>OPC</strong> Item<br />

1b<br />

<strong>OPC</strong><br />

Klient<br />

<strong>OPC</strong><br />

Server Obj<br />

Root<br />

Node b<br />

Leaf 4<br />

Node c<br />

Leaf 5<br />

<strong>OPC</strong> Item<br />

2a<br />

<strong>OPC</strong><br />

Gruppe 2<br />

Leaf 6<br />

<strong>OPC</strong> Item<br />

2b<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 31


Automation versjon<br />

• Det er to typer av COM interface<br />

Custom<br />

• Bruker C/C++ arrays (vektorer) og strenger (tekst)<br />

• Kan brukes fra C og C++<br />

Automation<br />

• Bruker kun Automation compliant typer<br />

• Har byttet C array med SAFEARRAY<br />

• Har byttet C strenger med BSTR<br />

• Kan brukes fra Visual Baisc, MS Office, Delphi, J++ m.m.<br />

• <strong>OPC</strong> Foundation publiserer custom interfacer og lager<br />

Automation wrappere<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 32


Custom/Automation relasjon<br />

Visual Basic<br />

Applikasjon<br />

<strong>OPC</strong> Automation<br />

Interface<br />

<strong>OPC</strong><br />

Automation<br />

Wrapper<br />

Lokal eller Remote<br />

<strong>OPC</strong> Server<br />

C, C++,<br />

Delphi<br />

<strong>OPC</strong> Custom Interface<br />

(delt av mange<br />

klienter)<br />

Server Data Cache<br />

Fysisk Device/<br />

DataBase<br />

Data<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 33


Nå finnes også .Net wrapper<br />

.Net managed code:<br />

C#, VB.net, J#, C++,<br />

COBOL, Perl, Eiffel,<br />

Python, Pascal, Fortran,<br />

Oberon, SmallTalk, ML<br />

C, C++, Delphi<br />

<strong>OPC</strong> .Net API<br />

<strong>OPC</strong> .Net<br />

Wrapper<br />

<strong>OPC</strong> Custom Interface<br />

Lokal eller Remote<br />

<strong>OPC</strong> Server<br />

(delt av mange<br />

klienter)<br />

Server Data Cache<br />

Fysisk Device/<br />

DataBase<br />

Data<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 34


<strong>OPC</strong> versus Corba , MITS og Java<br />

C/C++<br />

Java<br />

VB<br />

Delphi<br />

<strong>OPC</strong> Client<br />

<strong>OPC</strong> Server<br />

DCOM<br />

RPC<br />

C++<br />

Java<br />

Corba<br />

RPC<br />

?<br />

?<br />

Java beans?<br />

Java<br />

?<br />

Java VM<br />

RMI<br />

C /<br />

C++<br />

MITS Client<br />

MITS<br />

Server<br />

TCP-IP / UDP<br />

IPX / HTTP<br />

TCP-IP / UDP<br />

TCP-IP<br />

TCP-IP<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 35


Basis COM objekt modell<br />

IUnknown<br />

COM Client<br />

Object<br />

ISomeInterface<br />

COM Server<br />

Object<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 36


COM Interfacer<br />

• Er kontrakten mellom klient og server<br />

<br />

Klient kan ikke se annet enn metodene i interfacet (black box)<br />

• Alle arver fra IUnknown<br />

<br />

AddRef()<br />

Release()<br />

QueryInterface()<br />

<br />

Eksponerer funksjonalitet<br />

<br />

(nye COM Interfacer)<br />

• Alle metoder returnerer en HRESULT<br />

<br />

<br />

<br />

<br />

32 bits returkode<br />

Negative er feil, positive er suksess<br />

Koder er definert av Microsoft, <strong>OPC</strong> Foundation og produkt leverandør<br />

Eks.: S_OK, E_FAIL, <strong>OPC</strong>_E_BADRIGHTS<br />

• Skrives i Interface Definition Language (IDL)<br />

<br />

Tekst fil med C++ lignende syntax<br />

• Registreres i OS med en Type Library (TLB)<br />

<br />

Kompilert versjon av en IDL fil<br />

Livssyklus kontroll<br />

Eks.: side 170 i <strong>OPC</strong> Data Access Custom Interface Specification 2.04<br />

• COM er spesifisert på binær form og dermed språkuavhangig<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 37


Local / remote transparens<br />

I samme prosess<br />

Hurtig, direkte funksjonskall<br />

Client<br />

Component<br />

Client Process<br />

Server Process<br />

På samme maskin<br />

Hurtig, sikker IPC<br />

Client<br />

COM<br />

Component<br />

Mellom maskiner<br />

Sikker, pålitelig og fleksibel DCE-RPC<br />

basert DCOM protocol<br />

Client<br />

Client Machine<br />

COM<br />

DCE<br />

RPC<br />

Server Machine<br />

COM<br />

Component<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 38


COM Objekter<br />

• Implementerer ett eller flere interfacer<br />

• Reference counting - “Poor mans” garbage collection<br />

• <strong>OPC</strong> Server og <strong>OPC</strong> Group er typiske COM objekter<br />

IUnknown<br />

ISomeInterface<br />

IAnotherInterface<br />

COM Server<br />

Object<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 39


<strong>OPC</strong> Gruppe objektet<br />

IUnknown<br />

I<strong>OPC</strong>ItemMgt<br />

I<strong>OPC</strong>GroupStateMgt<br />

[I<strong>OPC</strong>PublicGroupStateMgt]<br />

I<strong>OPC</strong>SyncIO<br />

Standard<br />

<strong>OPC</strong> Group<br />

Object<br />

I<strong>OPC</strong>ASyncIO2<br />

IConnectionPointContainer<br />

[I<strong>OPC</strong>ASyncIO] old<br />

[IDataObject] old<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 40


<strong>OPC</strong> Alarms & Events<br />

Hendelser<br />

Prediktor as <strong>OPC</strong> Kurs - Del 1 41


Hva brukes <strong>OPC</strong> Alarms & Events til?<br />

• Rapportering og overvåking av hendelser<br />

Diskrete alarmer, nivå alarmer<br />

Advarsler<br />

Informasjon – for eksempel: Batchen har nådd<br />

trinn 2<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 42


Eksempel på systemarkitektur<br />

<strong>OPC</strong> Alarms & Events Klient 1<br />

<strong>OPC</strong> Alarms & Events Klient 2<br />

<strong>OPC</strong> Alarms & Events Klient X<br />

<strong>OPC</strong> Alarms & Events Server<br />

<strong>OPC</strong> Data Access Server 1<br />

<strong>OPC</strong> Data Access Server 2<br />

<strong>OPC</strong> Data Access Server X<br />

Prosess utstyr 1<br />

PLS/IO 1<br />

Prosess utstyr 2<br />

PLS/IO 2<br />

Prosess utstyr X<br />

PLS/IO X<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - <strong>OPC</strong> Alarms & Events 43


<strong>OPC</strong> Alarms & Events<br />

Deteksjon av Alarmer og/eller Hendelser<br />

• En eller flere kilder<br />

Rapportering til en eller flere klienter<br />

• Abonnement på eventer<br />

• Filtrering<br />

Typiske klienter<br />

• Operatør stasjoner<br />

• Alarm/Event logging komponenter<br />

• Alarm/Event håndterings subsystemer<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 44


Logisk Objekt Modell<br />

<strong>OPC</strong> Event<br />

Server<br />

<strong>OPC</strong> <strong>OPC</strong> Event<br />

<strong>OPC</strong> Event Event<br />

Subscription(s)<br />

<strong>OPC</strong> <strong>OPC</strong> Event Event<br />

Subscription<br />

<strong>OPC</strong> Source(s)<br />

Prediktor as<br />

<strong>OPC</strong>Item(s)<br />

<strong>OPC</strong>Item(s)<br />

<strong>OPC</strong> Condition(s)<br />

Attributes<br />

<strong>OPC</strong>Item(s)<br />

<strong>OPC</strong>Item(s)<br />

Sub<br />

Condition(s)<br />

<strong>OPC</strong> Kurs - Del 1 45


3 event typer i spesifikasjonen<br />

• Simple<br />

Eksempel: en komponentfeil meldt av systemet<br />

• Condition – relaterte<br />

Eventer er assosiert med betingelser<br />

Eventer er tranisisjoner inn og ut av tilstander representert<br />

av Conditions og SubConditions<br />

Eksempel: FIC101 har oppnådd NivåAlarm Condition med<br />

HighAlarm som SubCondition<br />

• Tracking – relatert<br />

Ikke assosiert med betingelser<br />

Hendelser rundt operatørers interaksjon med mål objekter<br />

Eksempel: Setpunkt for FIC101 ble endret av operatørX<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 46


Event kategorier<br />

• Er ikke fastlagt, men definert i hver enkelt server<br />

• En kategori kan bare tilhøre en Event Type<br />

• En kategorier kan brukes til grupperinger av<br />

eventer<br />

Eksempel: Process Events, System Events, Batch<br />

Events<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 47


<strong>OPC</strong> Condition<br />

1 0..N<br />

has<br />

1 1..N<br />

has<br />

<strong>OPC</strong>Source<br />

Attributes:<br />

Name<br />

…<br />

…<br />

...<br />

<strong>OPC</strong>Condition<br />

Attributes:<br />

Name<br />

Active<br />

ActiveSubCondition<br />

Quality<br />

Enabled<br />

Acked<br />

LastAckTime<br />

SubCondLastActive<br />

CondLastActive<br />

LastInactive<br />

AcknowledgerID<br />

Comment<br />

<strong>OPC</strong>SubCondition<br />

Attributes:<br />

Name<br />

Definition<br />

Severity<br />

Description<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 48


Severity - alvorlighetsgrad<br />

<strong>OPC</strong> Severity Range Device Severity <strong>OPC</strong> Severity<br />

HIGH (667 – 1000)<br />

15 1000<br />

14 955<br />

13 910<br />

12 865<br />

11 820<br />

10 775<br />

9 730<br />

8 685<br />

MEDIUM (334 – 666)<br />

7 650<br />

6 575<br />

5 500<br />

4 425<br />

3 350<br />

LOW (1 – 333)<br />

2 300<br />

1 150<br />

0 1<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 49


Anbefalte<br />

kategorier og<br />

conditions<br />

Event Type Event Category Condition<br />

Condition Related Level PVLEVEL (Multi State)<br />

SPLEVEL (Multi State)<br />

LO_LO (Single State)<br />

LO (Single State)<br />

HI (Single State)<br />

HI_HI (Single State)<br />

Deviation<br />

DV_LO (Single State)<br />

DV_HI (Single State)<br />

Discrete<br />

CFN<br />

TRIP<br />

COS<br />

Statistical<br />

System Failure<br />

SYSTEM_FAILURE<br />

Simple<br />

Device Failure<br />

Batch Status<br />

System Message<br />

Prediktor as<br />

Tracking<br />

Operator Process Change<br />

System Configuration<br />

Advanced Control<br />

<strong>OPC</strong> Kurs - <strong>OPC</strong> Alarms & Events 50


Tilstandsmaskin for en <strong>OPC</strong>ondition<br />

Disable Received<br />

Send ”Disabled”<br />

notification<br />

Disabled<br />

Enable Received<br />

Send “Enabled”<br />

Notification<br />

Inactive-Acked-Enabled<br />

Sub-condition changes<br />

Send notfication of<br />

new sub-condition<br />

Becomes Active<br />

Send ”Condition Active”<br />

notification<br />

Sub-condition changes<br />

Send notfication of<br />

new sub-condition<br />

Becomes Inactive<br />

Send ”Condition inactive”<br />

notification<br />

Active-Acked-Enabled<br />

Valid Ack Received<br />

Send ”Acknowledged”<br />

notification<br />

Valid Ack Received<br />

Send ”Acknowledged”<br />

notification<br />

Becomes Inactive<br />

Send ”Condition<br />

inactive”<br />

notification<br />

Active-Unacked-Enabled<br />

Invalid Ack Received<br />

Ignore<br />

Becomes Active<br />

Send ”Condition active”<br />

notification<br />

Inactive-Unacked-Enabled<br />

(For all enabled states)<br />

Enabled, ...<br />

Quality changes<br />

Send ”Quality Changed”<br />

notification<br />

Prediktor as<br />

Invalid Ack Received<br />

Ignore<br />

<strong>OPC</strong> Kurs - Del 1 51


<strong>OPC</strong>Event Notification<br />

Event Type Hierarchy<br />

<strong>OPC</strong>SimpleEventNotification<br />

Standard Attributes:<br />

Source<br />

Time<br />

Type<br />

EventCategory<br />

Severity<br />

Message<br />

Vendor-Specific Attributes:<br />

(Attributes defined by the server<br />

implementer)<br />

is-a<br />

<strong>OPC</strong>ConditionEventNotification<br />

Standard Attributes:<br />

ConditionName<br />

SubConditionName<br />

NewState<br />

Quality<br />

AckRequired<br />

ActiveTime<br />

Cookie<br />

ActorID<br />

Vendor-Specific Attributes:<br />

(Attributes defined by the server<br />

implementer)<br />

<strong>OPC</strong>TrackingEventNotification<br />

Standard Attributes:<br />

ActorID<br />

Vendor-Specific Attributes:<br />

(Attributes defined by the server<br />

implementer)<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 52


Kriterier for event notifikasjon<br />

• BufferTime<br />

Bestemmes av klient<br />

Verdien er i Millisekunder<br />

Sender ikke notfikasjoner oftere enn dette (hvis MaxSize = 0)<br />

0 betyr å sende så ofte som mulig<br />

• MaxSize<br />

Bestemmes av klient<br />

Setter begrensninger på antall eventer som sendes om gangen<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 53


Event Filtere<br />

• Eventer kan bli selektert ut i fra forskjellige<br />

filtrerings kriterier<br />

Event typer: Simple, Condition, Tracking<br />

Event Kategorier<br />

Lowest Severity<br />

Highest Severity<br />

Process Areas (ansvars områder)<br />

Event Sources (tager)<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 54


<strong>OPC</strong> Historical Data Access<br />

Hente historiske data<br />

Prediktor as <strong>OPC</strong> Kurs - Del 1 55


Relasjoner til andre<br />

spesifikasjoner<br />

<strong>OPC</strong><br />

Complex Data<br />

<strong>OPC</strong><br />

Data Exchange<br />

<strong>OPC</strong><br />

Security<br />

<strong>OPC</strong><br />

Command<br />

<strong>OPC</strong><br />

Data Access<br />

<strong>OPC</strong><br />

DA Auto<br />

<strong>OPC</strong><br />

Batch<br />

<strong>OPC</strong><br />

Batch Auto<br />

<strong>OPC</strong><br />

Common<br />

<strong>OPC</strong><br />

Alarms & Events<br />

<strong>OPC</strong><br />

AE Auto<br />

<strong>OPC</strong><br />

XML<br />

<strong>OPC</strong>Historical<br />

Data Access<br />

<strong>OPC</strong><br />

HDA Auto<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 56


Hva brukes <strong>OPC</strong> Historical Data Access til?<br />

• Lesing av historiske verdier<br />

Trender av målepunkter<br />

• Enkel bearbeiding av historiske data<br />

Statistikk<br />

• Eksponerer et standardskjema mot<br />

databaseklienter<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 57


Eksempel på systemarkitektur<br />

<strong>OPC</strong> Historical Data Access Klient 1<br />

<strong>OPC</strong> Historical Data Access Klient 2<br />

<strong>OPC</strong> Historical Data Access Klient X<br />

<strong>OPC</strong> Historical Data Access Server<br />

<strong>OPC</strong> Data Access Server 1<br />

<strong>OPC</strong> Data Access Server 2<br />

<strong>OPC</strong> Data Access Server X<br />

Prosess utstyr 1<br />

PLS/IO 1<br />

Prosess utstyr 2<br />

PLS/IO 2<br />

Prosess utstyr X<br />

PLS/IO X<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 58


<strong>OPC</strong> Historical Data Access formål<br />

• Standard grensesnitt for kommunikasjon av historiske data mellom<br />

applikasjoner fra ulike leverandører<br />

• Designet for tidsserie basert datahåndtering, kontra SQL for<br />

relasjonsdata<br />

• En standard som tar hensyn til krav om høy ytelse; både for store<br />

datamengder og med hensyn til kompleksitet for spørringer<br />

• Fleksibilitet, oppnås via mye valgfri funksjonalitet<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 59


<strong>OPC</strong> Historical Data Access innhold<br />

• Lesing og skriving av data for prosess-<br />

/tidsseriedatabaser<br />

• Aksessering av serverens navnerom<br />

(namespacebrowsing)<br />

• Historiske data med attributter, tidsstempel og kvalitet<br />

• Støtte for annoteringer og aggregerte data<br />

• Støtte for avspilling av historiske data<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 60


Logisk modell<br />

<strong>OPC</strong> HDA Server<br />

Namespace Browser<br />

<strong>OPC</strong> HDA Items<br />

Attributes<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 61


<strong>OPC</strong> HDA items<br />

• <strong>OPC</strong> HDA items er tagger med historiske data<br />

• Alle <strong>OPC</strong> HDA items har en unik ItemID som brukes for å<br />

identifisere og adressere itemet<br />

• Støtter datatyper som for <strong>OPC</strong> Data Access<br />

• Et item har tilhørende attributter som definert støttet av <strong>OPC</strong><br />

HDA serveren<br />

• <strong>OPC</strong> HDA servere kan støtte historikk over attributtverdier<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 62


Prediktor as<br />

Generelle <strong>OPC</strong> HDA attributter<br />

• Item ID<br />

Itemets unike ItemID i HDA serveren (tagnavn)<br />

• Datatype<br />

Datatypen til itemet, flyttal, heltall, boolean, etc.<br />

• Description<br />

Beskrivelse av itemet<br />

• Engineering units<br />

Fysisk måleenhet<br />

• Stepped<br />

Om data skal vises interpolert eller som firkantpuls<br />

• Archiving<br />

Om logging er aktiv for item<br />

• Derive equation<br />

En ligning for å transformere verdiene<br />

• Node name<br />

Navnet til itemets kilde, f.eks. maskinnavn eller IP adresse til en <strong>OPC</strong> DA server<br />

• Process name<br />

Prosessnavnet til itemets kilde, f.eks. navnet til en <strong>OPC</strong> DA server (ProgID)<br />

• Source name<br />

Itemets navn hos kilden, f.eks. ItemID-en hos en <strong>OPC</strong> DA server<br />

• Source type<br />

Hva slags type kilde itemet har, f.eks. ”<strong>OPC</strong>” for item som kommer fra en <strong>OPC</strong> DA<br />

server<br />

<strong>OPC</strong> Kurs - Del 1 63


Flere attributter<br />

• Normal maximum<br />

Normal makismal verdi, brukes ved skalering av trender<br />

• Normal minimum<br />

Normal minimal verdi, brukes ved skalering av trender<br />

• Maximum time interval<br />

Det maksimale tidsinterval mellom to verdier i historikken, ny verdi skal lagres etter<br />

denne periode. Påvirker hvordan data blir historisk lagret.<br />

• Minimum time interval<br />

Det minimale tidsinterval mellom to verdier i historikken, ny verdi skal ikke lagres<br />

innenfor denne periode. Påvirker hvordan data blir historisk lagret.<br />

• Exception deviation<br />

Minimums endring i verdi før ny verdi lagres. Påvirker hvordan data blir historisk<br />

lagret.<br />

• Exception deviation type<br />

Om Exception deviation er angitt som absoluttverdi, prosent av verdi eller prosent av<br />

verdispenn (HighEntryLimit - LowEntryLimit). Påvirker hvordan data blir historisk<br />

lagret.<br />

• High entry limit<br />

Øvre gyldige grense for verdi. Påvirker hvordan data blir historisk lagret.<br />

• Low entry limit<br />

Nedre gyldige grense for verdi. Påvirker hvordan data blir historisk lagret.<br />

• I tillegg kan det defineres server spesifikke attributter<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 64


Spesifisering av tidsintervaller<br />

• Tidsintervaller for uthenting av data<br />

Kan spesifiseres i absolutt og/eller relativ tid<br />

Angitt forlengs eller baklengs<br />

• Tider er alltid oppgitt i universal coordinated time (UTC)<br />

• Absolutt tid eksempel:<br />

Starttid: 10/09/2001 10:00:00<br />

Sluttid: 10/09/2001 12:00:00<br />

• Relativ tid:<br />

Syntaks: Keyword+-Offset+-Offset…<br />

Keywords: NOW, YEAR,MONTH, WEEK, DAY, HOUR, MINUTE,<br />

SECOND<br />

Offsets: Y, MO, W, D, H, M, S<br />

• Relativ tid eksempel for ukesrapport:<br />

Starttid:<br />

Sluttid:<br />

WEEK-1W<br />

WEEK<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 65


<strong>OPC</strong> HDA dataverdi kvaliteter<br />

Kvalitets verdi Beskrivelse Assosiert DA<br />

kvalitet<br />

<strong>OPC</strong>HDA_EXTRADATA<br />

<strong>OPC</strong>HDA_INTERPOLATE<br />

D<br />

Mer enn en dataverdi eksisterer ved angitt<br />

tidspunkt<br />

Interpolert dataverdi<br />

Good, Bad,<br />

Quest.<br />

Good, Bad,<br />

Quest.<br />

<strong>OPC</strong>HDA_RAW Rå dataverdi Good, Bad,<br />

Quest.<br />

<strong>OPC</strong>HDA_CALCULATED Beregnet dataverdi (aggregat verdi) Good, Bad,<br />

Quest.<br />

<strong>OPC</strong>HDA_NOBOUND<br />

<strong>OPC</strong>HDA_NODATA<br />

<strong>OPC</strong>HDA_DATALOST<br />

Ingen dataverdi funnet som øvre eller nedre<br />

bounding verdi<br />

Ingen data verdi tilgjengelig. Eks. datalagring<br />

inaktiv i etterspurt tidspunkt<br />

Datalagring startet/stoppet/mistet i etterspurt<br />

tidspunkt<br />

<strong>OPC</strong>HDA_CONVERSION Skalerings eller konverteringsfeil Bad, Quest.<br />

<strong>OPC</strong>HDA_PARTIAL Aggregert verdi for et ufullstendig intervall Good, Bad,<br />

• HDA kvaliteter har DA kvalitet innlemmet i seg<br />

Quest.<br />

Bad<br />

Bad<br />

Bad<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 66


Aggregerte dataverdier<br />

• Aggregater = beregnede/avledede verdier<br />

• Aggregater beregnes av <strong>OPC</strong> HDA server ved forespørsel,<br />

foreligger ikke som lagrede verdier<br />

• Aggregater hentes ut over en tidsperiode, som igjen deles opp i<br />

mindre sub-intervaller<br />

Eks: Middelverdi for hvert minutt siste time<br />

• Tidspunktene for hver aggregert verdi er justert til start tiden for<br />

hvert sub-intervall<br />

• Valgfritt av <strong>OPC</strong> HDA servere å støtte dette<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 67


<strong>OPC</strong> HDA aggregater<br />

• Interpolated lineært interpolerte verdier<br />

• Totalized totalisert (summert) verdi<br />

• Average gjennomsnittsverdi<br />

• TimeAverage tidsveiet gjennomsnitt<br />

• Count antall råverdier i sub-intervallet<br />

• StdDev standard avvik<br />

• MinimumActualTime minste verdi i sub-intervallet med eksakt tidspunkt<br />

• Minimum minste verdi i sub-intervallet<br />

• MaximumActualTime største verdi i sub-intervallet med eksakt tidspunkt<br />

• Maximum største verdi i sub-intervallet<br />

• Start verdien ved starten av sub-intervallet<br />

• End verdien ved slutten av sub-intervallet<br />

• Delta End – Start<br />

• RegSlope Stigningstallet til regresjonslinjen over sub-intervallet<br />

• RegConst Verdien til regresjonslinjen ved starten av subintervallet<br />

• RegDev Standardavviket fra regresjonslinjen over subintervallet<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 68


<strong>OPC</strong> HDA aggregater forts.<br />

• Variance Variansen over sub-intervallet<br />

• Range Differansen mellom Minimum og Maximum<br />

• DurationGood Varighet i sekunder med dataverdier med good<br />

kvalitet<br />

• DurationBad Varighet i sekunder med dataverdier med bad kvalitet<br />

• PercentGood Andel i prosent av dataverdier med good kvalitet<br />

• PercentBad Andel i prosent av dataverdier med bad kvalitet<br />

• WorstQuality Den verste kvalitet i sub-intervallet<br />

• Annotations Antall annoteringer i sub-intervallet<br />

• I tillegg kan det defineres server spesifikke aggregater ved behov<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 69


Demo: APIS Process Explorer<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - Del 1 70


<strong>OPC</strong> Unified<br />

Architecture<br />

Nyeste spesifikasjon<br />

Prediktor as <strong>OPC</strong> Kurs - Del 1 71


Motivasjon<br />

• Samler alle eksisterende spesifikasjoner i en helhetlig<br />

modell<br />

Forenkler bruk av integrert funksjonalitet<br />

• Legger til ny sentral funksjonalitet<br />

• Støtter kompliserte/rike informasjonsmodeller<br />

• Er tilgjengelig på andre plattformer enn Win32<br />

• Erstatter DCOM med SOA (Server Oriented<br />

Architecture)<br />

72<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - UA I


Feles basis objekt modell basert på fellesnevnere i<br />

tidligere konsepter<br />

<strong>OPC</strong> DA og HDA<br />

<strong>OPC</strong> UA Objekt<br />

<strong>OPC</strong> Commands<br />

Variable<br />

___<br />

___<br />

___<br />

Metoder<br />

___()<br />

___()<br />

___()<br />

Eventer<br />

<strong>OPC</strong> abonnement og <strong>OPC</strong> A&E<br />

73<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - UA II


Nye funksjonelle områder<br />

• Methods (Commands) og Program support<br />

• Generisk event modell – ikke bare for alarm type eventer<br />

• Complex data support<br />

• Event history<br />

• Sletting/oppretting av noder<br />

• Endring av properties<br />

• Støtte for å bygge redundans mekanismer<br />

• Støtte for relasjonsmodeller mellom objekter<br />

74<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - UA I


<strong>OPC</strong> UA Address Space<br />

Root<br />

Feltbuss Sensor bus Areas<br />

Trykk<br />

transmitter<br />

Ventil<br />

Area1<br />

75<br />

• ‟Full mesh‟ nettverks modell<br />

• Ubegrenset antall typede relasjoner<br />

• Views brukes for å representere hierarkier<br />

• Dette er basis for å realisere nye informasjonsmodeller på toppen av<br />

UA<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - UA II


Typede relasjoner eksempel:<br />

Tradisjonelt Hierarkisk navnerom (DA / AE / HDA)<br />

Pipeline A<br />

Control Valve A1<br />

Flow<br />

Transmitter A1<br />

Temperature<br />

Transmitter A1<br />

Pressure<br />

Transmitter A1<br />

Control Valve A2<br />

Flow<br />

Transmitter A2<br />

76<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - UA II


Typede relasjoner eksempel:<br />

UA Navnerom<br />

Pipeline A<br />

organizes<br />

Control Valve A1<br />

has component<br />

organizes<br />

Flow<br />

Transmitter A1<br />

has component<br />

organizes<br />

Temperature<br />

Transmitter A1<br />

has component<br />

organizes<br />

Pressure<br />

Transmitter A1<br />

organizes<br />

Control Valve A2<br />

has component<br />

organizes<br />

Flow<br />

Transmitter A2<br />

77<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - UA II


<strong>OPC</strong> Foundation - samarbeider med andre<br />

standardiseringsorganisasjoner<br />

• ISA (S88, S95, S99)<br />

• MIMOSA<br />

• IEC<br />

• OAGi<br />

• EDDL<br />

• FDT<br />

• PLCOpen<br />

• automation.com<br />

• MS MUG & NAMUR<br />

• <strong>OPC</strong>connect.com<br />

• ……<br />

78<br />

Prediktor as<br />

<strong>OPC</strong> Kurs - UA I

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!