Vraag


Acties:
  • 0 Henk 'm!

  • 3raser
  • Registratie: Mei 2008
  • Laatst online: 16:02

3raser

⚜️ Premium member

Topicstarter
Er is mij gevraagd om een OPC server op te zetten om data van een Siemens PLC te verwerken in een stukje achterliggende software die ik zelf schrijf. Ik heb geen enkele ervaring met OPC dus ik probeer me een beetje in te lezen over de werking en bedoeling ervan. Als ik het goed heb begrepen wordt er door de PLC data weggeschreven in iets wat Data Bouwstenen (DB's) wordt genoemd. Die DB's kan ik met een OPC client vervolgens weer uitlezen.

Nu ziet het er naar uit dat ik twee opties heb.
  1. Ik koop bestaande volledig functionerende OPC server software die ik op een daarvoor bestemde PC installeer en ik gebruik een SDK of bestaande library om een OPC client in mijn software te bouwen.
  2. Ik gebruik een SDK of bestaande library waarmee ik zelf een OPC server op kan zetten in mijn eigen software.
De links in de twee opties geven voorbeelden aan van bestaande libraries. Dat lijkt dus heel eenvoudig. Ik ben alleen bang dat ik het niet volledig overzie. Is het werkelijk weinig meer dan een PLC die DB's wegschrijft en een OPC client die ze uitleest of komen er nog allerlei extra zaken bij kijken zoals drivers om een bepaald type PLC te kunnen ondersteunen. Het gaat overigens om deze PLC mocht dat nog iets uitmaken.

Ik lees ook dat er twee types OPC zijn, namelijk DA en UA en dat UA de nieuwere vorm is. Zitten daar nog haken en ogen aan of maakt het voor de PLC niet uit welk type er gebruikt wordt?

Beste antwoord (via 3raser op 21-01-2021 14:04)


  • Steefph
  • Registratie: Juli 2002
  • Laatst online: 29-05 21:58
Het lijkt erop dat de PLC zelf al OPC server is
"OPC UA Server Yes; Data access (read, write, subscribe), method call, custom address
space"

Een client in jouw software inbakken zou dan voldoende moeten zijn.

En als het echt niet wilt werken, kun je altijd nog terugvallen op Modbus/TCP >:)

[ Voor 16% gewijzigd door Steefph op 20-01-2021 15:26 ]

Alles is terug te redeneren naar 4

Alle reacties


Acties:
  • 0 Henk 'm!

  • Andre_J
  • Registratie: September 2005
  • Laatst online: 15:14
OPC DA niet meer aan beginnen, is een verouderd protocol wat dynamische poorten gebruikt en in een netwerk (met segmenten) een feestje kan zijn :)

Is OPC een eis of mag/kan het ook wat anders zijn ?
Kijk anders eens naar Node-Red (Open-Source)

Acties:
  • 0 Henk 'm!

  • Steefph
  • Registratie: Juli 2002
  • Laatst online: 29-05 21:58
Aan de serverkant (de link met de PLC) heb je vaak niet veel keus. Dit gaat regelmatig via een gesloten protocol. Nu is de vraag welke PLC we het precies over hebben ok, staat in de tekst. Siemens heeft dan wel weer een aantal 3rd party opc servers.

Op de client (jouw software) heb je weer iets nodig wat met die server kan praten. Doet de server alleen DA dan heb je een DA client nodig. Doet deze UA (de voorkeur) dan dus een UA client.

@Andre_J hoe gaat Node-red hierbij helpen?

[ Voor 7% gewijzigd door Steefph op 20-01-2021 15:22 ]

Alles is terug te redeneren naar 4


Acties:
  • 0 Henk 'm!

  • Andre_J
  • Registratie: September 2005
  • Laatst online: 15:14
Node-Red heeft verschillende OPC componenten :)

Acties:
  • 0 Henk 'm!

  • Steefph
  • Registratie: Juli 2002
  • Laatst online: 29-05 21:58
Andre_J schreef op woensdag 20 januari 2021 @ 15:19:
[...]


Node-Red heeft verschillende OPC componenten :)
Dan is het toch nog steeds OPC? :P

Alles is terug te redeneren naar 4


Acties:
  • 0 Henk 'm!

  • Andre_J
  • Registratie: September 2005
  • Laatst online: 15:14
