Variablen wechseln ständig zwischen TRUE und FALSE

frigidolf

Level-1
Beiträge
26
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Eingänge (BOOL) wechseln ständig zwischen TRUE und FALSE obwohl nicht gesetzt

Hallo,

ich habe folgendes Problem:

Wenn ich mein Programm im Run- Modus (PLC Control) laufen habe, wechseln meine Eingänge (BOOL) von alleine ständig zwischen TRUE und FALSE - woran kann das liegen?

Wenn ich die Eingänge im Systemmanager betrachte sind sie durchgehend 0 und springen nur auf 1 wenn ich die Taster betätige (also wie gewollt).

Meine Hardware:
CX9001
EL1002

Mein Programm:
VAR
taster_up AT %IX0.0 : BOOL;
taster_down AT %IX0.1 : BOOL;
heben: BOOL;
senken: BOOL;
END_VAR

IF taster_up = TRUE THEN
heben := TRUE;
ELSIF taster_down = TRUE THEN
senken := TRUE;
ELSE
heben := FALSE;
senken := FALSE;
END_IF


taster_up und taster_down wechseln nun ständig zwischen TRUE und FALSE. Die Variablen heben und senken auch (aber nicht unbedingt entsprechend des Programms).

Vielen Dank für eure Hilfe!!!

Viele Grüße
R. Kühl
 
Zuletzt bearbeitet:
Hi,
deine Eingangsvariablen kann ich wegen der Baugruppe nicht nachvollziehen, aber deine Abfragelogik ist "etwas chaotisch":
Zum testen solltest du mal die Eingänge ohne Adresse belegen und dann die Taster simulieren:
Wenn ich down auf true setze sind heben UND senken auf TRUE ???

Deine verschaltelte IF / Elseif / Else ist schwer lesbar !

So wäre es ggf. lesbarer:
Code:
heben := taster_up AND NOT taster_down;
senken := taster_down AND NOT taster_up;

LG
Shrimps
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank,
so sieht der Code tatsächlich übersichtlicher aus (das ist mein erstes Projekt in ST).

Mein eigentliches Problem liegt jedoch wo anders.
Wenn ich mir im System Manager unter SPS-Konfiguration die Eingänge ansehe, dann springen die Digitalen Eingänge ständig von 0 auf 1 und wieder zurück. Woran kann das liegen?
Die Taster werden nicht betätigt und geben im unbetätigten Zustand auch kein Signal weiter (wie ich oben schon beschrieben habe).

MfG
 
Schau mal im SystemManager nach der Variablen WcState für das entsprechende Eingangsmodul. Deren Wert muss immer 0 sein, ansonsten liegt wahrscheinlich ein Busfehler vor. Dadurch kommt es zu solch undefinierten Vorgängen. In dem Fall solltest du deine hardware prüfen, Busaufbau etc.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hm sind alle Klemmen in "OP" ? Wenn das der Fall ist, kann es nur sein das dieses Signal so flackernd im Eingang ankommt. Würde den Taster mal kurz abklemmen und schauen wie sich das Modul und sein digitaler Eingang dann verhält.
Sonst Taster prüfen. Oder flackert es nur bei Betätigung? In dem Fall den Taster SW-technisch entprellen, ist bei HW-Tastern sowieso zu empfehlen da diese eine prellenden Verhalten aufgrund ihrer Mechanik aufweisen.
Entprellen:

Var
tonDebounceButton : TON;
end_var

tonDebounceButton(IN:= taster_up,pt:=t#100ms);

heben:= tonDebounceButton.Q

Grüße Dax
 
Oder mit R_Trig entprellen.
Kann deiner Aussage nicht ganz folgen. Oben steht im Systemmanger ist alles ok unten schreibst du das nicht.
Hat dein Netzteil genau Power ?
 
Oder mit R_Trig entprellen.

Flankenerkennungen sind zur Entprellung nicht geeignet. Bei einer Zykluszeit von z.B. 10ms könnte der Taster ja mit genau 5ms prellen (high und wieder low) , sodass der Taster nicht sofort erkannt wird. Außerdem würden diese ja genau jede Flanke des Prellvorgangs durchgeben, damit ist der Entprelleffekt wieder aufgehoben.
Besser geeignet sind daher immer Timer, mit ausreichender Einschaltzeit.

Entprellen.png
 
Zuletzt bearbeitet:
Kann deiner Aussage nicht ganz folgen. Oben steht im Systemmanger ist alles ok unten schreibst du das nicht.
Hat dein Netzteil genau Power ?

System Manager - SPS- Konfiguration - Eingänge: ständiges Flackern (0 1 0 1 0 1 0 1)
System Manager - E/A Geräte - EL1002 - Online: Nur 1 bei Betätigung des Tasters, sonst 0

Das Netzteil müsste genug Power haben - die Analogen Eingänge funktionieren alle.
Habe nämlich noch eine analoge Eingangsklemme, einen Buskoppler und eine analoge Ausgangsklemme (+Endklemme) dran hängen. Da ist die Ursache nicht zu suchen oder?

Vielen Dank für die Hilfe!

MfG
 
Mach mal folgendes
1) Im PLC Control: Bearbeiten->Alles Bereinigen. Sollte die Zusatzfrage kommen "Möchten Sie die TwinCAT_Configuration beibehalten?" dann sagst du nein.
2) Im Anschluss im SystemManager auf dem PLC-Knoten: Führe ein Rescan (der *.tpy-Datei) aus.
3) nun noch neu aktivieren und alles sollte gut sein.
Es sieht so aus als ob du im PLC Control mit anderen (neueren) Adressen (auf denen die Variablen liegen) arbeitest als im SystemManager
 
