Support 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Beispiel Logiktabelle herunterladen: StructureArrayCreate.table.
Dieses Beispiel zerlegt die Struktur aus dem vorherigen Beispiel mit Feldern wieder.
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.
Hier wird auf die Maschine gewartet bis sie initialisiert ist.
Nun arbeitet die Maschine. In diesem Beispiel wird nur der Maschinenstatus überwacht, hier und in weiteren Schritten bilden Sie den Ablauf der Maschine ab.
Der letzte Schritt führt alle Dinge wieder zusammen. Oft wird hier der Stückzähler hochgezählt.
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\
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.
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.
Nun die Logiktabelle die die Statistik erstellt. Der Datenbankbefehl spricht eine MySql/Mariadb Datenbank an.
Beispiel Logiktabelle herunterladen: CollectDataOverTime.table.
Diese Logiktabelle sendet einen Alarm wenn die angegebene Verbindung zur SPS unterbrochen wird
Logiktabelle herunterladen: PLCConnectionBrokenAlarm.table.