Diese Seite verwendet Cookies. Mit der weiteren Nutzung der Seite erklären Sie sich damit einverstanden. Ausblenden Mehr Informationen

Support PLC Engine Collect Logiktabellen

Support PLC Engine Collect Logiktabellen

Support PLC Engine Collect Logiktabellen

Tani PLC Engine Collect Logiktabellen

Viele Logikfunktionen können Sie mit den Assistenten der Konfiguration erstellen. Hier werden nur solche Dinge vorgestellt die wegen ihrer Einfachheit oder Spezialität keinen Assistenten haben, oder die zu viele Eingaben brauchen.
Falls Sie größere spezielle Aufgaben umsetzen wollen so steht Ihnen mit WizardScript ein erweiterbarer Assistent zur Verfügung.

Übersicht: Zähler, Zahlen und Zeiten, Mehrere Trigger, Unterprogramme, CSV Datei schreiben, CSV Datei lesen, Strukturen , Strukturen mit Feldern erstellen, Strukturen mit Feldern zerlegen, Schrittketten, Programme aufrufen, Mehrere Datenbankergebnisse, Einfache Statistik, Alarm bei Verbindungsunterbrechungen.

In einem Timer der jede Sekunde abläuft wird der Zähler (Variablenname Counter) gelesen. Dann wird 1 hinzugezählt. Das Ergebnis wird wieder in den Zähler geschrieben.

Tani PLC Engine Collect simple counter
Beispiel Logiktabelle herunterladen: Counter.table.

Häufig soll eine Zahl in Teilen genutzt werden.

Vor oder Nachkommastellen in Fließkommazahlen erhalten Sie mit dem Rundungselement. Die in der Mathematik üblichen Rundungsregeln werden eingehalten.
Teile von Zahlen erhalten Sie mit Divisionen. Das Vorzeichen entfernt das Absolut Element.
Wollen Sie aus einer großen Zahl die Stellen unter 100 auf 0 setzen so dividieren Sie durch 100, das Ergebnis multiplizieren Sie wieder mit 100.
Es ist selten eine gute Idee eine Zahl mit dem Reinterpret Element in einen Bytefeld zu wandeln und dann einzelne Bytes zu modifizieren oder auszuschneiden. Das ist technisch möglich aber nur mit einigem Aufwand zu erreichen.

Tani PLC Engine Collect number crunching
Beispiel Logiktabelle herunterladen: Numbers.table.

Der Zeitstempel liefert die Systemzeit. Diese Zeit enthält das Datum und die Zeit bis auf die Millisekundenebene.
Das Beispiel wandelt die Zeit zuerst in einen Text. Der wird dann mit den umfangreichen Formattexten der Tag, der Monat und die Stunde extrahiert. Da das Ergebnis wieder ein Text ist wird folgend jeder Wert wieder in eine Zahl umgesetzt. Diese Zahlen können dann weiterverwendet werden - dieses Beispiel macht das nicht so.
Zusätzlich werden der Name der Zeitzone ausgegeben. Beachten Sie das der Text des Namens vom Betriebssystem gewonnen wird, der kann sich von System zu System unterscheiden, die gewählte Systemsprache hat ebenfalls eine Einfluss.
Es wird auch der Sekundenabstand zur Zeitzone ausgegeben. Wenn Sie eine Zeitzone nutzen die eine Sommer/Winterzeit kennt (in Deutschland ist das aktuell der Fall) dann sehen Sie zur Sommerzeit den Wert 3600s was einer Stunde entspricht. Im Winter ist der Wert 0.
Der Offset zur Universal Time Zone UTC wird ebenfalls ausgegeben. Im Sommer sind das 7200s = zwei Stunden, im Winter sind es 3600s = eine Stunde.
Wenn Sie eine wirklich fortlaufende Zeit benötigen etwa für die Dokumentation dann dürfen gleiche Zeiten nicht auftreten. Das ist nur bei UTC der Fall. Denn zur Umschaltzeit im Herbst wird die Uhr zurückgestellt, somit erhalten Sie zweimal die Werte zwischen 2 und 3 Uhr in der Nacht.