Steefph schreef op woensdag 20 januari 2021 @ 15:21:
[...]


Dan is het toch nog steeds OPC? :P
Maar wel "gratis"
OPC Software is behoorlijk prijzig. (Kan soms ook meer, ik maak gebruik van de Softing DataFeed Suite)

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Steefph
  • Registratie: Juli 2002
  • Laatst online: 29-05 21:58
Het lijkt erop dat de PLC zelf al OPC server is
"OPC UA Server Yes; Data access (read, write, subscribe), method call, custom address
space"

Een client in jouw software inbakken zou dan voldoende moeten zijn.

En als het echt niet wilt werken, kun je altijd nog terugvallen op Modbus/TCP >:)

[ Voor 16% gewijzigd door Steefph op 20-01-2021 15:26 ]

Alles is terug te redeneren naar 4


Acties:
  • 0 Henk 'm!

  • sprankel
  • Registratie: December 2006
  • Laatst online: 01:34
OPC is een open standaard waarmee je met een externe bron praat.
Hoe de OPC server aan zijn data geraakt uit de PLC staat volledig los van OPC & zal afhankelijk zijn van de PLC. De data hoeft zelfs niet van een PLC te komen, je kan ook data rechstreeks van je communicatie netwerk uitlezen en beschikbaar maken via OPC.

Beschouw OPC dus als een gateway protocol maar hoe je onderliggend aan je data geraakt staat hier los van.

Binnen het OPC gebeuren heb je OPC classic en OPC UA waarbij OPC classic legacy is.
Gezien OPC classic legacy is wil je u focussen op UPC UA, echter als de client enkel OPC classic ondersteund heb je hem nog nodig.

Binnen OPC classic heb je dan weer
OPC DA ofwel direct access (enkel live data)
OPC HA ofwel historic access (enkel historische data)
OPC AE ofwel alarms en events


In de opvolger OPC UA worden alle 3 ondersteund, het is te zeggen, volgens de open standaard worden ze alle 3 ondersteund. In realiteit is het vaak OPC UA waar enkel direct access van werkt.

Gezien jij van een Siemens PLC data wilt halen, vraag gewoon aan Siemens een OPC server? Dat zijn standaard zaken die Siemens zelf verkoopt of je kan ook 3th party gaan, ik zie niet in waarom je dit zelf wilt liggen bouwen en ondersteunen. Vergeet ook niet dat die open standaard iets levendig is, vandaag wilt men gewoon OPC UA toegang, morgen wilt men dat die data rechstreeks naar Azure IoT gaat.

Acties:
  • 0 Henk 'm!

  • ItMeAedri
  • Registratie: Maart 2009
  • Laatst online: 16:03
Wat wil je bereiken met de OPC server? Betreft het een stageopdracht of een opdracht van een interne/externe klant?

Acties:
  • 0 Henk 'm!

  • 3raser
  • Registratie: Mei 2008
  • Laatst online: 16:02

3raser

⚜️ Premium member

Topicstarter
Andre_J schreef op woensdag 20 januari 2021 @ 15:06:
OPC DA niet meer aan beginnen, is een verouderd protocol wat dynamische poorten gebruikt en in een netwerk (met segmenten) een feestje kan zijn :)

Is OPC een eis of mag/kan het ook wat anders zijn ?
Kijk anders eens naar Node-Red (Open-Source)
OPC is wel een eis.
Steefph schreef op woensdag 20 januari 2021 @ 15:26:
Het lijkt erop dat de PLC zelf al OPC server is
"OPC UA Server Yes; Data access (read, write, subscribe), method call, custom address
space"

Een client in jouw software inbakken zou dan voldoende moeten zijn.

