-> Hier kostenlos registrieren
Hallo,
wie in meinem ersten Beitrag unter https://www.sps-forum.de/wago/76426...t-codesys-2-3-und-wago-perspecto-cp-57-a.html schon einmal angedeutet, haben wir ein seltsames Verhalten der "normal" (also weder RETAIN noch PERSISTENT) deklarierten (globalen) Variablen festgestellt. So sprang ein analoger Messwert zwischendurch öfters mal auf 0, was die Weiterverarbeitung schwierig macht (Filter etc.). Persistent wollen wir diese Variablen nicht machen, da sie mehrmals pro Sekunde geändert werden und Filter verlangsamen das System. Durch kopieren der Quelltexte in ein neues Projekt scheinen wir diesen Fehler aber in den Griff bekommen zu haben.
Eine weiter unten deklarierte DWORD-(Test-)Variable allerdings, die wir mit 15 initiieren und dann nie mehr anfassen (KEIN Schreiben, KEIN Lesen), wird sofort auf 0 gesetzt und bleibt da. Warum ist das so? Worauf müssen wir achten? Was können wir dagegen tun?
Außerdem lesen wir zwei 4-20mA-Eingänge ein, die wir über LIN_TRAFO (aus der Util.lib) weiterverarbeiten wollen. Nun werden die 4mA-Werte auch mal als 3,9876... erkannt (z. B.), wodurch der LIN_TRAFO in den Fehlerzustand geht und nicht rechnet. Kann man da etwas machen, um dieses Problem zu umgehen (Filter bringen nicht viel, da werden - zumindest beim ersten Eingang - eher die 4mA-Werte herausgefiltert
)?
Vielen Dank im Voraus für Eure schnelle Hilfe.
MfG
Exing
wie in meinem ersten Beitrag unter https://www.sps-forum.de/wago/76426...t-codesys-2-3-und-wago-perspecto-cp-57-a.html schon einmal angedeutet, haben wir ein seltsames Verhalten der "normal" (also weder RETAIN noch PERSISTENT) deklarierten (globalen) Variablen festgestellt. So sprang ein analoger Messwert zwischendurch öfters mal auf 0, was die Weiterverarbeitung schwierig macht (Filter etc.). Persistent wollen wir diese Variablen nicht machen, da sie mehrmals pro Sekunde geändert werden und Filter verlangsamen das System. Durch kopieren der Quelltexte in ein neues Projekt scheinen wir diesen Fehler aber in den Griff bekommen zu haben.
Eine weiter unten deklarierte DWORD-(Test-)Variable allerdings, die wir mit 15 initiieren und dann nie mehr anfassen (KEIN Schreiben, KEIN Lesen), wird sofort auf 0 gesetzt und bleibt da. Warum ist das so? Worauf müssen wir achten? Was können wir dagegen tun?
Außerdem lesen wir zwei 4-20mA-Eingänge ein, die wir über LIN_TRAFO (aus der Util.lib) weiterverarbeiten wollen. Nun werden die 4mA-Werte auch mal als 3,9876... erkannt (z. B.), wodurch der LIN_TRAFO in den Fehlerzustand geht und nicht rechnet. Kann man da etwas machen, um dieses Problem zu umgehen (Filter bringen nicht viel, da werden - zumindest beim ersten Eingang - eher die 4mA-Werte herausgefiltert

Vielen Dank im Voraus für Eure schnelle Hilfe.
MfG
Exing