Frage:
Warum steht in der Codestelle einer PLC, die mit der Funktion L_ParWrite über CAN beschrieben wird, kurzzeitig ein falscher Wert?
Antwort:
Die Systemtask der PLC schreibt byteweise die Daten in die Codestelle. Wird die Systemtask durch die Anwendertask z.B. alle 2 ms unterbrochen, kann im ungünstigsten Fall für einen oder mehrere Programmzyklen ein falscher Wert in der Codestelle stehen, wenn der Typ der Codestelle größer als ein Byte ist. Muss jedoch im Anwenderprogramm auf eine Wertänderung der Codestelle reagiert werden, kann hier eine Semaphore Abhilfe schaffen. D.h. nach dem Schreiben der Codestelle wird danach eine zusätzliche Hilfscodestelle mit dem Wert 1 beschrieben, damit der Empfänger weiß, dass neue Daten für ihn eingetroffen sind. Der Wert der eigentlichen Codestelle kann jetzt gefahrlos ausgelesen werden und der Wert der Hilfscodestelle wird vom Anwender auf Null gesetzt.
Mit dem Anlegen einer Skalierroutine kann das Problem noch einfacher gelöst werden. Verändert sich der Wert einer Codestelle, verändert sich auch der Wert der damit verbundenen Variable. Bei jedem Schreiben der Codestelle kann eine vom Anwender erstellte Skalierroutine, die mit der Variablen verknüpft ist, gestartet werden.
Erstellen einer Skalierroutine:
- Markieren Sie im Object Organizer in der Registerkarte Bausteine den Funktionsblock, dem Sie eine Skalierroutine hinzufügen möchten.
- Wählen Sie ProjektSkalierroutine hinzufügen, um das Dialogfeld Füge Skalierroutine hinzu zu öffnen.
- Wählen Sie im Dialogfeld Füge Skalierroutine hinzu die Programmiersprache und die entsprechende Variable aus. Der Name der Skalierroutine wird automatisch vergeben ('SCAL_' + Name der Variable).
- Wählen Sie die Schaltfläche Hinzufügen, um die Skalierroutine hinzuzufügen bzw. Schließen, um den Vorgang abzubrechen und das Dialogfeld zu schließen.
Die Skalierroutine wird im Object Organizer unterhalb des entsprechenden FBs angehängt. Per Doppelklick öffnen Sie die Skalierroutine im Editor, wo Sie dann die entsprechende Programmierung vornehmen können.