TIA Zellwerte steuern

Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich bin noch ganz neu in der SPS-Programmierung und habe Probleme Werte in Zellen zu steuern. Was meine ich damit?
Ich hätte gerne, dass wenn sagen wir I0.0:=True dann soll QW1:= 16#1500 werden. Mit IF...THEN funktioniert das bei mir nicht. Nutze ich die falsche Funktion?
 
Moin TIA-Amateur Arthur,

herzlich willkommen im Forum!

Was meinst Du mit "Zellen"?

Was hast Du denn bisher programmiert (Screenshot)?

VG
MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich Deinen Wunsch richtig interpretiere, willst Du Folgendes:

Code:
IF
    I0.0
THEN
    QW1 := 16#1500;
END_IF;

Wie wird QW1 zrückgesetzt?

Hinweis: Ein Word sollte immer eine gerade Byteadresse haben. Also nicht QW1, sondern QW2 oder QW0.
 
Danke fürs Willkommen heißen und die schnelle Antwort.
Variablen ist wohl das bessere Wort, glaube ich.
Hier die von mir verwendete Programmierung.

Das zurücksetzen von QW6 habe ich mir noch nicht angeschaut.
Da ich den Wert manuell anpassen kann habe ich mir nicht so viele Gedanken darüber gemacht.

1730213090199.png

1730212986705.png



Viele Grüße
Arthur
 

Anhänge

  • 1730212839160.png
    1730212839160.png
    10,8 KB · Aufrufe: 10
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie oft wird denn das Wort beschrieben?

Es sollte versucht werden mehr als eine Zuweisung zu vermeiden..
Auch Variablen mit Leerzeichen sollten vermieden werden..
Code:
IF DurchflussMid THEN
    tempWert:= 16#1200;
ELSIF DurchflussMax THEN
    tempWert:= 16#1500;
END_IF;

Setpoint:= tempWert;
Moin,

kann es sein, dass Du irgendwo noch einen Ausgang beschreibst?

Also Q6.1 oder QB6 oder so?
Das noch zusätzlich, wenn du das ganze Wort beschreibst, darf kein Bit/Byte daraus woanders beschrieben werden
 
Moin,

kann es sein, dass Du irgendwo noch einen Ausgang beschreibst?

Also Q6.1 oder QB6 oder so?

Genau wie bereits die Vorredner gesagt haben, du darfst die einzelnen Bits nicht beschreiben.

1730214176615.png

Im oberen Binärwert siehst du die 16#1500 im unteren für 16#1300.
Es sieht so aus aus würdest du Q6.1 auf TRUE setzen und Q6.2 auf FALSE, dadurch erhältst du diesen nicht gewollten Wert.
 
1730214438618.png
Das sind alle Ausgänge die ich beschreibe, da sollte sich nix überschneiden. TIA würde einen sollchen Konflikt auch anzeigen oder?

Ich habe auch diesen Code grade ausprobiert leider ohne Erfolg.
Wie oft wird denn das Wort beschrieben?

Es sollte versucht werden mehr als eine Zuweisung zu vermeiden..
Auch Variablen mit Leerzeichen sollten vermieden werden..
Code:
IF DurchflussMid THEN
    tempWert:= 16#1200;
ELSIF DurchflussMax THEN
    tempWert:= 16#1500;
END_IF;

Setpoint:= tempWert;

Das noch zusätzlich, wenn du das ganze Wort beschreibst, darf kein Bit/Byte daraus woanders beschrieben werden
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das sind alle Ausgänge die ich beschreibe, da sollte sich nix überschneiden. TIA würde einen sollchen Konflikt auch anzeigen oder?
Ich gehe nicht davon aus, dass der Compiler es als ein Konflikt ansieht.

Kannst du mal einen Screenshot der gesamten Ausgänge des Belegungsplans zeigen?
Screenshot 2024-10-29 161916.png
 
Ich habe auch diesen Code grade ausprobiert leider ohne Erfolg.
Wie sieht "ohne Erfolg" genau aus?

Bei "diesem Code" ist ein Problem, dass tempWert nicht immer was zugewiesen wird, aber der (unbestimmte?) Wert immer an Setpoint zugewiesen wird. Wenn du diesen Code ausprobieren willst, dann versuche mal so:
Code:
tempWert := Setpoint;

IF DurchflussMid THEN
    tempWert := 16#1200;
ELSIF DurchflussMax THEN
    tempWert := 16#1500;
END_IF;

Setpoint := tempWert;

Wenn der Verdacht besteht, dass einer Variable mehrfach etwas zugewiesen wird, dann einfach mal zum Test eine andere Variable mit einer anderen Adresse nehmen, z.B. %MW6 anstatt %QW6, oder extra einen neuen DB anlegen und eine Variable darin nehmen.
 
Zuletzt bearbeitet:
Zurück
Oben