OPC UA Client configureren op PLCnext Control: Stapsgewijze handleiding
Firmwareversie 2023.0 bevat een langverwacht OPC UA Client-onderdeel. Het PLCnext Info Center bevat een goede technische referentie voor deze functie.
Deze tutorial is een stapsgewijze handleiding die laat zien hoe je de OPC UA-client configureert in een PLCnext Control-apparaat zodat het data uitwisselt met een OPC UA-server.
Wat je nodig hebt:
- Een PLCnext Control-apparaat met firmwareversie 2023.0 of later om als OPC UA-client te fungeren. Als je de firmware op je PLCnext Control-apparaat moet upgraden, kun je de procedure volgen die in het Info Center getoond wordt.
- PLCnext Engineer versie 2023.3 of later.
- Een OPC UA-server. Dit artikel gebruikt een tweede PLCnext Control-apparaat als OPC UA-server, maar je kunt hetzelfde PLCnext Control-apparaat gebruiken als je voor de client gebruikt, of alternatief een derde-partij OPC UA-server die draait (bijvoorbeeld) op een Windows-pc. Voor derde-partij servers moet je zelf uitzoeken hoe je de "server"-stappen hieronder aanpast voor jouw server.
- UaExpert van Unified Automation, nodig om informatie te krijgen over OPC UA-server-tags die we in de configuratie van onze eigen OPC UA-client zullen gebruiken.
Een van de kernpunten om te onthouden bij het configureren van OPC UA-communicatie is dat, om veiligheidsredenen, de OPC UA-client en de OPC UA-server elkaar moeten vertrouwen. Daarom moeten beveiligingscertificaten tussen de client- en serverapparaten worden uitgewisseld. Deze procedure omvat het springen tussen het client- en serverapparaat, wat wat verwarrend kan zijn. Als je suggesties hebt om de procedure te vereenvoudigen (zonder de beveiligingscontroles uit te schakelen!), voel je vrij om ze in de reacties toe te voegen.
Procedure
OPC UA-serverapparaat
-
Open de Web-Based Management (WBM)-site door naar het IP-adres van de PLC te surfen.
-
Selecteer het System Services-item uit het Configuratiemenu.
-
Activeer de OPC UA Server-service, als deze nog niet ingeschakeld is.
-
Druk op de Apply and reboot-knop indien nodig.
-
Open PLCnext Engineer.
-
Maak een nieuw PLCnext Engineer-project met de sjabloon voor je PLCnext Control-apparaat.
-
Stel het IP-adres van de PLC in in het PLCnext Engineer-project.
-
Op de OPC UA Server-configuratiepagina:
-
stel de DNS name / IP address in op de DNS-naam of het IP-adres van de PLC, afhankelijk van of de OPC UA-client de server zal benaderen via een DNS-naam of het IP-adres van de server. Deze informatie zal opgenomen worden in het beveiligingscertificaat van de OPC UA-server. Veel OPC UA-clients zullen het servercertificaat verwerpen als deze informatie in het certificaat niet overeenkomt met de server-URL.
-
stel Visibility of variables in op Marked. Dit betekent dat alle variabelen gemarkeerd met het OPC-attribuut bereikbaar zijn via de OPC UA-server.
-
-
Maak variabelen aan die door de OPC UA-server blootgelegd worden. Zorg dat het OPC-vinkje aangevinkt is voor die variabelen. In het onderstaande voorbeeld zijn twee variabelen aangemaakt in het Main-programma.
-
Voeg logica toe om de Output-variabele te wijzigen wanneer een nieuwe Input-waarde wordt ontvangen. In dit voorbeeld voert het Main-programma de volgende code uit:
Server_Data_Out := Server_Data_In + 1; -
Schrijf en start het project.
Let op: PLCnext Engineer versie 2025.0 en later bevat een "browse"-functie die gebruikt kan worden om variabele-items in de OPC UA-client aan te maken. Als die browse-functie gebruikt wordt, is het niet nodig om UaExpert te gebruiken om informatie over servervariabelen te verkrijgen, en kunnen de volgende drie stappen overgeslagen worden.
-
Gebruik UaExpert om verbinding te maken met de OPC UA-server met de PLC-gebruikersnaam en -wachtwoord. Je zou een waarschuwing moeten zien dat het certificaat "Untrusted" is, maar er zouden geen andere waarschuwingen moeten zijn.
-
Vertrouw het servercertificaat, permanent of alleen voor deze sessie.
-
Schrijf voor elke servervariabele de naam van de Node ID en de Namespace voor die variabele op.
-
Open de WBM-site voor de Server-PLC opnieuw.
-
Selecteer het Certificate Authentication-item uit het Beveiligingsmenu.
-
Selecteer het Trust Stores-tabblad.
-
Download het certificaat uit de OPC UA-self-signed [server] Identity Store. Het sleutelpaar hoeft niet gedownload te worden.
OPC UA-clientapparaat
-
Open de Web-Based Management (WBM)-site door naar het IP-adres van de PLC te surfen.
-
Selecteer het System Services-item uit het Configuratiemenu.
-
Activeer de OPC UA Client-service, als deze nog niet ingeschakeld is.
-
Druk op de Apply and reboot-knop indien nodig.
-
Wanneer de herstart voltooid is, log weer in op de WBM-site en selecteer het Certificate Authentication-item uit het Beveiligingsmenu.
-
Selecteer het Trust Stores-tabblad.
-
Voeg het OPC UA-self-signed [server] certificaat (eerder gedownload) toe aan de Trust Store met de naam OPC UA Client. Nu vertrouwt de OPC UA-client het beveiligingscertificaat dat de OPC UA-server gebruikt om zijn identiteit te verifiëren. Deze stap moet herhaald worden elke keer dat het servercertificaat verandert.
-
Selecteer het Identity Stores-tabblad.
-
Download het certificaat uit de OPC UA Client self-signed Identity Store. Het sleutelpaar hoeft niet gedownload te worden.
OPC UA-serverapparaat
-
Open de Web-Based Management (WBM)-site door naar het IP-adres van de PLC te surfen.
-
Selecteer het Certificate Authentication-item uit het Beveiligingsmenu.
-
Selecteer het Trust Stores-tabblad.
-
Voeg het OPC UA Client self-signed certificaat (eerder gedownload) toe aan de Trust Store met de naam OPC UA-configurable. Nu vertrouwt de OPC UA-server het beveiligingscertificaat dat de OPC UA-client gebruikt om zijn identiteit te verifiëren. Deze stap moet herhaald worden elke keer dat het clientcertificaat verandert.
OPC UA-clientapparaat
-
Open PLCnext Engineer.
-
Maak een nieuw PLCnext Engineer-project met de sjabloon voor je PLCnext Control-apparaat. Als je hetzelfde apparaat gebruikt voor zowel de OPC UA-client als de OPC UA-server, dan wordt hetzelfde PLCnext Engineer-project gebruikt.
-
Stel het IP-adres van de PLC in in het PLCnext Engineer-project.
-
Alleen vereist voor PLC's met firmwareversies vóór 2023.6: Op de OPC UA Server-configuratiepagina, stel Visibility of variables in op Marked. Ja, het lijkt vreemd om deze OPC UA-serverinstelling te vereisen voor de OPC UA-client. Dit is opgelost in firmwareversies 2023.6 en later.
-
Maak variabelen aan die verbonden worden met variabelen in de OPC UA-server. Alleen vereist voor PLC's met firmwareversies vóór 2023.6: Zorg dat het OPC-vinkje aangevinkt is voor die variabelen (het vinkje hoeft niet aangevinkt te zijn voor PLC's met firmwareversie 2023.6 of later).
In het onderstaande voorbeeld zijn twee variabelen aangemaakt in het Main-programma.
-
In het tabblad OPC UA Client Connections, voeg één server en twee variabelengroepen toe, zoals hieronder getoond.
De server-URL, gebruikersnaam en wachtwoord moeten aangepast worden aan de OPC UA-server die je gebruikt.
-
In de "Subscribe"-variabelengroep, voeg één variabelmapping toe, zoals hieronder getoond.
Dit overdraagt automatisch de waarde van de externe variabele (op de OPC UA-server) naar de lokale variabele in het PLCnext Engineer-project.
-
In de "Write"-variabelengroep, voeg één variabelmapping toe, zoals hieronder getoond.
Dit overdraagt automatisch de waarde van de lokale variabele in het PLCnext Engineer-project naar de externe variabele (op de OPC UA-server).
-
Schrijf en start het PLCnext Engineer-project.
-
In Debug-modus, wijzig de waarde van de variabele
Client_Data_out. De waarde wordt geschreven naar de variabeleServer_Data_Inop de OPC UA-server. Die waarde wordt verhoogd door de server en geschreven naar de variabeleServer_Data_Out. De waarde van die variabele wordt vervolgens overgedragen naar de variabeleClient_Data_Inop de client.
Werkt het niet?
Controleer de Troubleshooting Guide in het PLCnext Info Center (onderaan de pagina).
Veelgestelde vragen
V: Kan de client verbinden met een OPC UA-server met certificaat/sleutel-authenticatie?
A: Nee, op dit moment niet.
V: Hoe slaat de OPC UA-client het serverwachtwoord op?
A: Op dit moment wordt het OPC UA-serverwachtwoord als plain text opgeslagen in het clientconfiguratiebestand, maar de PLCnext Runtime-ontwikkelaars werken aan een veiligere wachtwoordopslagmethode.
V: Kan ik kwaliteitsinformatie (bijv. Status Code, Tijdstempel) krijgen voor data gelezen van een OPC UA-server?
A: Op dit moment niet, sorry.
Dit artikel is bijgewerkt op 24.03.2025 om informatie over de Server Browse-functie op te nemen die nu beschikbaar is in PLCnext Engineer.
Bijlage: Bestandsgebaseerde configuratie
De OPC UA-clientconfiguratie in PLCnext Engineer wordt op de controller opgeslagen in XML-formaat. Voor applicaties die geen PLCnext Engineer gebruiken, is het mogelijk om de OPC UA-client te configureren door de XML-configuratie direct op de controller te schrijven.
De configuratie die in dit voorbeeld is voorbereid, wordt weergegeven in de volgende XML-bestanden:
-
Eventuele vereiste wijzigingen in de standaard OPC UA-clientinstellingen zijn gedefinieerd in het bestand
/opt/plcnext/projects/current/Services/OpcUA/Modules/Client/client.module.config:<?xml version="1.0" encoding="utf-8" standalone="yes"?> <OpcUAClientModuleConfigurationDocument schemaVersion="1.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.phoenixcontact.com/schema/opcuaclientmoduleconfig" xmlns="https://www.phoenixcontact.com/schema/opcuaclientmoduleconfig"> <Application> <CertificateStore> <SelfSignedIdentityStoreName>OPC UA Client self-signed</SelfSignedIdentityStoreName> <GivenIdentityStoreName>OPC UA Client</GivenIdentityStoreName> <TrustStoreName>OPC UA Client</TrustStoreName> </CertificateStore> <SessionSecurity> <ApplicationAuthentication>false</ApplicationAuthentication> <ApplicationUriCheck>true</ApplicationUriCheck> <CertificateHostnameCheck>true</CertificateHostnameCheck> <CertificateTimeCheck>true</CertificateTimeCheck> <CertificateIssuerTimeCheck>true</CertificateIssuerTimeCheck> <PasswordEncryptionCheck>true</PasswordEncryptionCheck> </SessionSecurity> <Timeouts> <SessionTimeout>1200000</SessionTimeout> <ConnectTimeout>5000</ConnectTimeout> <WatchdogTimeout>5000</WatchdogTimeout> <CallTimeout>10000</CallTimeout> </Timeouts> </Application> </OpcUAClientModuleConfigurationDocument> -
OPC UA-clientverbindingen zijn gedefinieerd in het bestand
/opt/plcnext/projects/current/Services/OpcUA/Modules/Client/Configs/ clientconnections.xml:<?xml version="1.0" encoding="utf-8"?> <eUAClientConfigurationDocument xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:uax="https://opcfoundation.org/UA/2008/02/Types.xsd" xmlns="https://phoenixcontact.com/OpcUA/PLCnext/UAClientConfig/Types.xsd"> <eUAClientConfiguration> <Name>ClientConnectionsConfiguration</Name> <NamespaceArray> <uax:String>https://phoenixcontact.com/OpcUA/PLCnext/GlobalDataSpace/</uax:String> </NamespaceArray> <ServerConnections> <eUAClientServerConnection> <EncodingMask>3</EncodingMask> <Endpoint> <uax:EndpointUrl>opc.tcp://192.168.1.10:4840</uax:EndpointUrl> <uax:SecurityMode>Sign_2</uax:SecurityMode> <uax:SecurityPolicyUri>https://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</uax:SecurityPolicyUri> </Endpoint> <UserTokenType>UserName_1</UserTokenType> <UserName>admin</UserName> <Password>xxxxxxxx</Password> </eUAClientServerConnection> </ServerConnections> <VariableGroups> <eUAClientVariableGroup> <GroupType>Write_1</GroupType> <CycleTime>100</CycleTime> <NodeMappings> <eUAClientNodeMapping> <LocalVariable> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Client_Data_Out</uax:Identifier> </LocalVariable> <RemoteVariableDescriptor> <EncodingMask>2</EncodingMask> <ServerIndex>1</ServerIndex> <NodeId> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Server_Data_In</uax:Identifier> </NodeId> </RemoteVariableDescriptor> </eUAClientNodeMapping> </NodeMappings> </eUAClientVariableGroup> <eUAClientVariableGroup> <GroupType>Subscribe_0</GroupType> <CycleTime>100</CycleTime> <NodeMappings> <eUAClientNodeMapping> <LocalVariable> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Client_Data_In</uax:Identifier> </LocalVariable> <RemoteVariableDescriptor> <EncodingMask>2</EncodingMask> <ServerIndex>1</ServerIndex> <NodeId> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Server_Data_Out</uax:Identifier> </NodeId> </RemoteVariableDescriptor> </eUAClientNodeMapping> </NodeMappings> </eUAClientVariableGroup> </VariableGroups> </eUAClientConfiguration> </eUAClientConfigurationDocument>Dit bestand gebruikt de Namespace en Node ID-informatie die eerder vastgelegd is (met UaExpert) om te specificeren welke servervariabelen de client zal benaderen.
-
In het bovenstaande bestand, pas het volgende aan voor jouw applicatie:
-
Het element
uax:EndpointUrlmoet het IP-adres (of de DNS-naam) van jouw OPC UA-server bevatten. -
De
UsernameenPasswordelementen moeten de inloggegevens bevatten die vereist zijn voor de OPC UA-server.
BELANGRIJK: In dit voorbeeld bevatten de Node ID-strings in UaExpert de tekst
ns=6. In het XML-bestand hierboven is dit gewijzigd inns=1, omdat de "namespace"-parameter (ns) een index is in de lijst met namespaces op de lokale client. In dit voorbeeld is de Namespace-naam die gekopieerd is uit UaExpert de eerste (en enige) namespace in de lijst met namespaces in onsclientconfig.xml-bestand. -
De PLCnext Runtime moet herstarted worden na wijzigingen in de OPC UA-clientconfiguratiebestanden.
Industriële technologie
- 10 Alledaagse Toepassingen van Aluminium Die U Misschien Niet Kende
- Digitale fabrieken: Slimme productie voor Industrie 4.0
- 5 Bewezen Strategieën om Uw Exportcontrolesysteem te Versterken
- Elektrisch ontwerp optimaliseren met E3.schematic functies
- 36 Toonaangevende Barcode Scanner Apps voor iOS & Android – Efficiënte Inventarisscanning
- Camcode Benoemt Rob Leibrandt Tot Senior Market Manager Voor Wereldwijde Groei
- Drie toonaangevende voorbeelden van geavanceerde manufacturing-technologie
- Werving herdenken: Waarom moderne werving de klassieke Cartesiaanse benadering verslaat
- 3D-printen begrijpen: principes, typen en sleuteltoepassingen
- Top 50 Werkorderbeheer Software-oplossingen voor Efficiënte Operaties
- AC vs DC Generatoren: Belangrijkste Verschillen Uitgelegd