Zuviel Werbung?
-> Hier kostenlos registrieren
System Manager - E/A Geräte - EL1002 - Online: Nur 1 bei Betätigung des Tasters, sonst 0


Indem Fall sollte deine elektrische Verdrahtung passen. Das Problem ist dann an anderer Stelle zu suchen.
Sofern du die tpy- Datei deines sps programms im systemmanager eingebunden hast, und alle Eingänge der Klemmen mit deinen SPS- Variablen gemappt bzw. verlinkt hast, udn die Konfigration geladen hast, sollte es eigentlich gehen.
mfg
 
Ist das Signal wirklich ein Flackern (mit unregelmäßigen Zustandswechseln) oder eher ein regelmäßiges Blinken? Nicht das du aus versehen deine Eingangsvariable mit dem "InputToggle" der Klemme verknüpft hast.....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist das Signal wirklich ein Flackern (mit unregelmäßigen Zustandswechseln) oder eher ein regelmäßiges Blinken? Nicht das du aus versehen deine Eingangsvariable mit dem "InputToggle" der Klemme verknüpft hast.....

Ja das ist ein unregelmäßiges Flackern.. Nein, der Eingang ist schon mit dem 'Input' verknüpft.

Ich habe das Problem jedoch eingrenzen können, nachdem besagte Tipps nicht zum gewünschten Erfolg geführt haben.
Trotzdem ein riesiges DANKSCHÖN für eure Mühe!

Das Flakern der digitalen Eingänge (wie gesagt nur in der SPS- Konfiguration) tritt nur dann auf, wenn der Kanl1 der nachgeschalteten Klemme ein Signal empfängt.

Der EL1002 folgt die EL3152 (2x analog EIN). Auf Kanal 1 liegt ein Wegsensor, auf Kanal 2 ein Kraftsensor.
Wenn Kanal 1 Signale empfängt flakern die digitalen Eingänge (unregelmäßiges hin und her springen zwischen 0 und 1).
Ist Kanal 1 abgeklemmt flakern die Eingänge nicht, bei Betätigung der Taster wird das Signal jedoch auch nicht bei SPS-Konfiguration > Eingänge empfangen.

Ich bin verwirrt...

Wie können die digitalen Eingange vom analogen beeinflusst werden? Und was kann man dagegen tun?

MfG
 
Nächster Vorschlag: Neuer SystemManager erstellen und *.tpy (PLC Projekt) neu einlesen.
Warum?
a) Auf dem EtherCAT Bus werden die Daten an bestimmte Stellen im Datenrahmen geschrieben. Da könnte theoretisch bei HW-Defekten was kaputt gehen, das ist aber in der Wahrscheinlichkeit von einem Lottogewinn. Wenn dem so wäre würde ausserdem im SystemManager das Eingangsbit flackern (tut es aber ja nicht).
b) Die Daten vom Bus werden in die PLC kopiert (anderer Speicher). Die Definition wo was kopiert wird ist in den Verknüpfungen definiert (kannst ja auch mal versuchen das nachzuvollziehen... ist aber etwas kryptisch). In der PLC flackert es.
Es kann aus einem unbekannten Grund (habe ich bisher 1x im Leben gesehen - und ich arbeite häufig mit TwinCAT) vorkommen dass die Verknüfungsinformationen nicht korrekt sind. Um hier sauber aufzusetzen erstelle wie gesagt ein neues *.tsm Projekt (bzw. Scanne die HW komplett neu).
Gruss
 
Hallo,

der 'Fehler' ist Gott sei dank gefunden!
Ein fettes DANKE an alle, die mir hier geschrieben haben!

Wen's interessiert:
Ich habe nochmal ganz von vorn angefangen kam aber, sobald ich die analogen Eingänge deklariert hatte, zum gleichen Ergebnis.

Erst als ich die analogen Eingänge im PLC Control von 'xxx AT %IB0 :INT;' und 'yyy AT %IB2 :INT;' auf 'xxx AT %IB2 :INT;' und 'yyy AT %IB4 :INT;' geändert hatte, hat es wie gewünscht funktioniert.

Ist das normal, dass es mit '%IB0' zu solchem Phänomen kommt? Weil beim Einloggen die Meldung kommt, dass keine Errors vorliegen?


Vielen Dank nochmal!!

MfG
Rudolf K.
 
Ist das normal, dass es mit '%IB0' zu solchem Phänomen kommt?
Ja, zumindest wenn Du, wie im Eingangspost geschrieben, Deine Taster auf IX0.0/IX0.1 legst. Dann liegen die ja auch auf I-Byte 0. Der IO-Manager liest dann vor jedem PLC-Zyklus zunächst die Taster in IX0.0/0.1 ein, überschreibt dann aber das ganze IB0 mit dem unteren Byte des ersten Analogeingangs.
 
Zurück
Oben