OPC UA koppelen aan Siemens S7-1500
| Product | Siemens S7-1500 |
|---|---|
| Categorie | PLC |
| OPC UA-rol | Server |
De S7-1500 heeft een OPC UA-server ingebouwd in de CPU-firmware, in te schakelen in TIA Portal en bereikbaar op opc.tcp://<plc-ip>:4840. Het addertje is commercieel en niet technisch: voor de server is normaal gesproken een runtimelicentie of optie vereist, en zowel die licentie als het minimale firmwareniveau moeten bij Siemens worden bevestigd.
Voordat u begint
- Een CPU-firmwareniveau dat de OPC UA-server bevat, en de runtimelicentie of optie die hem activeert. Geen van beide kunt u veilig afleiden uit een datasheet die u ooit las; beide hangen af van het exacte bestelnummer van de CPU.
- TIA Portal in een versie die past bij de CPU-firmware. Een project dat op een oudere TIA-versie is geëngineerd, toont mogelijk niet de serverinstellingen die u zoekt.
- De licentie moet aanwezig zijn op de CPU voordat de server werkt. Behandel licentie-inkoop als doorlooptijd in de projectplanning, niet als een configuratiestap die u op de dag van inbedrijfstelling doet.
- Een netwerkpad naar TCP 4840 vanaf waar de client draait, of een reverse-connect-opzet als de CPU onder een Purdue-laaggrens staat die alleen uitgaande verbindingen toestaat.
- Een gedisciplineerde klok. De CPU valideert de geldigheidsperiodes van certificaten, dus klokafwijking tussen PLC en client presenteert zich als een certificaatfout in plaats van als een tijdprobleem.
Het opzetten
- Schakel de server in bij de CPU-eigenschappenOpen in de apparaatconfiguratie de CPU-eigenschappen en zoek de OPC UA-serverinstellingen. Schakel de server in en noteer het endpoint dat TIA meldt, normaal opc.tcp://<plc-ip>:4840. Stel de application name bewust in: die werkt door in de ApplicationUri en in het eigen application instance certificate van de CPU, en hem later wijzigen maakt elke vertrouwensrelatie die u hebt opgebouwd ongeldig.
- Bepaal per tag wat beschikbaar wordt gesteldPLC-tags en datablokelementen hebben toegankelijkheidsattributen die bepalen of ze zichtbaar zijn voor HMI en OPC UA en of ze beschreven mogen worden. Een tag waarvan het zichtbaarheidsattribuut uitstaat, verschijnt eenvoudigweg niet in de adresruimte; een tag die zichtbaar maar niet schrijfbaar is, verschijnt en weigert vervolgens de write. Stel deze attributen in als een bewuste interfacebeslissing, niet door de standaardwaarden te laten staan.
- Bouw een server interface in plaats van het hele programma bloot te stellenIn TIA kunt u een server interface definiëren: een samengestelde set nodes met namen die u kiest, losgekoppeld van interne symboolnamen. Doe dat. Het geeft u een stabiel contract, zodat interne refactoring van het programma de client niet breekt, en het houdt de adresruimte klein genoeg om door een embedded server snel te laten doorbladeren.
- Map een companion specification op de interface als u er een hebtImporteer het companion NodeSet2-bestand met SiOME, map PLC-tags op de variabelen van het model en exporteer het resultaat terug naar het TIA-project als server interface. De client browst dan MachineIdentificationType en een state machine in plaats van een datablokboom, en dezelfde clientcode werkt op de volgende machine.
- Configureer security en certificaten voordat u data configureertKies de security policies en message security modes die de CPU zal aanbieden, beslis tussen anonieme en username-identity-tokens, en genereer het servercertificaat van de CPU via de globale beveiligingsinstellingen van het project. Het certificaat moet elke hostnaam en elk IP-adres dat een client daadwerkelijk zal aanroepen in de Subject Alternative Name dragen, plus de ApplicationUri als URI-entry.
- Compileer, download, browse daarna met een onafhankelijke clientDownload de hardwareconfiguratie, verbind vervolgens met UaExpert of opcua-commander op een endpoint met security None om bereikbaarheid aan te tonen, en pas daarna op een gesigneerd en versleuteld endpoint. De eerste beveiligde poging mislukt normaal met BadCertificateUntrusted; verplaats het clientcertificaat van de rejected-lijst van de CPU naar de trusted-lijst en vertrouw het CPU-certificaat aan de clientzijde.
- Lees de NamespaceArray en los indexen at runtime opLees de NamespaceArray van de server één keer per verbinding, bouw een map van namespace-URI naar index, en bewaar namespace-URI plus identifier in uw configuratie. Bewaar nooit het ruwe ns=-nummer. Dit is wat voorkomt dat de volgende programmadownload uw client breekt.
- Controleer de eigen limieten van de CPU voordat u subscriptions dimensioneertDe technische gegevens van de CPU vermelden het maximum aantal sessies, subscriptions en monitored items en de minimaal ondersteunde sampling en publishing intervals. Dimensioneer de client op die getallen, en onthoud dat de server de CPU deelt met het cyclische programma.
Hoe de adresruimte eruitziet
Tenzij u een server interface bouwt, is de adresruimte een Siemens-vormige boom in plaats van een companion-specificatiemodel: een node genoemd naar de PLC, met daaronder mappen voor globale en instance-datablokken, ingangen, uitgangen, geheugen, tellers en timers. Identifiers zijn strings die de TIA-symboolnamen spiegelen, dus een datablokelement komt binnen als iets in de trant van ns=3;s="MyDB"."Speed", met array-elementen geïndexeerd in de identifier. Structuren die in het programma gedeclareerd zijn, verschijnen als gestructureerde waarden, die uw client alleen kan decoderen als hij het door de server gekozen mechanisme voor typebeschrijving ondersteunt. Een server interface vervangt dit alles door de namen en hiërarchie die u hebt gedefinieerd, en een met SiOME gemapt companion-model vervangt het door standaardtypes onder de standaard namespace-URI's.
De valkuilen
- De licentie is het meest voorkomende planningsrisico van de hele integratie. Een server die niet start omdat een optie nooit is besteld, ziet er de eerste middag precies uit als een firewallprobleem. Bevestig de actuele licentie- en firmware-eisen bij Siemens voordat iemand tijd voor inbedrijfstelling inplant.
- Namespace-indexen worden bij serverstart toegekend en kunnen verschuiven na een programmadownload of een firmwarewijziging. Een client met een hardcoded ns=-nummer faalt dan met BadNodeIdUnknown op nodes die nog gewoon aanwezig zijn. Los indexen bij het verbinden op uit de NamespaceArray.
- De CPU het clientcertificaat laten accepteren is in de praktijk de grootste deploymenthobbel, en het is een tweezijdige operatie: de client moet de CPU vertrouwen en de CPU moet de client vertrouwen. Plan een trust-list-procedure, of een PKI, vóór de eerste machine in plaats van na de tiende.
- Een tag die zichtbaar is maar niet als schrijfbaar gemarkeerd, accepteert het writeverzoek en retourneert een Bad-status. Lees tijdens de inbedrijfstelling na elke write altijd terug, en controleer de geretourneerde StatusCode in plaats van erop te vertrouwen dat er geen exception is opgetreden.
- Embedded servers hebben veel lagere limieten voor sessies, subscriptions en monitored items dan een pc-gebaseerde server. Drie clients die elk hun eigen sessie met hun eigen publishing interval openen, kunnen een CPU uitputten waar één goed ontworpen client niets van zou merken.
- Het gedrag van tijdstempels op PLC-embedded servers is vaak mager: SourceTimestamp is soms niet informatiever dan ServerTimestamp, en de CPU-klok kan lokale tijd zijn zonder offset. Bepaal welk tijdstempel u opslaat, controleer wat de CPU werkelijk invult, en houd NTP overal actief.
- Geldigheidsperioden van certificaten worden afgedwongen tegen de CPU-klok. Een CPU die zijn klok kwijtraakte tijdens een lange spanningsloze periode, wijst geldige certificaten af met een tijdfout totdat de klok is gecorrigeerd.
OEE-data eruit halen
U kunt beschikbaarheid, tellingen en redenen uit een S7-1500 halen, maar alleen wat het programma berekent. Standaard is niets gestandaardiseerd: de toestand komt uit welke boolean of integer de programmeur ook heeft gebruikt, de tellingen uit welke teller er bestaat, en de redenen uit foutwoorden. Vraag om een toestandsmodel en een teller in de PLC in plaats van in uw client flankdetectie te doen op een running-bit, want de client ziet alleen bemonsterde waarden en mist korte stops tussen de samples. Als de machinebouwer te overtuigen is een server interface te publiceren die is gemapt op Machinery- of MachineTool-types, worden beschikbaarheid en tellingen overdraagbaar tussen leveranciers en houdt de mapping op machinespecifiek werk te zijn. Geplande productietijd, ploegenkalenders, standaard cyclustijden en ordercontext zitten niet in de CPU en moeten uit MES of ERP komen.
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.