Tani PLC Engine Collect parts from the time
Beispiel Logiktabelle herunterladen: DateTime.table.

Oft soll ein Wert geschrieben werden wenn der sich ändert, aber mindestens einmal in einer bestimmten Zeit auch dann wenn er konstant bleibt. Diese Logiktabelle nutzt zwei Trigger: Den Werteänderungstrigger und den Zeittrigger. Wenn entweder der Wert sich ändert oder das Timeout abläuft dann wird der Wert geschrieben. Der Trigger Reset initialisiert auch den Zeittrigger neu.

Tani PLC Engine Collect multiple trigger
Beispiel Logiktabelle herunterladen: ChangeOrTime.table.

Ein Unterprogramm enthält Logik. Diese Logik können Sie an mehreren Stellen nutzen.
Idealerweise wird im Unterprogramm selbst alles über die Parameter gesteuert so wie in diesem Beispiel. Technische Einschränkungen gibt es aber nicht.

Tani PLC Engine Collect subroutine
Tani PLC Engine Collect subroutine call
Beispiel Logiktabelle herunterladen: Subroutine.table, SubroutineUsage.table.

Eine CSV Datei (Comma Separated File) ist eine Textdatei die in einer Zeile mehrere zusammenhängende Werte hat. Viele Zeilen können in einer solchen Datei liegen.
CSV Dateien können einfach weiterverarbeitet werden, so können Microsoft Excel und OpenOffice Calc und viele weitere Programme CSV Dateien direkt nutzen.

Das Beispiel fügt an die Datei immer dann eine Zeile hinzu wenn sich die Variable Counter 1/s ändert, es wird der aktuelle Zeitstempel ebenfalls hinzugefügt.
Dieses Beispiel nutzt als Trennzeichen das Semikolon und als Dateiendezeichen die Windows Notation.

Tani PLC Engine Collect CSV write
Beispiel Logiktabelle herunterladen: WriteCSV.table.

Dieses Beispiel prüft ob eine neue CSV Datei mit dem Namen "Datafile*.*" erscheint. Wenn das der Fall ist dann wird die Datei gelesen.
Es wird angenommen das die Datei eine CSV Datei ist und drei Zahlen enthält. Diese Zahlen werden gelesen und in die Anlage geschrieben. Ist das erfolgreich so wird die Datei wieder gelöscht.
Wenn das nicht klappt so wird ein Fehlerbit gesetzt.
Wird all das in einer Logiktabelle programmiert so funktioniert das - es wird aber nicht so übersichtlich.

Tani PLC Engine Collect CSV read
Beispiel Logiktabelle herunterladen: ReadCSV.table.

So aufwendige Logiken werden besser in einer Schrittkette bearbeitet. Das erfordert zwar Hilfsvariablen, es ist aber einfacher inbetriebzunehmen.
Ein Schritt prüft auf eine neue Datei passenden Namens. Der erkannte Namen wird in eine Hilfsvariable geschrieben, andere Dateien ignoriert.
Der nächste Schritt liest die Datei und schreibt in die Anlage. Der Dateiname stammt aus der Hilfsvariable.
Der letzte Schritt löscht bei Erfolg die Datei wieder.
Die Fehlerbehandlung erfolgt in weiteren Schritten, möglicherweise wird dort gewartet bis der Bediener den Fehler quittiert hat. Dazu kann auch der Dateiname angeboten werden. In diesem Beispiel sind die entsprechenden Schritte weitgehend leer, sie schalten nur weiter.

