TIA Lauflicht mit 16 Lichter

Saliwusali

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen

Ich bin ein Blutiger Anfänger und lerne erst noch das programmieren und hab von meine Lehrmeister mehrere Aufgaben bekommen die ich programmieren konnte nur war das alles in der FUP Programmiersprache. Nun muss ich ein Lauflicht mit einem Schiebe Register a 16 Lichter in der AWL Programmiersprache programmieren. Nach den Start Signal sollte immer ein Licht nach dem anderen an und aus gehen, von links nach rechts.

So den Taktgenerator hab ich soweit hingebracht und der funktioniert soweit auch gut.
Nur komme ich mit dem Schieberegister nicht mehr ganz weiter. Bin jetzt schon lange am herumproben und komme einfach nicht auf eine namens werten Nenner.
Wie wird so was Programmiert?
Wäre um Lösungen sehr dankbar da ich das Projekt bald zeigen muss.



Hier Mal mein Stand:

Taktgenerator:


UN "Starteingang"
L S5T#1S //Takt Aus
SE "Takt Einschaltverzögert"
U "Takt Einschaltverzögert"
L S5T#3S //Takt Ein
SA "Starteingang"
U "Starteingang"
= "Takt Ausgang"




Schieberegister Links:

U "Takt Ausgang"
FP "Positive Taktflanke"
= "Merker Positive Taktflanke"
U "Merker Positive Taktflanke"
SPBN end
L "Start Anfang"
SLW 1
T "Start Anfang"
end: U "Start Taster"
= "Start Merker"



Ich wäre um Lösungen sehr dankbar und Danke Euch schon mal in voraus das ihr euch die Zeit nehmt.
 
2 Anmerkungen :
- ist "Start_Anfang" ein Wort ?
- schieben heißt den Inhalt, der schon da ist, in der entsprechenden Richtung zu versetzen - hat "Start_Anfang" denn einen Inhalt ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Larry

Ja Start_Anfang hab ich als MW60 definiert.
Die 2 Frage verstehe ich leider nicht ganz Sorry.

Also es Schiebt das bit schon nach links nur setzt es alle bit`s nach einander an und nicht mehr aus.
Dazu weiss ich nicht wie ich die Umkerung Programmieren muss das es dann beim 16 bit nach rechts wieder verschiebt


Lg
Saliwusali
 
Zuletzt bearbeitet:
Also es Schiebt das bit schon nach links nur setzt es alle bit`s nach einander an und nicht mehr aus.
Naja ... dann solltest du das erste Bit deines MW nicht grundsätzlich setzen (das hast du sicherlich irgendwo ausserhalb deines geposteten Code-Schnipsels gemacht) sondern vielleicht nur dann, wenn der Inhalt des MW's = 0 ist)
Dazu weiss ich nicht wie ich die Umkerung Programmieren muss das es dann beim 16 bit nach rechts wieder verschiebt
Um eine Umkehrung zu Programmieren muss man unterscheiden können wohin man gerade schiebt - man braucht also einen weiteren Merker.
Nun könntest du es so machen, dass du nach Links schiebst solange Umkehrmerker=0 UND NICHT Bit15 deines MW60 =1. Nun setzt du den Umkehrmerker.
Nach Rechts schiebst du dann solange Umkehrmerker=1 UND NICHT Bit0 deines MW60 =1. Nun löscht du den Umkehrmerker.

Versuch dich mal und bei Problemen poste deinen aktuellen Code ...

Gruß
Larry
 
Hallo Saliwusali,
mal ein paar Tipps wie du das Problem lösen kannst:
- Du hast 16 Ausgänge, an jedem Ausgang hängt eine Lampe (Lehrstoff T(ransferiere) MW)
- Du hast einen START-Taster, der eine Flanke bildet (Lehrstoff pos. Flanke)
- Du benutzt ein Merkerwort als Schieberegister (Lehrstoff R(otieren) MW)
- Du suchst dir ein passendes Bit des STEP7-Taktgebers aus (Lehrstoff Taktgeber unter STEP7)
Zu programmierender Ablauf:
- Mit einer Flanke des START-Befehls wird ein Bit des Schieberegisters auf 1 gebracht.
- Der ständig laufende Taktgeber bildet ebenfalls ein Flankensignal.
- Mit diesem wird das Schieberegister um 1 Position z.B. nach rechts rotiert (nicht geschoben!)
- Das Schieberegister wird über L(aden) und T(ransferieren) in jedem SPS-Zyklus auf das Ausgangswort ausgegeben.
- Fertig - funktioniert!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Steht alles ganz oben

