PLC Engine bietet die Datenverarbeitung in
Produktionsanlagen. Sie verbindet Steuerungen, Leitrechner, Datenbanken und
Geräte miteinander. Sie bereitet die Daten auf, verteilt sie zwischen den
angeschlossenen Systemen. Sie sammelt Daten auch über lange Zeit, wertet die
aus und erstellt Übersichten für OEE Anwendungen.
Zusätzlich können alle Daten über OPC bearbeitet werden. Das sind
aufbereitetete Daten, alle Daten der angeschlossenen Steuerungen und Geräte,
Daten aus den angeschlossenen Datenbanken.
Die Konfiguration erfolgt grafisch oder mit einfachen Listen.
Viele Assistenten erleichtern das Einrichten.
Das Beispiel ist ein Loggen von Barcodes mit Zusatzinformationen und einem Zeitstempel in eine CSV Datei.
Das Beispiel liest über einen Barcode die Druckdaten aus der Datenbank und sendet die an den Drucker.
Umfangreiche Diagnosen unterstützen die Inbetriebnahme. Nutzen Sie zur Inbetriebnahme die vielen Statusanzeigen.
Der Diagnoselogger erlaubt länger laufende Analysen.
Die maximale Anzahl von OPC Clients hängt nur vom Resourcenbedarf ab. Ein
PC Baujahr 2017 kann mehrere hundert Verbindungen bearbeiten.
Alle OPC Schnittstellen arbeiten lokal innerhalb eines PC oder über
Netzwerk
OPC UA unterstützt das schnelle Binärprotokoll. Security wird in allen Varianten unterstützt. Multicast Discovery wird unterstützt.
Es werden DataAccess DataItems genutzt die jedes bis zu 200K
lang sein können.
Bei Classic OPC wird DCOM über Netz ausdrücklich nicht empfohlen, es wird
aber unterstützt.
The OPC UA implementation conforms to the specification 1.05.
The OPC UA Standard Model is supported, some extensions exist.
The maximum single request and answerlen is 16m
The OPC UA Alarms & Conditions module is supported. This includes filters, history.
An internal discovery server is active on standard, it supports multicast discovery also.
It can be used as a global discovery server.
Alternatively an external discovery server can be configured.
Reverse connections are supported.
The certificate management GDS Push is supported.
The session timeout will be limited to one hour.
The server and client certificate will be renewed if the Tani self signed certificate is used. All other certificates remain unaffected on expiring.
The certificate validity is checked all 12h.
It will be renewed seven days before it expires.
Running connections will not be affected, new connections will use the new certificate.
AddNodes is supported with the following restrictions:
Machine models from the OPC Foundation or the VDMA directly can be loaded with its corresponding XML file.
The security certificate key minimum length are
Datenverkehr zwischen den OPC Schnittstellen (tunneling) ist möglich. Damit wird die OPC DA Tunnel realisiert.
MQTT stammt aus der Internet der Dinge Welt. Es ist einfach, schnell.
Ein Gerät kann gleichzeitig auf mehrere Partner Daten senden.
Sie können Client und Broker gleichzeitig betreiben.
Alle Steuerungen werden über Netzwerk angeschlossen. Oft ist das Ethernet, WLAN oder andere Netze. Alle Seriell Ethernet und MPI Ethernet Wandler für Steuerungen werden unterstützt.
Die Konfiguration wird über die mitgelieferte Konfigurationssoftware oder
über OPC mit dem System Topic vorgenommen.
Die Konfigurationsverbindung wird mit TLS 1.2 verschlüsselt. Diese
Verschlüsselung kann für die Nutzung in Ländern mit Verschlüsselungsverbot
abgeschaltet werden.
Verbindungen zu Geräten und Steuerungen unterstützen Netzwerk Redundanz.
Möglich sind Doppel und Dreierredundanz.
Die Redundanzarten Dynamisch und Statisch sind möglich.
Bei Dynamischer Redundanz ist eine beliebige Unterverbindung der Master. Bei Unterbrechung wird eine andere Verbindung Master.
Bei Statischer Redundanz ist die erste Verbindung Master. Fällt die aus so wird auf eine Slave Verbindung geschaltet. Sobald die Master Verbindung wieder arbeitet wird auf diese zurückgeschaltet.
Die Verbindungen der Redundanz sollen auf unterschiedlichen Netzwerkkarten und in unterschiedlichen IP Subnetzen betrieben werden.
BACnet wird über IP / UDP genutzt.
Maximale Länge von Zeichenketten: 256 Byte
Unterstützte Zeichensätze: UTF-8, UTF-16, Latin-1
Statustexte werden unterstützt (state_text)
Unions ("Choice") und Strukturen ("Sequence") sind für wichtige Elemente wie Trend, Shedule, Calendar, Prioriry
vorhanden. Trenddaten werden als History Daten angeboten. Alle nicht implementierten werden nicht angeboten.
Emum Werte werden standardmäßig aus UINT32 angeboten. Einige spezielle Enum werden auch als Bool dargestellt.
Werte der Typen "Octet-String" und "Bit-String" können nur als Ganzes geschrieben werden, kein Schreiben von Einzelelementen ist möglich.
BBMD dient dem Verbindungsaufbau und der Gerätesuche wenn die Stationen nicht in der gleichen Kollisionsdomäne liegen.
BACnet nutzt Broadcast zum Verbindungsaufbau. In umfangreicheren Umgebungen mit Unternetzen verwaltet BBMD diese Broadcasts.
Es gibt mehrere Verfahren BBMD zu nutzen, alle werden unterstützt:
COV ist das Evenetsystem von BACnet.
Events werden beim Browsen angeboten, sie werden abonniert. Sendet das Gerät die Daten so wird das Event gesendet.
Da BACnet mit UDP arbeitet kann der COV Empfang nicht garantiert werden. Deshalb bietet Tani optional eine Überwachung an.
Die nutzt das Wiederverbindungs Timeout der Verbindung.
Wird in der angegebenen Zeit kein Event empfangen so wird das Element aktiv nachgefragt.
Hat sich der Wert dieser Nachfrage nicht geändert so wird kein Event ausgelöst.
This mechanism was chosen to allow choosing the write priority via OPC without changing the read syntax for present-value property. This also allows writing NULL values via OPC.
The following object properties are implemented:
Object Type | Property | BACnet Type | OPC Type | Remarks |
---|---|---|---|---|
all | all | BACnetObjectIdentifier | UInt32 | |
all | all | Bit String | Array of Boolean | |
all | all | Boolean | Boolean | |
all | all | Character String | String | |
all | all | Double | Double | |
all | all | Enumerated | UInt32 | |
all | all | Octet String | Array of UInt8 | |
all | all | Real | Float | |
all | all | Signed | Int32 | |
all | all | Unsigned | UInt32 | |
all | Change of State Time (16) | BACnetDateTime | DateTime | |
all | Event Time Stamps (130) | Sequence of BACnetTimeStamp | Array of Structure "Timestamp" | |
all | Object Type (79) | BACnetObjectType | UInt32 | |
all | Time of Active Time Reset (114) | BACnetDateTime | DateTime | |
all | Time of State Count Reset (115) | BACnetDateTime | DateTime | |
Access Door (30) | Door Alarm State (226) | BACnetDoorAlarmState | UInt32 | |
Access Door (30) | Present Value (85) | BACnetDoorValue | UInt32 | |
Access Door (30) | Priority Array (87) | BACnetPriorityArray | Array(1..16) of Structure "UnsignedPriorityValue" | see section "Priority Array" |
Access Door (30) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Analog Input (0) | Present Value (85) | Real | Float | |
Analog Input (0) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Analog Output (1) | Present Value (85) | Real | Float | |
Analog Output (1) | Priority Array (87) | BACnetPriorityArray | Array(1..16) of Structure "AnalogPriorityValue" | see section "Priority Array" |
Analog Output (1) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Analog Value (2) | Present Value (85) | Real | Float | |
Analog Value (2) | Priority Array (87) | BACnetPriorityArray | Array(1..16) of Structure "AnalogPriorityValue" | see section "Priority Array" |
Analog Value (2) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Averaging (18) | Maximum Value Timestamp (149) | BACnetDateTime | DateTime | |
Averaging (18) | Minimum Value Timestamp (150) | BACnetDateTime | DateTime | |
Binary Input (3) | Present Value (85) | BACnetBinaryPV | UInt32 | |
Binary Input (3) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Binary Output (4) | Present Value (85) | BACnetBinaryPV | UInt32 | |
Binary Output (4) | Priority Array (87) | BACnetPriorityArray | Array(1..16) of Structure "UnsignedPriorityValue" | see section "Priority Array" |
Binary Output (4) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Binary Value (5) | Present Value (85) | BACnetBinaryPV | UInt32 | |
Binary Value (5) | Priority Array (87) | BACnetPriorityArray | Array(1..16) of Structure "UnsignedPriorityValue" | see section "Priority Array" |
Binary Value (5) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Calendar (6) | Datelist (23) | List of BACnetCalendarEntry | Array() of Structure "BACnet.CalendarEntry" | |
Device (8) | Last Restore Time (87) | BACnetTimeStamp | Structure "Timestamp" | |
Device (8) | Local Date (56) | Date | Structure "Date" | |
Device (8) | Local Time (57) | Time | Structure "Time" | |
Device (8) | Object List (76) | Sequence of BACnetObjectIdentifier | Array of UInt32 | |
Device (8) | Protocol Object Types Supported (96) | BACnetObjectTypesSupported | Array of Boolean | |
Device (8) | Protocol Services Supported (97) | BACnetServicesSupported | Array of Boolean | |
Device (8) | Segmentation Supported (107) | BACnetSegmentation | UInt32 | |
Device (8) | System Status (112) | BACnetDeviceStatus | UInt32 | |
Device (8) | Time of Device Restart (203) | BACnetTimeStamp | Structure "Timestamp" | |
Event Enrollment (9) | Object Property Reference (78) | BACnetDeviceObjectPropertyReference | Structure "DeviceObjectPropertyReference" | |
File (10) | Modification Date (149) | BACnetDateTime | DateTime | |
Life Safety Point (21) | Present Value (85) | BACnetLifeSafetyState | UInt32 | |
Life Safety Point (21) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Life Safety Zone (22) | Present Value (85) | BACnetLifeSafetyState | UInt32 | |
Life Safety Zone (22) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Load Control (28) | Actual Shed Level (212) | BACnetShedLevel | Structure "ShedLevel" | |
Load Control (28) | Duty Window (213) | Unsigned | UInt32 | |
Load Control (28) | Expected Shed Level (214) | BACnetShedLevel | Structure "ShedLevel" | |
Load Control (28) | Present Value (85) | BACnetShedState | UInt32 | |
Load Control (28) | Requested Shed Level (218) | BACnetShedLevel | Structure "ShedLevel" | |
Load Control (28) | Shed Duration (219) | Unsigned | UInt32 | |
Load Control (28) | Start Time (142) | BACnetDateTime | DateTime | |
Loop (12) | Controlled Variable Reference (19) | BACnetDeviceObjectPropertyReference | Structure "DeviceObjectPropertyReference" | |
Loop (12) | Manipulated Variable Reference (60) | BACnetDeviceObjectPropertyReference | Structure "DeviceObjectPropertyReference" | |
Loop (12) | Setpoint Reference (109) | BACnetSetpointReference | Structure "SetpointReference" | |
Loop (12) | Present Value (85) | Real | Float | |
Loop (12) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Multi State Input (13) | Alarm Values (7) | Sequence of Unsigned | Array of UInt32 | |
Multi State Input (13) | Fault Values (39) | Sequence of Unsigned | Array of UInt32 | |
Multi State Input (13) | Present Value (85) | Unsigned | UInt32 | |
Multi State Input (13) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Multi State Output (14) | Present Value (85) | Unsigned | UInt32 | |
Multi State Output (14) | Priority Array (87) | BACnetPriorityArray | Array(1..16) of Structure "UnsignedPriorityValue" | see section "Priority Array" |
Multi State Output (14) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Multi State Value (19) | Alarm Values (7) | Sequence of Unsigned | Array of UInt32 | |
Multi State Value (19) | Fault Values (39) | Sequence of Unsigned | Array of UInt32 | |
Multi State Value (19) | Present Value (85) | Unsigned | UInt32 | |
Multi State Value (19) | Priority Array (87) | BACnetPriorityArray | Array(1..16) of Structure "UnsignedPriorityValue" | see section "Priority Array" |
Multi State Value (19) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Notification Class (15) | Recipient List (102) | List of BACnetDestination | Array() of Structure "BACnet.Destination" | |
Schedule (17) | Effective Period (32) | BACnetDateRange | Structure "DateRange" | |
Schedule (17) | Exception Schedule (38) | Sequence of BACnetSpecialEvent | Array of Structure "SpecialEvent" | |
Schedule (17) | List of Object Property References (54) | Sequence of BACnetDeviceObjectPropertyReference | Array of Structure "DeviceObjectPropertyReference" | |
Schedule (17) | Present Value (85) | ABSTRACT-SYNTAX.&Type | Structure "Any" | |
Schedule (17) | Schedule Default (174) | ABSTRACT-SYNTAX.&Type | Structure "Any" | |
Schedule (17) | Weekly Schedule (123) | Sequence Size(7) Of BACnetDailySchedule | 7 sub-objects ("Monday", "Tuesday", ...) of Structure "TimeValue" | |
Pulse Converter (24) | Present Value (85) | Real | Float | |
Pulse Converter (24) | Status Flags (111) | BACnetStatusFlags | Array(0..3) of Boolean | |
Structured View (29) | Subordinate List (211) | Sequence of BACnetDeviceObjectReference | Array of Structure "DeviceObjectReference" | |
Trend Log (20) | Client COV Increment (127) | BACnetClientCov | Structure "ClientCov" | |
Trend Log (20) | Log Buffer (131) | BACnetLogRecord | Structure "LogRecord" | Accessed via "HistoryRead" function, "Read" shows only one record. |
Trend Log (20) | Log Device Object Property (132) | BACnetDeviceObjectPropertyReference | Structure "DeviceObjectPropertyReference" | |
Trend Log (20) | Start Time (142) | BACnetDateTime | DateTime | |
Trend Log (20) | Stop Time (143) | BACnetDateTime | DateTime |
KNX wird für IP / TCP und IP / UDP angeboten.
Der Symbolimport wird für die standardisierten ESF Dateien angeboten.
PLC Engine ist ein Datenbank Client. Es meldet sich mit Benutzer und Kennwort an der Datenbank an.
Die Standard SQL Befehle INSERT INTO, UPDATE, SELECT, DELETE, FUNCTION und PROCEDURE werden über die Wizards genutzt. Weitere Befehle werden mit direkter Konfiguration genutzt.
Unterstützt werden:
Arbeitet PLC Engine auf einem Rechner so können die auf diesem Rechner installierten Datenbanken mit genutzt werden.
Auf PLC Engine Device ist eine My SQL Datenbank eingerichtet. Diese Datenbank wird komplett von PLC Engine gemanaged.
Der OPC Server enthält einen Logger zur Diagnose bei Inbetriebnahmen. Dieser Logger kann konfiguriert werden. Werden in großen Anlagen alle SPS Daten geloggt so kann die Rechnerbelastung groß werden.
Maximale Anzahl konfigurierbarer Client Verbindungen: 4000.
Maximale Datenelementlänge eines Elements: 4GB.
Maximale Anzahl Elemente je Verbindung: 1 Million.
Maximale Anzahl der Summe aller Elemente (Items): 16 Millionen.
Maximale OPC Gruppen je Verbindung: 100.
Maximale Anzahl Verbindungen je passivem Port ist 999.
Die OPC synchronen Funktionen liefern direkt einen Fehler wenn die SPS
Verbindung nicht steht.
Änderungen in der SPS Konfiguration werden alle 10 Sekunden geprüft falls die Steuerung keine Überprüfung bei jedem Datenschreiben anbietet.
Felder können jedes bis zu 64Kb lang sein.
Mehrdimenionale Felder können bis zu sechs Dimensionen haben.
Eine virtuelle Verbindung wird überwiegend als Ziel von Variablenunlenkungen genutzt.
Jede virtuelle Verbindung hat eine individuelle Rechnreeinstellung wie alle anderen Verbindungen ebenfalls.
Wie bei den Logiktabellen und der Status Variable Funktion wird das Recht der Quellverbindung nicht beachtet.
Symbole werden über den Symboleditor bearbeitet.
Ein und das selbe SPS Element darf in einer virtuellen verbindung nur einmal benutzt werden.
Der Datendurchsatz wird von der SPS Geschwindigkeit oder der
Reaktionszeit der Applikation die OPC nutzt bestimmt.
Leseanfragen an die SPS werden so weit die SPS das zulässt optimiert. Dazu
werden die angeforderten Elemente zu Blöcken zusammengefasst wenn das geht
- bei Ein und Ausgängen geht das nicht. Diese Optimierung kann
abgeschaltet werden, ebenso kann pro SPS Verbindung dieses
Datenzusammenfassen eingestellt werden.
Schreibanfragen werden je nach Konfiguration entweder zusammengefasst,
oder die Reihenfolge der Schreibaufträge wird so eingehalten wie die OPC
Client Applikation schreibt.
An den OPC Schnittstellen werden alle Optimierungen genutzt die die
jeweilige OPC Schnittstelle kennt.
Die normale Zeit beim zyklischen Anfragen der SPS beträgt 50ms. Sie ist
schneller wenn das Steuerungs Abfrageintervall auf 0 gesetzt wird
Zu OPC werden nur Daten gesendet die sich in der SPS zwischen zwei
Leseanfragen geändert haben.
Der Durchsatz einer Logiktabelle wird bis 10 Millisekunden Schritte
normalerweise eingehalten. Sehr viele Logiktabellen mit jeweils sehr viel
mathematischen Funktionen können dazu führen das 10ms überschritten
werden. Das ist vor Allem bei Enbedded Geräten ohne mathematischen
Koprozessor der Fall.
Natürlich kann keine Abarbeitung schneller ablaufen als die
angeschlossenen Geräte und Steuerungen Daten liefern. Das gilt auch für
den Datenbankzugriff.
Logiktabellen sind für lineare Abläufe gebaut. Schleifen sind nicht möglich.
Jede Schrittkette kann maximal 65535 Schritte enthalten
Alle Logikelemente deren Funktion fehlschlagen kann liefern ein OK Bit. Es liegt in der Anwendung diese OK Bits zu nutzen um Laufzeitfehler zu behandeln.
Strukturen können keine Schleifen enthalten.
Eine Struktur oder Variable kann bis 4GB groß werden.
Die Status Diagnosewerte können bei Feldern nur bis maximal 100 Elemente bearbeiten. Wird ein Feld länger so werden die ersten 100 Werte gezeigt, ein Schreiben ist dann nicht möglich.
Die ab Version 1.8 vorhandenen OPC Feldoptimierungen verhindern das zu häufige Lesen der langen Datenfelder, nur der Index wird zyklisch abgefragt. Diese Optimierung hilft nur dann wenn sich der Index nicht allzuoft ändert.
Die genutzte CPU Zeit hängt von der Auslastung ab. Meist wird auf die
Daten der Steuerungen oder Daten von der OPC Applikation gewartet.
Alle Software arbeitet intern ereignisgesteuert. Das dient dem Durchsatz
und minimiert die CPU Belastung.
Mehrere CPU im PC werden unterstützt. Maximal werden 10 CPU genutzt, die
Haupt Verarbeitungslast wird von drei CPUs geleistet.
Die Installation installiert je nach Produkt und Auswahl mehrere
Programmteile. Beim Uninstall werden nicht automatisch alle Teile
gelöscht. Alle Uninstaller werden aber im Menü und unter Software
angeboten, gegebenenfalls müssen die Produkte einzeln entfernt werden.
Die Anwender Einstellungen werden beim Uninstall nicht gelöscht.
Type Auto-Import works for all client protocols that are able to use structures/enumerations and have online browsing functions. This includes:
These protocols have a fixed list of structures and don't need Auto-Import:
These protocols have online browsing, but don't use structures/enumerations:
All other protocols don't have online browsing.
Type Auto-Import is implemented in two steps:
Limitations:
Before Auto-Import Step 1, any types that have not been imported yet:
Before Auto-Import Step 2, any types that have not been imported yet:
After Auto-Import Step 2:
A client wishing to use a variable with a structure/enumeration type that has not been imported should
to trigger the type import. Only after completing one of these the structure type is available in the server.
Alle Konfigurationen sind kompatibel zu allen OPC Servern, auch über Betriebssystemgrenzen hinweg.