Newbie Lauflicht frage

Re-Exess

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Erstmal Guten Tag.
Ich bin vollkommener SPS Neuling und versuch hier übungshalber ein Lauflicht zu programmieren.
( Simatic Step7 v5.4 )

Ich hab einen ETimer genommen der einfach alle 900 Milisekunden einen Impuls an einen Zähler gibt.
Der Zähler zählt nun von 0 bis 7 und setzt sich automatisch wieder auf 0 bevor er den Wert 8 erreicht.
Die Variable ist bei mir "MW1" am Dezimalausgang vom Zähler

Soweit so funktioniert es.

Ist es nun möglich diesen Wert aus MW1 zu nehmen und zu sagen:
A0.{MW1} = 1 ;
A0.{MW1-1} = 0;
( Ich komm von anderen Hochsprachen und kann mich so am besten ausdrücken )

Oder welche Möglichkeiten hab ich noch ?

Es geht mir im übrigern nicht darum ein Lauflicht zu programmieren, sondern die Möglichkeiten einer SPS kennenzulernen.

TIA
Chris
 
Zuletzt bearbeitet:
aus der s7 hilfe.

//AWL Erläuterung
L MW0 //Lade die Nummer des Sprungziels in AKKU1-L-L.
SPL LSTX //Sprungziel, wenn AKKU1-L-L > 3 ist.
SPA SEG0 //Sprungziel, wenn AKKU1-L-L = 0 ist.
SPA SEG1 //Sprungziel, wenn AKKU1-L-L = 1 ist.
SPA COMM //Sprungziel, wenn AKKU1-L-L = 2 ist.
SPA SEG3 //Sprungziel, wenn AKKU1-L-L = 3 ist.
LSTX: SPA COMM
SEG0: * //Zulässige Anweisung.
*
SPA COMM
SEG1: * //Zulässige Anweisung.
*
SPA COMM
SEG3: * //Zulässige Anweisung.
*
SPA COMM
COMM: *
 
Code:
*
      U     E      0.0                  //starte lauflicht
      FP    M     10.0
      SPBN  lali
      L     L#65537                     //bitmuster b#0000 0000 0000 0001 0000 0000 0000 0001 laden
      T     MD    20


lali: U     M      2.5                  //Taktmerker 1Hz (in HW-Konfig definiert!)
      FP    M     10.1
      SPBN  end

      L     MD    20
      RLD   1                           //bitmuster rotieren
      T     AW     0                    //auf wort schreiben

end:  NOP   0
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
aus der s7 hilfe.

//AWL Erläuterung
L MW0 //Lade die Nummer des Sprungziels in AKKU1-L-L.
SPL LSTX //Sprungziel, wenn AKKU1-L-L > 3 ist.
SPA SEG0 //Sprungziel, wenn AKKU1-L-L = 0 ist.
SPA SEG1 //Sprungziel, wenn AKKU1-L-L = 1 ist.
SPA COMM //Sprungziel, wenn AKKU1-L-L = 2 ist.
SPA SEG3 //Sprungziel, wenn AKKU1-L-L = 3 ist.
LSTX: SPA COMM
SEG0: * //Zulässige Anweisung.
*
SPA COMM
SEG1: * //Zulässige Anweisung.
*
SPA COMM
SEG3: * //Zulässige Anweisung.
*
SPA COMM
COMM: *

Autsch :(
Ist das nicht etwas übertrieben, eine Sprungleiste zu programmieren, wenn der Kollege erst anfängt damit?
So wie 4l es gezeigt funktioniert es doch auch und ist verständlich.

Bitte nicht mit Atomsprengköpfen nach Schmetterlingen zielen


bike
 
Erstmal Guten Tag.
Ich bin vollkommener SPS Neuling und versuch hier übungshalber ein Lauflicht zu programmieren.
( Simatic Step7 v5.4 )

Ich hab einen ETimer genommen der einfach alle 900 Milisekunden einen Impuls an einen Zähler gibt.
Der Zähler zählt nun von 0 bis 7 und setzt sich automatisch wieder auf 0 bevor er den Wert 8 erreicht.
Die Variable ist bei mir "MW1" am Dezimalausgang vom Zähler

Soweit so funktioniert es.

Ist es nun möglich diesen Wert aus MW1 zu nehmen und zu sagen:
A0.{MW1} = 1 ;
A0.{MW1-1} = 0;
( Ich komm von anderen Hochsprachen und kann mich so am besten ausdrücken )

Oder welche Möglichkeiten hab ich noch ?

Es geht mir im übrigern nicht darum ein Lauflicht zu programmieren, sondern die Möglichkeiten einer SPS kennenzulernen.

TIA
Chris

Tut so nix zur Sache (Funktion), aber der Ordnung halber:

MB0 | MW0 | MD0
MB1 | -"- | -"-
MB2 | MW2 | -"-
MB3 | -"- | -"-
MB4 | MW4 | MD4
MB5 | -"- | -"--
MB6 | MW6 | -"-

usw...

Bitte nicht mit ungeraden Merkerwörtern arbeiten. Das kann zu bösen überlappungen und Problemen führen!
 
Zurück
Oben