Tani PLC Engine Collect CSV read step wait file
Tani PLC Engine Collect CSV read step read file
Tani PLC Engine Collect CSV read step error entry
Tani PLC Engine Collect CSV read step error management
Tani PLC Engine Collect CSV read step remove file
Werden bei der Realisierung zusätzlich Unterprogramme genutzt so steigert das die Übersichtlichkeit weiter. So kann das Dateibearbeiten und Ergebnisverteilen in ein Unterprogramm. Das hat auch den Vorteil das diese Logik an mehreren Stellen genutzt werden kann.

Der Stückzähler (Variablenname ProducedParts) wird gelesen. Wenn der Wert sich ändert wird zusätzlich der aktuelle Zeitstempel in die Struktur gegeben. Dann wird die Anzahl guter Teile (Variablenname Good Pieces) berechnet und ebenfalls dazugegeben. das Ergebnis wird gespeichert.

Tani PLC Engine Collect structure creation
Beispiel Logiktabelle herunterladen: StructureCreate.table.
Die Umkehrfunktion zum Strukturerstellen gibt es natürlich auch. Sie zerlegt eine Struktur wieder in die einzelnen Variablen.
Wenn Sie geschachtelte Strukturen haben dann können Sie die Elemente Struktur erstellen oder Struktur zerlegen mehrfach anwenden.

Strukturen können durchaus komplex werden. Dieses Beispiel füllt eine Struktur die eine Anlagenstatistik enthält und schreibt die in eine Strukturvariable.
Tani PLC Engine Collect structure array create
Beispiel Logiktabelle herunterladen: StructureArrayCreate.table.

Dieses Beispiel zerlegt die Struktur aus dem vorherigen Beispiel mit Feldern wieder.
Tani PLC Engine Collect structure array decode
Beispiel Logiktabelle herunterladen: StructureArrayDecode.table.

Schrittketten vereinfachen Abläufe. In einer Schrittkette ist immer nur ein Schritt aktiv.
Dieses Beispiel nutzt den Bit Trigger zum Auswerten von Vergleichen.
Alle Schritte einer Kette müssen in der gleichen Gruppe liegen. Natürlich können in weiteren Gruppen auch weitere Schrittketten liegen.

Der Initialisierungsschritt, normarerweise ist das der erste Schritt. Die Vorbedingungen der Schrittkette werden initialisiert.
Tani PLC Engine Collect sequence chain init
Hier wird auf die Maschine gewartet bis sie initialisiert ist.
Tani PLC Engine Collect sequence chain wait ready
Nun arbeitet die Maschine. In diesem Beispiel wird nur der Maschinenstatus überwacht, hier und in weiteren Schritten bilden Sie den Ablauf der Maschine ab.
Tani PLC Engine Collect sequence chain work
Der letzte Schritt führt alle Dinge wieder zusammen. Oft wird hier der Stückzähler hochgezählt.
Tani PLC Engine Collect sequence chain last step
Es kann sinnvoll sein einen Fehlerschritt festzulegen. Dieses Beispiel macht davon keinen Gebrauch.
Beispiel Logiktabelle herunterladen: SimpleSequenceChain.table.

Sie können externe Programme in den Logiktabellen aufrufen. Häufig sind das Scripte (Batch unter Windows). Beachten Sie das das aufgerufene Programm auf Systemebene gerufen wird.
Dem gerufene Programmen können Sie Aufrufparameter übergeben. Üblicherweise können Sie aber keine Daten zurückgeben. Deshalb nutzt dieses Beispiel eine Datei in die die Rückgabewerte gelegt werden. Sie können aber auch andere Mechanismen nutzen wie Sockets, OPC UA und Weitere.
Dieses Beispiel ruft ein kleines Script. Zwei Parameter werden übergeben: Ein Text und ein Dateiname. Das Script nutzt den Dateinamen um in diese Datei zu schreiben. Nach dem Programmaufruf liest die Logiktabelle den Inhalt der Datei.
Der übergebene Dateiname für diese Test Logiktabelle ist für Linux, für Windows ist das dann c:\users\public\documents\tani\scriptreturndata.txt
Legen Sie das Script dorthin wo PLC Engine Collect es erreichen kann. In Linux /etc/Tani, Windows c:\users\public\documents\tani\