En als het echt niet wilt werken, kun je altijd nog terugvallen op Modbus/TCP >:)
Goed gezien. Maar wat als ik over een paar maanden een extra PLC moet toevoegen die geen eigen OPC server heeft? Dan moet ik waarschijnlijk alsnog naar een externe server op zoek die in dat geval beide PLC's kan verbinden.
sprankel schreef op woensdag 20 januari 2021 @ 15:27:
Gezien jij van een Siemens PLC data wilt halen, vraag gewoon aan Siemens een OPC server? Dat zijn standaard zaken die Siemens zelf verkoopt of je kan ook 3th party gaan, ik zie niet in waarom je dit zelf wilt liggen bouwen en ondersteunen. Vergeet ook niet dat die open standaard iets levendig is, vandaag wilt men gewoon OPC UA toegang, morgen wilt men dat die data rechstreeks naar Azure IoT gaat.
Bedankt voor de info. Ik vind het nog wel interessant om te weten hoe een PLC dan precies met de OPC server communiceert. Is dat vrijwel dezelfde manier als hoe een OPC client dit doet of is de "achterkant" van het systeem echt compleet anders?

Ik zal eens kijken wat Siemens zelf heeft aan OPC Server software. De reden waarom ik het zelf zou maken is omdat ik dan met 1 stukje software alle handelingen uit kan voeren i.p.v. dat ik de OPC server als gateway gebruik. En als het opzetten van zo'n server heel eenvoudig zou zijn, waarom dan niet.
ItMeAedri schreef op woensdag 20 januari 2021 @ 15:33:
Wat wil je bereiken met de OPC server? Betreft het een stageopdracht of een opdracht van een interne/externe klant?
Dit is een opdracht van een klant. Ik moet een stukje software maken die een signaal van de PLC kan oppikken en daarop kan reageren door bepaalde data te sturen.

Acties:
  • +1 Henk 'm!

  • sprankel
  • Registratie: December 2006
  • Laatst online: 01:34
3raser schreef op woensdag 20 januari 2021 @ 15:46:
[...]


Bedankt voor de info. Ik vind het nog wel interessant om te weten hoe een PLC dan precies met de OPC server communiceert. Is dat vrijwel dezelfde manier als hoe een OPC client dit doet of is de "achterkant" van het systeem echt compleet anders?

Ik zal eens kijken wat Siemens zelf heeft aan OPC Server software. De reden waarom ik het zelf zou maken is omdat ik dan met 1 stukje software alle handelingen uit kan voeren i.p.v. dat ik de OPC server als gateway gebruik. En als het opzetten van zo'n server heel eenvoudig zou zijn, waarom dan niet.
De achterkant is volledig afhankelijk van de PLC en in dit geval Siemens. Gezien je hier in een wereld zit die historisch allemaal op hun eigen privé eiland draait, hun eigen systemen ontwikkeld met 0 support voor andere privé eilanden, hoe het achterliggend werkt is eerder iets wat ze geheim houden.

Een Yokogawa op dat vlak is nog erger, daar is alles achterliggend strikt bedrijfsgeheim maar verwacht niet dat Siemens het je even in geuren en kleuren gaat vertellen hoe het bij hun achterliggend werkt. In de praktijk is dat eerder vooral reverse engineeren.

Het is al vooruitgang te noemen dat ze allemaal een open standaard als OPC ondersteunen.

*onder industry 4.0 word er wel vooruitgang geboekt in het afbouwen van prive eilanden & gesloten systemen maar ze komen van ver.

Edit: ik ken de exacte situatie niet bij Siemens maar als de verwachting is dat je zelf iets kan bouwen waardoor je data kan uitlezen van een Siemens PLC zonder geld (al dan niet indirect) achter te laten bij Siemens, dan vrees ik dat je u verwachtingen gaat moeten bijstellen.

[ Voor 8% gewijzigd door sprankel op 20-01-2021 16:20 ]


Acties:
  • 0 Henk 'm!

  • Steefph
  • Registratie: Juli 2002
  • Laatst online: 29-05 21:58
@sprankel toevallig ben ik met Yokogawa bezig en ik kan je vertellen achterliggend is het echt een drama :X

ExaOPC doet aan memory mapping met de CentumVP. Elke variable moet dus op voorhand bekend zijn waar deze zich in het geheugen bevind. Daarom houden ze het ook liever geheim vanwege makkelijke aanval op de plc.

Ook is er alleen support voor C99 maar, dat is weer een heel ander verhaal

[ Voor 11% gewijzigd door Steefph op 20-01-2021 17:21 ]

Alles is terug te redeneren naar 4


Acties:
  • 0 Henk 'm!

  • sprankel
  • Registratie: December 2006
  • Laatst online: 01:34
