Support OPC Server
Übersicht: OPC optimieren, OPC mit Wonderware, SPS Programmänderungen, OPC Classic über OPC UA, OPC Core Componenten, OPC Tunnel, OPC und Excel, OPC UA Stationssuche, OPC UA viele Verbindungen, OPC UA alarm, OPC UA reverse connections, OPC zur Siemens S7 200, OPC zur Siemens Logo, SPS Variablen mit MQTT nutzen, MQTT 5 and variable types, OPC zur Mitsubishi Melsec Q, OPC zu einer Mitsubishi FX5, Modbus Server, BACnet alarm requirements.
Antwort:
Oft liegt der Grund in vielen langen Dingen wie Fehlertexte oder Rezepten. Diese Dinge werden normalerweise nur dann in der SCADA Software gebraucht wenn eine Triggerbedingung erfüllt wird. Bei Fehlertexten ist das zum Beispiel die Fehlernummer. Das SCADA System meldet alle diese Elemente an, ein normaler OPC Server holt alle diese Daten zyklisch. Das belastet die Steuerung. Einfach die Elemente nur in der SCADA anzumelden wenn der Trigger sich ändert ist komplex und immer noch zu langsam.
Lösung für Störtexte: Definieren Sie unter "Tabellen" "Wizard lange Daten" eine neue Optimierung, nennen Sie die z.B. "Störtexte".
Nehmen Sie die Fehlernummer als Trigger (Gruppe 1). In Gruppe 2 geben Sie den Text an. Die Umlenkung des OPC Elementes auf die Optimierung (Alias) wird automatisch mit angelegt.
Antwort:
Nutzen Sie diese Dokumentation. Sie finden die auch im Software Downloadbereich und unter den Handbüchern.
Antwort:
Der OPC Server prüft die SPS alle 10 Sekunden auf Änderungen. Wird eine Änderung erkannt so aktualisiert der Server alles nötige. Trotzdem ist es nicht empfehlenswert in die SPS zu schreiben wenn intensiv am SPS Programm gearbeitet wird. Lesen ist aber immer unkritisch.
Antwort:
Im Tani OPC Server legen Sie eine OpcPipe oder OPC UA Client Verbindung an. Das Ziel ist Ihr OPC UA Gerät. In Ihrem OPC DA Client erreichen Sie das Gerät ganz normal über Browsing: Tani OPC Server, dann die Verbindung zu Ihrem Gerät, dann die gewünschten Variablen.
Antwort:
Zum Entfernen der OpcCore Components ist es wichtig, dass sie vorher unregistriert werden und dass kein Programm diese Komponenten benutzt. Dazu erledigt die Batchdatei "OpcUr.cmd". Die sollte nach c:\Windows\SysWOW64 kopiert werden. Starten Sie eine Eingabeaufforderung als Administrator und wechseln Sie in das Verzeichnis mit "cd c:\Windows\SysWOW64". Der Batch kennt den Parameter -r der die Komponenten unregistriert und neu registriert ohne sie zu löschen. Beim Ausführen werden Dialoge angezeigt, bitte bestätigen Sie die. Es können Fehler auftreten falls eine der OPC DA Core Dateien noch in Benutzung ist, dann kann sie nicht gelöscht werden. Ein Booten des PCs und erneuter Start von "OpcUr.cmd" könnte das lösen. Wenn das nicht zum Ergebnis führt dann muss das entsprechenden Programm, welches die Komponenten benutzt, gestoppt werden und die DLL von Hand gelöscht werden. Nach dem Entfernen solte der PC sicherheitshalber gebootet werden. Eine Neuinstallation des Tani OPC Servers oder der Tani PlcEngine installiert die Komponenten neu. Alle Software die OPC DA nutzt arbeitet nun ebenfalls. Es sollten nun alle Effekte mit den OPC DA Zugriffsrechten gelöst sein.
Antwort:
Mit dem OPC Tunnel der in allen OPC Servern eingebaut ist.
Das schnelle Protokoll dazu ist OpcPipe, Sie können aber auch OPC UA nutzen.
Ihr OPC DA Client greift auf den lokalen OPC Server zu. Der tunnelt mit OpcPipe zum Ziel OPC Server. Der Zielserver greift als OPC DA Client auf den Ziel OPC DA Server zu.
Antwort:
Nutzen Sie dieses Beispiel.
Antwort:
Unter Windows muss der Bonjour Dienst Version 2.0 installiert sein, zusätzlich muss der UDP Port 5353 in der Firewall erlaubt sein.
Unter Linux muss der avahi Daemon und der avahi Client installiert sein. Sie finden den im Paketmanager Ihrer Distribution.
Der UDP Port 5353 in der Firewall muss offen sein.
Achten Sie darauf nicht mehrere OPC UA Discovery Systeme parallel zu installieren.
Wenn Sie einen externen Discovery Server nutzen so müssen Sie dort oft die Zertifikate beglaubigen damit der Zugriff arbeitet.
Wenden Sie sich an den Hersteller des Discovery Servers für Detailfragen.
Antwort:
Die meisten OPC UA Clients benutzen beim Verbindungsaufbau folgendes Schema:
- Ip-Verbindung + Secure-Channel aufbauen (immer unverschlüsselt)
- Browse Endopints
- Secure-Channel + IP-Verbindung schließen
- Ip-Verbindung + Secure-Channel erneut aufbauen (falls nötig verschlüsselt)
- Session aufbauen (= Login)
- Browse, Item anmelden, ...
Dies ist notwendig, da zum Aufbau der verschlüsselten Verbindung Informationen gebraucht werden, die via "Browse Endopints" Telegramm geholt werden müssen. Dies stellt einen Schwachpunkt des OPC UA Protokolls dar, kann also nur durch ein grundlegend anderes Protokoll gelöst werden.
Der Tani OPC UA Server benötigt nun nach einem Verbindungsaufbau etwas Zeit (im ms-Bereich) um
Aufräumarbeiten durchzuführen und die betreffende Rückgratstruktur für den nächsten
Verbindungsaufbau vorzubereiten. Wenn nun nur noch eine Verbindung frei ist, wird diese durch das
"Browse Endpoint" benutzt und steht dann kurzzeitig nicht zur Verfügung. Der Client bekommt in
dieser Zeit ein TCP RST beim Verbindungsversuch. Das fängt sich zwar nach kurzer Zeit. Aber wenn der
Client das Schema wieder vom Anfang beginnt, wird die Daten-Verbindung nie zustande kommen.
Unsere OPC UA Client Bibliothek verbessert das, indem die "Browse Endopints" Verbindung nur genutzt
wird, wenn es nötig ist (unverschlüsselt nie, verschlüsselt nur einmal).
Die Empfehlung lautet daher, immer "einige" UA Server Verbindungen mehr einzutragen als Clients
erwartet werden. Dadurch wird dieses Problem umgangen.
Antwort:
The Tani OPC UA alarm and conditions are working as in the OPC UA specification talks about. Additionally all variables reflecting the alarms and conditions are offered in the variables tree all OPC programs can browse.
Create the alarm with XML file
The example XML file contains a "Test-Alarm" of type ExclusiveLevelAlarmType (in folder Objects/Tani-Example). To configure it, the following properties must be written:
- InputNode: - write to the NodeId of the variable that should be monitored (for example the default test variable: ns=1;s=Memory.TestInteger).
- HighHighLimit, HighLimit, LowLimit, LowLowLimit: - write to the alarm limits; any value outside of these defined limits triggers the alarm.
Finally enable the alarm:
- by calling the "Enable" method (over OPC UA)
- or by writing EnabledState/Id to true (locally in logic tables or with status variables, or over OPC UA)
To monitor the alarm:
- either listen to events on the "Server" object,
- or monitor the state variables of the alarm object (ActiveState, ...)
- or (for debugging purposes) monitor EnabledState/EffectiveDisplayName
To create more alarms, use one of these methods:
- create a XML file, instantiate an alarm object and configure all needed properties via XML
- create a XML file, instantiate an alarm object and configure all needed properties via logic tables
- create the object with the Tani Configuration and configure all needed properties via logic tables
Antwort:
OPC UA supports connections for reaching an OPC UA server which is behind NAT as an example. In this cases the UA server initializes the network connection to the client.
The necessary configuration settings are shown i the "Expert settings" choosen in the OPC UA Settings of the connection
On the UA Server set the checkmark "Reverse Connect". Enter the IP address of the client machine in the reverse connection part. Mostly let the "Endpoint URL" IP address as 0.0.0.0
On the UA client side also set the checkmark "Reverse Connect". Enter the IP address of the server machine in the reverse connection part. Mostly let the "Endpoint URL" IP address as 0.0.0.0
Do not use a IP port which is handled by any other connection of the client or the server nachine.
Antwort:
Nutzen Sie dieses Beispiel. Es existiert nur ein Datenbaustein, der hat die Nummer 1.
Antwort:
Eine Logo ist eine Siemens S7 300 kompatible SPS. Oft findet die automatische TSAP Suche die Logo. Falls der TSAP in der Programmierung der Logo anders vergeben wurde müssen Sie die TSAP von Hand eingeben.
Antwort:
Zwei Wege gibt es:Konfigurieren Sie einen MQTT Broker mit der "Den '$topics/' Baum zulassen" Funktionalität.
Um in Ihrem MQTT Client die Variable Memory.TestInteger zu bearbeiten registieren Sie"$topics/Memory/TestIngeger"
. In der Status Variable Funktion der grafischen OPC Server Konfiguration zeigt"MyMQTTclientConectionName.$topics/Memory/TestIngeger"
das Element,
Idealerweise wählen Sie JSON oder XML als MQTT Datenformat. Dann werden die Daten mit dem entsprechenden Datenformat und dem Wert gezeigt. Sie können damit auch strukturierte Daten nutzen.
Neue Werte kommen immer wenn der Datenwert sich ändert.
Variablen können auch geschrieben werden.Den Zugriff grenzen Sie mit den Zugriffslevels der Verbindung ein.
Offer the variables assigning symbols to the MQTT connection using a specific item syntax. An example is
MyVariable{{Int 32}}
for a reading 32 bit signed variable. Reading structured data follow this example:
MyStructuredVariable{{Structure:MyStructure}}
Using structure mostly needs JSON or XML choosen ion the data format of the MQTT connection.
Create a MQTT client or server (broker) connection
Assign PLC variables to this connection.
Now the defined variables can be read over MQTT.
If MQTT needs sending variables on a trigger condition as a value change a logic table is required. Logic tables are included in the PLC Engine and OpcEngine products.
Antwort:
Offer the variables using the datatype names as
Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, String, Float, Double, DateTime.
Optional modifiers are
BigEndian, LittleEndian, Array,
BitArrayLength1, BitArrayLength2, BitArrayLengt31 ,BitArrayLength4, BitArrayLength5, BitArrayLength6, BitArrayLength7.
The defines item syntax used in symbolic variables - example is MyVariable{{Int 32}} - will be converted to the datatype names above.
Create a MQTT client or server (broker) connection, choose MQTT 5.
Assign PLC variables to this connection.
Antwort:
Diese Bilder zeigen die Einstellungen in der SPS und im OPC Server (die IP Adresse müssen Sie natürlich für Ihre Anlage anpassen)
Antwort:
Diese Bilder zeigen die Einstellungen in der SPS und im OPC Server (die IP Adresse müssen Sie natürlich für Ihre Anlage anpassen)
Doppelclick auf dem PLC Module icon.
Antwort:
Create a Modbus server with "New Connection", "Data Server", "PLC Emulation".
Choose "Modbus", choose the port of the server.
Choose the Modbus node address. If multiple nodes are needed enable Emulate Multiple Slaves.
Define the areas to emulate and the amount of elements in an area. If multilpe nodes are enabled each node offers the elements separately.
Use the item syntax directly or define symbols in the Modbus server connection. The documentation for the item syntax is in the
graphical configuration or in tn manuals area Item Syntax.
An example for a multi node server is id5.r100. This accesses Modbus register 100 in the node 5 emulation.
Antwort:
- Konfigurieren Sie in den globalen Einstellungens: Menü Station → BACnet System Settings
- Geben Sie ein "Own Device ID" ein, stellen Sie sicher das keine andere BACnet Station das gleiche ID nutzt
- Legen Sie eine neue Verbindung zum BACnet Gerät an
- Geben Sie die IP Adresse, das Device ID und/oder die BBMD Adresse an
- Wählen Sie "Automatic Event Forwarding"
Im BACnet Gerät
- Konfigurieren Sie das sendende Objekt. Das Beispiel ist für ein Analog Value Objekt. Andere Objekte haben andere Dinge die Sie konfigurieren müssen. Nicht alle Dinge sind in allen Geräten verfügbar.
- event-enable: [true, true, true]
- event-detection-enable: true
- high-limit, low-limit, deadband: So wie Se das für den Wert brauchen
- limit-enable: [true, true] or as appropriate
- notification-class: Wählen Sie eine notification class die im Gerät programmiert ist
- Konfigurieren Sie die Notification Class
- recipient-list: Fügen Sie diePLC Engine oder den OPC Servers hinzu:
- ValidDays: [true, true, true, true, true, true, true]
- FromTime, ToTime: 00:00:00.00 to 23:59:59.99
- Recipient: device = Geräte ID der PLC Engine oder des OPC Servers
- ProcessIdentifier: 0
- IssueConfirmedNotifications: true
- Transitions: [true, true, true]