OPC UA koppelen aan Beckhoff TwinCAT
| Product | Beckhoff TwinCAT |
|---|---|
| Categorie | PLC |
| OPC UA-rol | Client en server |
TwinCAT stelt OPC UA beschikbaar via de functie TF6100: een server, een client en een gateway, geconfigureerd op het doelsysteem in plaats van in het PLC-programma. Symbolen worden gepubliceerd via attribuutpragma's in de code, wat de gepubliceerde interface tot een compile-time-beslissing maakt. TF6100 is een gelicentieerde functie, dus bevestig de licentie bij Beckhoff.
Voordat u begint
- De TF6100 OPC UA-functie geïnstalleerd op het target en daarvoor gelicentieerd. Licentiëring op Beckhoff-targets is een echte horde; stel vast welke licentie u nodig hebt en hoe die wordt toegepast vóór de inbedrijfstelling.
- Een TwinCAT-project dat u kunt bouwen en activeren, want symboolpublicatie wordt geregeld door attributen in de broncode en wordt van kracht bij activering.
- Toegang tot de OPC UA-serverconfiguratie van het target, via de Configurator-tool of het configuratiebestand van de server, plus toegang tot het bestandssysteem voor de PKI-map ten behoeve van certificaatwerk.
- Een beslissing over welke runtimepoort u beschikbaar stelt. Een TwinCAT-target host vaak meer dan één PLC-runtime, en elk daarvan is een apart ADS-endpoint dat de server kan publiceren.
Het opzetten
- Installeer en licentieer TF6100 op het targetDe functie moet aanwezig en gelicentieerd zijn op de machine die gaat serveren, en dat is op een Beckhoff-IPC of embedded controller de controller zelf, niet de engineeringlaptop. Controleer de licentiestatus voordat u iets anders gaat debuggen.
- Markeer de symbolen die u wilt publicerenPublicatie is opt-in via attribute pragma's in de declaratie, bijvoorbeeld {attribute 'OPC.UA.DA' := '1'} boven een variabele, een structuur of een hele global variable list, met een bijbehorend access-attribuut dat bepaalt of het symbool leesbaar, schrijfbaar of beide is. De pragma toepassen op een GVL of een structuur publiceert de leden ervan, en zo houdt u de interface klein en beoordeelbaar.
- Bouw de configuratie opnieuw en activeer hemDe pragma's worden in de symboolinformatie meegecompileerd, dus een rebuild en activatie zijn nodig voordat de adresruimte verandert. Een engineer die pragma's bewerkt en zich vervolgens afvraagt waarom de browse-boom onveranderd is, heeft dit vrijwel altijd overgeslagen.
- Richt de server op de runtime en controleer de namespaceConfigureer welk ADS-apparaat en welke runtimepoort de server publiceert en browse vervolgens de resulterende boom. Lees de NamespaceArray en noteer de URI voor de namespace van de runtime; die URI, niet de index, is wat uw clientconfiguratie moet bevatten.
- Rond de certificaatuitwisseling af op het doelsysteemDe server houdt een PKI-directory bij met de gebruikelijke mappen trusted, issuer, rejected en CRL. Verbind één keer met uw client, laat de poging mislukken en verplaats daarna het clientcertificaat op het doelsysteem van de rejected-map naar de trusted-map, en herstart de server als die de trust list cachet. Vertrouw ook aan de clientzijde het servercertificaat.
- Importeer een informatiemodel als de machine er een heeftWaar de geïnstalleerde TF6100-build nodeset-import ondersteunt, laadt u het companion NodeSet2 en koppelt u gepubliceerde symbolen aan de variabelen van het model, zodat de client standaardtypen ziet in plaats van een ADS-symboolboom. Bevestig het ondersteunde importmechanisme voor uw build voordat u er omheen ontwerpt.
- Stem subscriptions af op de realiteit van ADSDe server bemonstert de runtime via ADS, dus uw OPC UA sampling interval wordt begrensd door wat die laag en de taakcyclus kunnen leveren. Zet het publishing interval op de cadans die uw afnemer nodig heeft, pas deadbands toe op analoge waarden en lees de herziene intervallen terug die de server retourneert.
Hoe de adresruimte eruitziet
De standaardadresruimte spiegelt de ADS-symboolboom van de gepubliceerde runtime: een hiërarchie die het device en de runtimepoort volgt, dan de globale variabelenlijsten en programma-instanties, dan de variabelen die u hebt gemarkeerd, met structuurleden genest zoals ze zijn gedeclareerd. Identifiers zijn strings die zijn opgebouwd uit het symboolpad, dus een variabele komt binnen met de volledig gekwalificeerde naam die hij in de code heeft, wat de mapping leesbaar maakt maar uw client koppelt aan de naamgeving in de code. Nieuwere builds kunnen ook een map in device-modelstijl tonen, afgeleid van het Device Information-model. Waar een nodeset is geïmporteerd en gebonden, verschijnen standaard companion-types naast of in plaats van de symboolboom, en dat is de versie waarop u moet aandringen voor elke integratie die u wilt hergebruiken.
De valkuilen
- TF6100 is gelicentieerd, en de licentie leeft op de target. Dit is een inkoop- en planningsrisico en geen technisch risico, en het is dezelfde soort valkuil als de serveroptie van een PLC-leverancier: bevestig de licentie bij Beckhoff voordat u data vastlegt.
- Een variabele hernoemen, hem tussen GVL's verplaatsen of een structuur wijzigen verandert de string-identifier, en de client breekt met BadNodeIdUnknown terwijl er aan de machine niets veranderd is. Behandel de met pragma's gemarkeerde symboolset als een gepubliceerde API met een wijzigingsproces.
- Namespace-indexen worden bij het starten van de server toegekend en kunnen verschuiven als de set gepubliceerde runtimes of de serverconfiguratie verandert. Los ze bij het verbinden op uit de NamespaceArray.
- Certificaatvertrouwen is hier net als overal de grootste praktische horde, met als extra complicatie dat de trust store een directory op de besturing is. Iemand heeft bij de inbedrijfstelling toegang tot het bestandssysteem van die besturing nodig, en die persoon is vaak niet degene die de OPC UA-taak heeft.
- Het write-access-attribuut staat los van publicatie. Een symbool dat alleen-lezen is gepubliceerd, is zichtbaar, accepteert een schrijfverzoek en geeft een Bad-status terug, dus controleer altijd de teruggegeven StatusCode.
- De server leest via ADS, dus een symbool dat één keer per taakcyclus wordt bijgewerkt, kan niet sneller worden gesampled dan die cyclus, welk interval u ook vraagt. Snel gevraagde intervallen leveren CPU-belasting op, geen resolutie.
- Structuren die in hun geheel worden gepubliceerd, kunnen binnenkomen als gestructureerde waarden die uw client moet decoderen. Bevestig dat uw client het typebeschrijvingsmechanisme van de server aankan voordat u ontwerpt rond structuren in plaats van vlakke variabelen.
OEE-data eruit halen
TwinCAT is een van de betere PLC-platformen om OEE-data uit te halen, omdat het pragma-mechanisme de machinebouwer in staat stelt een kleine, bewuste interface te publiceren: een toestandsvariabele, een goed- en een afkeurteller, een fout- of redencode, een cyclustijdstempel. Dring aan op die interface in plaats van op een bulkdump van symbolen. Aantallen moeten in de PLC als tellers worden bijgehouden; flankdetectie van een boolean op OPC UA-samplesnelheden mist korte cycli, omdat uw sampling begrensd wordt door de taakcyclus en het publishing interval. Als de bouwer een machinery nodeset heeft geïmporteerd en symbolen aan een standaard state machine en teller heeft gekoppeld, worden beschikbaarheid en telmapping overdraagbaar en kunt u de client hergebruiken op machines van andere leveranciers. Geplande productietijd, ploegenkalenders en standaardcyclustijden zitten niet in de besturing.
Laatst geverifieerd op 7 september 2026 tegen OPC UA 1.05.07. OPC UA Connect is een educatieve bron en is niet gelieerd aan de OPC Foundation.