Speicherplatz bei CoDeSys

shiznit

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

mir fällt es nicht leicht mein Problem zu beschreiben aber ich probiers mal so:
ich möchte, wenn ich einen von sieben Tastern drücke bzw mehrere, dass dieses in ein Merkerwort abgelegt wird und mit dem vorherigen Zustand verglichen wird, um dann den neuen Zustand in ein Ausgangswort zu schreiben,die dann Ausgänge schalten........so in etwa......

hoffe ihr wisst, was ich meine:):)

Würde mich über einen kleinen Denkanstoß sehr freuen

Lg
 
Du hast zwei Merkerwörter: eins mit dem aktuellen Zustand und eins mit dem vorherigen Zustand.

Zu Beginn holst du dir deine Taster-Zustände und speicherst diese in dem Merkerwort mit den aktuellen Zuständen.

Dann vergleichst du dein aktuelles Merkerwort mit dem vorherigen Merkerwort.

Zum Schluss weist du dein aktuelles Merkerwort dem vorherigen Merkerwort, damit du im nächsten Zyklus wieder das richtige vorherige Merkerwort hast.
 
@ Cerberus: ja genau so habe ich es gemeint.Mein Problem ist,wie ich es programmiere.
Muss dazu sagen,dass ich ein Neuling in CoDeSys bin und nur schulisches Wissen von S7 habe.Wäre echt nett wenn du mir 1-2 Beispielzeilen schreiben könntest.

@ structuredTrash: Ich habe die Taster an einer Möller XV-CPU201(Master) und die Aktoren an einer anderen Möller XV-CPU201(Slave).Die beiden SPSen kommunizieren über Modbus TCP/IP.Wenn ich einen Taster drücke,wird der dazugehörige Ausgang gesetzt.Drücke ich aber dann einen zweiten Taster,muss ich erst den Kommunikationsbaustein des Masters mit einer pos. Flanke neu starten.Dieses soll aber automatisch erfolgen.

Aber erst mal danke an euch
 
Code:
Merkwort.0 := Taster0;
Merkwort.1 := Taster1;
Merkwort.2 := Taster2;
Merkwort.3 := Taster3;
Merkwort.4 := Taster4;
Merkwort.5 := Taster5;
Merkwort.6 := Taster6;
 
IF (Merkwort <> Merkwort_alt) THEN
    (* Hier kannste noch was einfügen *)
END_IF
 
Merkwort_alt := Merkwort;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja danke,das hat mir schon mal weiter geholfen.Aber wie würde das denn in AWL aussehen?
Meine Überlegung war,das "Merkwort" zu laden,dann das "Merkwort_alt" zu laden,diese dann "ODER" zu vernüpfen und das Ergebnis wieder in "Merkwort_alt " zu transferieren.
Mit dem strukturietem Text habe ich noch einige Probleme.

Danke im Vorraus
 
Aber wie würde das denn in AWL aussehen?
AWL ist lange her, aber ich denke, ungefähr so:
Code:
VAR
 Taster0:BOOL;
 Taster1:BOOL;
 ( *usw.* )
 Taster:WORD;
 TasterAlt:WORD;
END_VAR
 
 
 LD  Taster0
 ST  Taster.0
 
 LD  Taster1
 ST  Taster.1
 (* usw. *)
 
 LD  Taster
 EQ  TasterAlt
 JMPC Label1
 (* Start des Kommunikationsbausteins *)
 
Label1:
 
 LD  Taster
 ST  TasterAlt
 
Zurück
Oben