Seltsames Verhalten in der IEC-Applikation
Voraussetzungen
Sie verwenden ein CODESYS-Laufzeitsystem.
Fehlerbehebung
Wenn Sie auf ein seltsames Verhalten stoßen, sollten Sie prüfen, ob der Logger des Laufzeitsystems wertvolle Hinweise oder Informationen liefert. Der CODESYS-Laufzeitsystem-Logger verfügt über einen Mechanismus zum Filtern von Meldungen nach ihrer Kategorie. Standardmäßig ist die Kategorie Debug nicht aktiviert. Aktivieren Sie diese Kategorie, um die Ursache für seltsames Verhalten oder unerwartete Symptome zu finden.
Es gibt globale und komponentenspezifische Log-Filter. Eine Liste aller möglichen komponentenspezifischen Filter können Sie in der Logdatei des Laufzeitsystems im Detail sehen. Verwenden Sie die Filter wie nachfolgend beschrieben.
Symptome bezogen auf | möglicher komponentenbasierter Log-Filter |
---|---|
Lizenzierung |
|
IEC-Tasks / Timing (higher level) |
|
IEC-Tasks / Timing (low level) |
|
IEC-Applikation (allgemein) |
|
IEC-Applikation (Speicher) |
|
Socket-Kommunikation |
|
Ethernet-Kommunikation |
|
Dateien / Ordner |
|
Tipp
Aktivieren Sie nicht alle Debug-Kategorien auf einmal, da es sonst schwierig wird, das eigentliche Problem zu finden. Gehen Sie Schritt für Schritt vor und deaktivieren Sie „nicht relevante“ Filter, um einen besseren Überblick über das Problem zu erhalten.
Öffnen Sie Ihr CODESYS-Projekt und verbinden Sie es mit der Steuerung.
Öffnen Sie die SPS-Shell durch einen Doppelklick auf die Steuerung im Gerätebaum.
Geben Sie in der Shell "?" ein, um alle möglichen Befehle zu sehen.
Verwenden Sie die Befehle
logsetfilter
,loggetfilter
undlogdelfilter
, um einen Filter zu schreiben, zu lesen und zu löschen. Sie können entweder globale Debug-Filter für das gesamte Laufzeitzeitsystem oder Filter für eine bestimmte Komponente verwenden.Globales Lesen der aktuellen Log-Kategirie:
loggetfilter
könnte folgende Ausgabe liefern:Logger.0.Filter : 0x0000000F
Globales Setzen der aktuellen Log-Kategorie:
logsetfilter 0xffffffff
Lesen der aktuellen Log-Kategorie für eine bestimmte Komponente (beispielsweise
CmpCodeMeter
):loggetfilter CmpCodeMeter
Setzen der aktuellen Log-Kategorie für eine bestimmte Komponente (beispielsweise
CmpCodeMeter
):logsetfilter CmpCodeMeter 0xffffffff
Beispiel: über eine SSH-Verbindung und einen Texteditor
Beenden Sie das Laufzeitsystem über das DeployTool.
Verbinden Sie sich mit Ihrem Zielsystem (beispielsweise über
putty
oder einen anderen SSH-Client).Öffnen Sie die benutzerspezifische Konfigurationsdatei der Laufzeitumgebung mit einem Texteditor (beispielsweise
nano
):sudo nano /etc/codesyscontrol/CODESYSControl_User.cfg
Suchen Sie den Abschnitt
CmpLog
und setzen Sie den Filter.Beispiel 1. Setzen eines globalen FiltersBeispiel:
Logger.0.Filter=0xFFFFFFFF
zum Aktivieren aller Debug-MeldungenBeispiel 2. Setzen eines komponentenspezifischen Filters[CmpLog] CmpCodeMeter.Filter=0xFFFFFFFF SysTask.Filter=0xFFFFFFFF
Speichern und schließen Sie die Datei.
Führen Sie einen Neustart des Laufzeitsystems mit dem Deploy Tool durch.