Tani PLC Engine Collect script call
Beispiel Logiktabelle herunterladen: ScriptCall.table.
Beispielscripte für Windows und Linux.

Eine Datenbank kann mehr als ein Ergebnis liefern. Dieses Beispiel zeigt wie zwei Ergebnisse abgearbeitet werden. Die Ergebnisanzahl wird geprüft. Bei Fehlern oder wenn kein Ergebnis oder nur ein Ergebnis kommt werden die Trigger entsprechend zurückgesetzt.
Bei vielen Ergebnissen könnte es einfacher sein das mit einer Schrittkette umzusetzen. Der Ergebniszähler wird in einer Speichervariable gesichert und in der Schrittkette heruntergezählt. Der Ergebniszähler kann auch als Index für ein Feld für die Ergebnisse genutzt werden.
Die Fehlerbehandlung kann in einem Fehlerschritt zentral erfolgen.

Tani PLC Engine Collect mehrere Datenbankergebnisse
Beispiel Logiktabelle herunterladen: MultipleDatabaseResults.table.

Eine Test Logiktabelle erstellt Testdaten und schreibt die in eine Datenbank. Das wird mit einem Zähler realisiert der von 0 bis 40 im Minutentakt zählt.
Die eigentliche Statistik nutzt einen Datenbankbefehl. Dieser Befehl ist etwas umfangreicher, er muss das als realer Befehl eingegeben werden.
INSERT INTO `hour_values` (`timestamp`, `value_avg`, `value_min`, `value_max`) SELECT DATE_SUB(DATE_FORMAT(NOW(), "%Y-%m-%d %H:00:00"), INTERVAL 1 HOUR), AVG(`value`), MIN(`value`), MAX(`value`) FROM `minute_values` WHERE `timestamp` >= DATE_SUB(DATE_FORMAT(NOW(), "%Y-%m-%d %H:00:00"), INTERVAL 1 HOUR) AND `timestamp` < DATE_FORMAT(NOW(), "%Y-%m-%d %H:00:00");
Solche Dinge können natürlich in der Datenbank auch als Stored Procedure umgesetzt werden. Diese Beispiel nutzt das nicht.
Der Datenbankbefehl wird immer in der ersten Minute nach dem Stundenübergang ausgeführt. Dazu wird der System Zeitstempel in Text gewandelt und die Minute herausgeschnitten. Der Befehl liest die Daten aus der Datenbanktabelle mit den gesammelten Werten. Berechnet wird daraus der Minimal und Maximalwert und der Stundendurchschnitt. Das Ergebnis wird in eine weitere Datenbanktabelle geschrieben. Datenbanken bieten viele Funktionen zu Berechnungen an.
Gegebenenfalls erstellt eine weitere Logiktabelle weitere Übersichten wie Wochen oder Monatswerte. Natürlich können diese weiteren Statistiken im vorhandenen Datenbankbefehl mit angegeben werden. Um die Datenbank nicht so sehr auszulasten sollten diese Dinge aber seltener gerufen werden.

Zuerst das Dummy zum Erstellen von Test Statistikdaten.
Tani PLC Engine Collect einfache Statistik Datengenerator
Nun die Logiktabelle die die Statistik erstellt. Der Datenbankbefehl spricht eine MySql/Mariadb Datenbank an.
Tani PLC Engine Collect einfache Statistik
Beispiel Logiktabelle herunterladen: CollectDataOverTime.table.

Diese Logiktabelle sendet einen Alarm wenn die angegebene Verbindung zur SPS unterbrochen wird

Tani PLC Engine Collect broken connection alarm
Logiktabelle herunterladen: PLCConnectionBrokenAlarm.table.