Das habe ich so ausprobiert, aber in der Beobachtungstabelle springt das Mit in Millisekunden schnelle durch und nicht im Takt des Taktmerkers. ausser es liegt an dem "SPBN end", das konnte ich nämlich nicht einfügen da ein Fehler gekommen ist, desswegen habe ich es weggelassen.

währe froh um eine Lösung für dieses Problem

oder hat vielleicht sogar jemand ein Programm in dem das lauflicht mit einem Schieberegister realisiert wurde, dann könnte ich da einmal reinschauen und mich beleeren?

Freundlich Grüsse, der, der nichts versteht
 
Steht alles ganz oben
Wenn man weiss, was gemeint ist ...
Das "SchiebeRegister" gibt es eigentlich nicht. Der Schiebe- bzw. RotierBefehl schiebt bzw. rotiert den AkkuInhalt. Und zwar jedesmal, wenn der Befehl durchlaufen wird, da er nicht VKE-abhängig ist. Darum wird das Laden des Akkus mit dem "alten" SchiebeRegisterInhalt, das Schieben bzw. Rotieren und das Schreiben des neuen Zustandes zurück in das "SchiebeRegister" (normalerweise) übersprungen und nur dann nicht übersprungen (sondern ausgeführt), wenn die Flanke des TaktMerkers festgestellt wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, wenn der SprungBefehl weggelassen wird, wird in jedem Zyklus geschoben, also im "ZeitRaffer".
Welcher Fehler ist denn warum "gekommen"? Was ging nicht?

Wenn ich es eingebe wird es rot und wenn ich versuche zu laden kommt folgender Fehler: Syntaxfehler: Der eingegebene wert " SPBN ist ungültig

ich habe mir schon überlegt weil ich es vielleicht auf englisch habe, denn ich kann für und Verknüpfung auch nicht u eingeben sondern muss a eingeben
 
FP "Taktmerker"
= "Positiver Flankenauswertung Taktmerker"
A "Positiver Flankenauswertung Taktmerker"
SPBN end <--------------------Leuchtet Rot auf
L "Laufbits"
SLW 1
T "Laufbits"
end: A "Start Taster"

Deine Mnemorik ist nur auf international gestellt.

Extras - Einstellungen - Allgemein - Mnemorik - International auf Deutsch....

Sonst müsstest du statt SPBN => JCN verwenden
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich es eingebe wird es rot und wenn ich versuche zu laden kommt folgender Fehler: Syntaxfehler: Der eingegebene wert " SPBN ist ungültig
Code:
...
[LEFT][COLOR=#333333][FONT=Verdana]      [B]JCN[/B]  end[/FONT][/COLOR]
[COLOR=#333333][FONT=Verdana]      L     "Start Anfang"[/FONT][/COLOR]
[COLOR=#333333][FONT=Verdana]      SLW   1[/FONT][/COLOR]
[COLOR=#333333][FONT=Verdana]      T     "Start Anfang"[/FONT][/COLOR]
[COLOR=#333333][FONT=Verdana]end: A "Start Taster"[/FONT][/COLOR][/LEFT]
...

@Michael: immerhin bin ich VizeSieger geworden (Du bist einfach schneller ;))
 
Zuletzt bearbeitet:
Erst einmal vielen Dank für die Hilfe bis jetzt, der Sprung funktioniert jetzt :)
und : entschuldige das ich nochmals "nerve" aber ich habe ein weiteres Problem dem ich nicht auf die Schliche komme.
Meine Prositive Flankenauswertung funktioniert nicht, und ich finde nicht heraus warum. Sollte doch auch mit Einem Taktmerker funktionieren, ohne Taktgenerator oder?

Dass ist mein Code den ich jetzt habe:

U "Start Taster"
U "Taktmerker"
FP "Taktmerker"
= "Positiver Flankenauswertung Taktmerker"
U "Positiver Flankenauswertung Taktmerker"
SPBN end
L "Laufbits"
SLW 1
T "Laufbits"
end: U "Start Taster"

und wenn ich online beobachte funktioniert der Taktmerker, die Positive Flankenauswertung nur in der Spalte Wert, doch in der Spalte VKE nicht und das "=" und das "U" zeigen immer "0". Deswegen wird das "Schieberegister" auch durchgehend übersprungen.

Vielen Dank im voraus
ich verstehs nicht
 
Zurück
Oben