Steefph schreef op woensdag 20 januari 2021 @ 17:20:
@sprankel toevallig ben ik met Yokogawa bezig en ik kan je vertellen achterliggend is het echt een drama :X

ExaOPC doet aan memory mapping met de CentumVP. Elke variable moet dus op voorhand bekend zijn waar deze zich in het geheugen bevind. Daarom houden ze het ook liever geheim vanwege makkelijke aanval op de plc.

Ook is er alleen support voor C99 maar, dat is weer een heel ander verhaal
ExaOPC dumpt gewoon de variabelen van een "casette" die op de ExaOPC server draait naar OPC waarbij de bandbreedte software matig sterk word afgeknepen.

Je hoeft helemaal niet meer te weten waar de variabele zit (dat is nog van voor ExaOPC), ze zijn allemaal aanwezig in de "casette" en dus aanwezig op de server waar ExaOPC op draait. Hij negeert overigens compleet wat je voor je variable zet, test het maar uit.

Als je de ExaOPC voldoende reverse engineered kan je de snelheid instelling vinden en dan kan je met ExaOPC snelheden halen waar Yokogawa je 10 keer ExaOPC voor wilt laten kopen, uiteraard aan dikke prijzen. En om de zogenaamde maximum snelheid van ExaOPC te mogen gebruiken, aka het maximale getalletje dat Yokogawa er voor jou inzet, moeten de controllers allemaal minstens versie X zijn, dat is ook allemaal zever.

Maar ssjt, ik heb niets gezegd.

* "casette" is hier een term binnen het Yokogawa systeem, soort van software buffer waar alle variabelen naar worden geschreven.

[ Voor 4% gewijzigd door sprankel op 20-01-2021 17:38 ]


Acties:
  • 0 Henk 'm!

  • Sibrand
  • Registratie: Januari 2011
  • Nu online
Ik heb zelf met een 1500 serie PLC, die kan dienen als OPC server, tweewegs communicatie met een Excel bestand gemaakt (VBA) voor datalogging.
Siemens heeft ook wel enkele voorbeelden voor OPC communicatie op de website staan.

Edit: https://support.industry.siemens.com/cs/document/109748892/opc-ua-client-library-for-microsoft-excel?dti=0&lc=en-WW

[ Voor 35% gewijzigd door Sibrand op 20-01-2021 17:32 ]


Acties:
  • 0 Henk 'm!

  • Steefph
  • Registratie: Juli 2002
  • Laatst online: 29-05 21:58
@sprankel ik heb het ook over die data items welke in de CentumVP gemapped worden. De hele opstelling van HIS en ENG wat een drama is dat. Wij maken zelf apparatuur en dat is zoveel gebruiksvriendelijker. Ook mooi is dat alle c-code aangeleverd door Yokogawa alleen maar Japanse comments heeft |:(

Alles is terug te redeneren naar 4


Acties:
  • 0 Henk 'm!

  • 3raser
  • Registratie: Mei 2008
  • Laatst online: 16:02

3raser

⚜️ Premium member

Topicstarter
Om wat praktijkervaring op te doen heb ik de Prosys OPC UA Simulation Server en de UaExpert client geïnstalleerd. Wat ik er tot nu toe van begrijp is dat je in de server objecten aan kunt maken van een bepaald type die dan zowel door de PLC als door de client gelezen en gewijzigd kunnen worden. De lees- en schrijfrechten zijn zo te zien te beveiligen door middel van gebruikers maar daar begin ik nog maar niet aan. Alle functies als historische data heb ik ook niet nodig dus dat scheelt alvast iets.

Ik heb ook een technisch persoon van Siemens gesproken en de OPC UA server op de PLC zelf is prima te gebruiken en te combineren met de andere PLC die zelf geen OPC server heeft. Dus bedankt voor het duwtje in de goede richting @Steefph. Je kunt PLC's zonder eigen server zonder problemen laten verbinden met die ene PLC die er wel een heeft.

Ondertussen ben ik wat code aan het testen met een library van Github en de resultaten zijn tot nu toe bevredigend.

Bedankt voor alle informatie iedereen. Ik wijs het bericht van Steefph aan als correcte antwoord aangezien het erop lijkt dat dat de OPC server is die we gaan gebruiken.
Pagina: 1