knight rider lauflichter

bundsaz

Level-1
Beiträge
27
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hi

bräuchte hilfe beim realisieren von Knight Rider Lauflichtern.

Hab 16 Ausgänge = A0.0 bis A1.7
Die Lauflichter sollen jeweils auf den Ausgängen
A0.0 - A0.7 und A1.0 - A1.7 laufen.

diese anweisung war ein vorschlag von einem Kollegen.
L MW 0
SLW 1
L MB 1
T AB 1

hat jemand eine idee, wie ich die Lichter visuell auf die Ausgänge übertragen könnte.

mfg bundsaz

ps: bin quasi anfänger
pps: wenn mehr informationen benötigt werden, bitte posten oder pm
 
Guten Morgen,
ein Knight Rider Licht müsste eigentlich immer hin und her laufen, sonst hätte er es anders betiteln müssen ;)
 
Hier ein Bsp. mit 'nem Wort, dass ich gemacht habe. D.h. , es wird das AB0 (A0.0-A0.7) und das AB1 (A1.0-A1.7) verwendet. Kurzgesagt, das Lauflicht erstreckt sich über beide ABs.

U E 0.1
SPB m02

U M 100.0 //Taktmerker
U E 0.0 //E_Start
UN M 20.0 //Setz_Merker
FP M 30.0 //pos. Flanke
S A 1.0 //A0.1 gesetzt
S M 20.0
U M 100.0
U E 0.0
FP M 30.1
SPB m01

BEA
m01: L AW 0
SLW 1
T AW 0
U A 0.7
FN M 30.2
R M 20.0

BEA
m02: L 0
T AW 0

Nun will ich aber, dass das Knight Rider Lauflich jeweils in AB0 und AB1 aktiv ist.
Angeblich muss ich nur paar veränderungen in dem Beispiel siehe oben vornehmen.
Ich soll mit 'nem Merkerbyte, Ausgangsbyte arbeiten.
Aber irgendwie klappt es net :confused:
Hat jemand einen vorschlag?



PS: Die Ausgänge sind Horizontal aufgebaut, also hardwaremäßig. Was bedeuten würde, dass sich das Lauflicht von links => recht und von rechts => links bewegt ^^
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich verstehe noch nicht ganz, was Du machen willst. :confused:

In Deinem Beispiel hast Du das AW0. Das Lauflicht startet bei A1.0 (also ganz rechts) und läuft nach links. Wenn das Lauflicht an A0.7 angekommen ist (also ganz links) startet es wieder bei A1.0 (also ganz rechts). Das Lauflicht läuft also nur in einer Richtung, nämlich von rechts nach links.

Code:
           AW0
 
A0.7 - A0.0   A1.7 - A1.0
 
Ende               Anfang      
 
   <-  Laufrichtung

Und jetzt willst Du Dein Lauflicht aufgeteilt haben auf das AB0 und das AB1. Wie soll aber die Laufrichtung in den beiden ABs nun sein?

In beiden ABs von außen nach innen?

Code:
       AB0                    AB1
 
A0.7    -    A0.0      A1.7    -    A1.0
 
Anfang       Ende      Ende       Anfang 
 
 Laufrichtung ->        <- Laufrichtung

Oder in beiden Abs von innen nach außen?

Code:
       AB0                    AB1
 
A0.7    -    A0.0      A1.7    -    A1.0
 
Ende       Anfang      Anfang       Ende
 
 <- Laufrichtung        Laufrichtung ->

Oder in beiden ABs jeweils von außen nach innen und von innen nach außen?

Code:
       AB0                     AB1
 
A0.7    -     A0.0      A1.7    -     A1.0
 
<- Laufrichtung ->      <- Laufrichtung ->

Oder vielleicht noch ganz anders?

Gruß Kai
 
ups sry.
das eigentliche Bsp. mit dem Knight Rider sieht so aus:


Netzwerk 1:

//Bit erzeugen und setzen
U A 0.7
S M 40.0
U M 40.0
SPB m04

U E 0.5
SPB m02
//Schiebe_Links--------------------------------------
U M 100.0 //Taktmerker
U E 0.0 //E_Start
UN M 20.0 //Setz_Merker
FP M 30.0 //pos. Flanke
S A 1.0 //A0.1 gesetzt
S M 20.0
U M 100.0
U E 0.0
FP M 30.1
SPB m01

BEA

m01: L AW 0
SLW 1
T AW 0

BEA

Netzwerk 2:

//Schiebe_Rechts--------------------------------------
m04: NOP 0

U M 100.0 //Taktmerker
U E 0.0 //E_Start
UN M 20.0 //Setz_Merker
FP M 30.0 //pos. Flanke
S A 0.7 //A0.1 gesetzt
S M 20.0
U M 100.0
U E 0.0
FP M 30.1
SPB m03

BEA

m03: L AW 0
SRW 1
T AW 0
U A 1.0
R M 40.0

BEA

Netzwerk 3:

m02: L 0
T AW 0
BEA


Das Lauflich soll in beiden ABs von li nach re und von re nach li
Also praktisch Night Rider Zweifach oder so.
Demnach die dritte methode, die du aufgelistet hast.
 
Zuletzt bearbeitet:
Ist das hier so richtig?

Code:
[B][U][COLOR=#ff0000]Netzwerk 1:[/COLOR][/U][/B]
 
//Bit erzeugen und setzen
      [COLOR=red]U     A      0.7[/COLOR]
[COLOR=red]      U     A      1.7[/COLOR]
      S     M     40.0
      U     M     40.0
      SPB   m04
 
      U     E      0.5
      SPB   m02
//Schiebe_Links--------------------------------------
      U     M    100.0                  //Taktmerker
      U     E      0.0                  //E_Start
      UN    M     20.0                  //Setz_Merker
      FP    M     30.0                  //pos. Flanke
      [COLOR=red]S     A      0.0                  //A0.0 gesetzt[/COLOR]
[COLOR=red]      S     A      1.0[/COLOR]                  //A1.0 gesetzt
      S     M     20.0
      U     M    100.0
      U     E      0.0
      FP    M     30.1
      SPB   m01
 
      BEA   
 
m01:  [COLOR=red]L     AB     0[/COLOR]
      SLW   1
      [COLOR=red]T     AB     0[/COLOR]
      [COLOR=red]L     AB     1[/COLOR]
      SLW   1
      [COLOR=red]T     AB     1[/COLOR]
[COLOR=#ff0000][/COLOR] 
      BEA   
 
[B][U][COLOR=#ff0000]Netzwerk 2:[/COLOR][/U][/B]
 
//Schiebe_Rechts--------------------------------------
m04:  NOP   0
 
      U     M    100.0                  //Taktmerker
      U     E      0.0                  //E_Start 
      UN    M     20.0                  //Setz_Merker
      FP    M     30.0                  //pos. Flanke 
      [COLOR=red]S     A      0.7[/COLOR]                  //A0.1 gesetzt
      [COLOR=red]S     A      1.7[/COLOR]
      S     M     20.0
      U     M    100.0
      U     E      0.0
      FP    M     30.1
      SPB   m03
 
      BEA   
 
m03:  [COLOR=red]L     AB     0[/COLOR]
      SRW   1
      [COLOR=red]T     AB     0[/COLOR]
      [COLOR=red]L     AB     1[/COLOR]
      SRW   1
      [COLOR=red]T     AB     1[/COLOR]
      [COLOR=red]U     A      0.0[/COLOR]
[COLOR=red]      U     A      1.0[/COLOR]
      R     M     40.0
 
      BEA   
 
[B][U][COLOR=#ff0000]Netzwerk 3:[/COLOR][/U][/B]
 
m02:  L     0
      T     AW     0
      BEA

Gruß Kai
 
Hallo nochmal ;)

hier erstma das Proggi:
Code:
[B]Netzwerk 1:[/B]
 
//Abfrage auf 1-Signal
      U     A      0.7
      S     M     40.0
      U     M     40.0
      SPB   m04
//AW0 auf 0 setzten
      U     E      0.1
      FP    M     30.5
      SPB   m02
//Schiebe_Links--------------------------------------
      U     M    100.0                  //Taktmerker
      U     E      0.0                  //E_Start
      UN    M     20.0                  //Setz_Merker
      FP    M     30.0                  //pos. Flanke
      S     A      1.0                  //A0.1 gesetzt
      S     M     20.0
      U     M    100.0
      U     E      0.0
      FP    M     30.1
      SPB   m01
      BEA   
[B]m01:[/B] L     AW     0
       SLW   1
       T     AW     0
       BEA  
 
[B]Netzwerk 2:[/B] 
 
//Schiebe_Rechts--------------------------------------
[B]m04:[/B]  NOP   0
         U     M    100.0                  //Taktmerker
         U     E      0.0                  //E_Start  
         UN    M     20.0                  //Setz_Merker
         FP    M     30.0                  //pos. Flanke 
         S     A      0.7                  //A0.1 gesetzt
         S     M     20.0
         U     M    100.0
         U     E      0.0
         FP    M     30.1
         SPB   m03
         BEA   
[B]m03:[/B]  L     AW     0
        SRW   1
        T     AW     0
        U     A      1.0
        R     M     40.0
        BEA

Also, dieses Lauflich erstreckt sich über 2 ABs, sprich über ein AW.
Das Problem ist, dass der Ausgang A_1.0 bei starten nicht berücksichtigt wird. Ich jedoch möchte, dass auch dieser Ausgang beim starten aufleuchtet.
Hätt vlt einer 'nen Vorschlag?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
keine zeit im mom da drüber zu gucken.
dieses funktioniert.
Code:
      U     E      0.0
      S     M      1.0
      U     E      0.1
      R     M      1.0
 
      U     M      1.0
      SPB  go
      L     0
      T     AW     0
      T     MW    10
      T     MW    20
      SPA   stop
 
go:   L     S5T#300MS
      UN    M     12.2
      SE    T      1
      U     T      1
      =     M     12.2
 
      UN    M     12.2
      SPB   ok1
      U     M     11.0
      S     M     12.0
      R     M     12.1
      U     M     11.7
      S     M     12.1
      R     M     12.0
 
      UN    M     12.0                  //vor
      SPB   nov1
      L     MW    10
      SLW   1
      T     MW    10
      L     MW    20
      SRW   1
      T     MW    20
nov1: NOP   0
 
      UN    M     12.1                  //zurück
      SPB   nor1
      L     MW    10
      SRW   1
      T     MW    10
      L     MW    20
      SLW   1
      T     MW    20
nor1: NOP   0
 
      L     MW    10                    //1.start
      L     0
      <>I   
      SPB   ok1
      SET   
      =     M     11.0
      =     M     21.7
ok1:  NOP   0
 
      L     MB    11
      T     AB     0
      L     MB    21
      T     AB     1
stop: NOP   0
 
Erweiterung

Hallo Freunde!

Ich bin eigentlich nicht mehr sooo neu hier. Habe hier immer mal wieder rein geschaut und einige Dinge gelesen, um mich mal so zu informieren, was es denn so für Probleme bei SPSn und so gibt.
Eure Hilfe fand ich auch immer sehr gut, weshalb ich mich nun an euch wende.
Bisher war ich "verschohnt" geblieben in Sachen SPS Programmierung. Aber nun soll ich nen kleines Demomodel entwerfen und brauche dazu eure Hilfe.

Ich habe das Lauflicht von Volker hier genommen, da ich es sehr gut finde, dass ich die Geschwindigkeit einstellen kann mit dem Timer oben.

1. Da ich keinen Taster habe und auch nicht verwenden möchte, habe ich das Beispiel von Volker so geändert, dass es eigentlich immer läuft. Sprich ich habe einfach den ersten Teil weggelassen:

Code:
      U     E      0.0
      S     M      1.0
      U     E      0.1
      R     M      1.0
 
      U     M      1.0
      SPB  go
      L     0
      T     AW     0
      T     MW    10
      T     MW    20
      SPA   stop

Mein Lauflicht beginnt also direkt mit dem Timer. Funktioniert eigentlich Problemlos!
Da ich aber wie gesagt ein Demomodel mache, kommt es vor, dass ich die SoftSPS (WinAC) mal kurz un Stop und wieder in Run setze. Oder es kommt vor dass ich die wld (das Programm - adäquat zur MMC in einer klassischen SPS) ändere um ein anderes Demo-Programm zu starten. Gibt verschiedenes, was ich zeigen möchte. Dann passiert aber folgendes: Das AB 1 wird nicht mehr angezeigt.
Ich denke, dass irgendein Merker an oder aus geschaltet bleibt, weshalb das Programm das AB1 nicht mehr anzeigt. Ich weiss aber nicht wie ich das lösen kann, wo also der Haken ist.
Wie kann man das Programm so ändern, dass es immer wieder gleich läuft, egal zu welcher Position das Programm mal angehalt wurde?

2. Ich nutze eine ET200S Compact mit 16DI/DO. Als Ausgang hab ich also eigentlich ein AW. Kann ich das Programm einfach so ändern, dass ich AB0 druch AW0 änderere und das Lauflicht über alle DO läuft (und nicht getrennt)

3. Auch aus dem Grund, weil ich eine ET200S Compact benutze, würde ich gern das Programm so ändern, dass das Lauflicht auf den LED "sauberer" läuft. Die DO liegen als Pärchen immer übereinander:
Code:
A0.0  A0.2  A0.4 ...
A0.1  A0.3  A0.5 ...
Wie kann man das Lauflicht so änder, dass immer "Pärchenweise" die LEDs geschaltet werden. Also immer 0.0+0.1 , 0.2+0.3 , ....


4. Ist es möglich die DI zu schalten? Also dass die DI LEDs leuchten. Es müssten also Eingänge "geforced" werden (???)

(Bitte Fragen 1, 2 und 3 getrennt von einander betrachten)

Ich danke euch für eure Hilfe.

----
kleiner Edit
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Sehr alter Beitrag..... aber hat schon mal jmd. ein Lauflicht in SCL probiert? Ich habs gestern Abend mal kurz probiert, aber nicht so ganz hinbekommen.
Denkansatz war Case 1: Byte 1 mit shl durschschieben, case 2 Byte2... case 3 Byte 2 zurück.... .. Schieben ist nicht das problem, aber das nie 2 LED gleichzeitig kommen, aber auch keine Ausgelassen wird beim Case wechsel... Da hängts noch bisschen. Schon mal jmd. was in die Richtung gemacht?
 
Hallo zusammen,

bin über diese nette Sache hier gestoßen, und auf einen Paar Effekte die ich nicht so recht einordnen kann:
  1. Für was ist die Abzweigung nach m02 gut? Wenn ich die nehme, dann werden zwar die Ausgänge zurück gesetzt, aber die CPU selbst reagiert danach auch nicht mehr, d.h. ich kann das Program nicht mehr starten, sondern muss einen Warmstart machen (CPU hängt sich irgendwie auf).
  2. Nachdem ich also diese Verzweigung als Reset für die Ausgänge betrachte, habe ich mir gedacht ich nehme da einen Merker 200.0 der über E0.0 gesetzt und durch nicht betätigten E0.0 zurück gesetzt wird. In den Netzwerken ersetzte ich dann die E0.0 mit M200.0 usw. Soweit die Theorie, die Praxis zeigte mir aber dass nun das Programm gar nicht mehr will, mehr noch, die CPU kann ich zwar Online gehen lassen und beobachten, aber sie scheint eingefroren zu sein, keine Zustände der VKE / VKA werden angezeigt...

Program sieht so aus (Die Ausgänge laufen gegeneinander):
Netzwerk 1:​
//Bit erzeugen und setzen
U A 100.7
U A 101.0
S M 40.0
U M 40.0
SPB m04

Netzwerk 2:​
//Schiebe_Links--------------------------------------
U M 100.0 //Taktmerker
U M 200.0 //M_Start
UN M 20.0 //Setz_Merker
FP M 30.0 //pos. Flanke
S A 100.0 //A100.0 gesetzt
S A 101.7 //A101.7 gesetzt
S M 20.0
U M 100.0
U M 200.0
FP M 30.1
SPB m01

BEA
m01: L AB 100
SLW 1
T AB 100
L AB 101
SRW 1
T AB 101

BEA

Netzwerk 3:​
//Schiebe_Rechts--------------------------------------
m04: NOP 0

U M 100.0 //Taktmerker
U M 200.0 //M_Start
UN M 20.0 //Setz_Merker
FP M 30.0 //pos. Flanke
S A 100.7 //A100.7 gesetzt
S A 101.0 //A101.0 gesetzt
S M 20.0
U M 100.0
U M 200.0
FP M 30.1
SPB m03

BEA

m03: L AB 100
SRW 1
T AB 100
L AB 101
SLW 1
T AB 101
U A 100.0
U A 101.7
R M 40.0

BEA

Netzwerk 4:
U E 0.0 //E_Start
S M 200.0 //M_Start
UN E 0.0
R M 200.0

Damit sich keiner über meine Belegungen wundert, ich habe eine VIPA 314-6CF02 (dort ist der E0.0) mit der 322-1BH01 verbaut (die hat die A100 & A101).

PS:
Übrigens, ich scheitere ebenso wie Django2012 daran 2 Bits (LED'S) gleichzeitig zu schieben...
 
Hallo!
hab zwar nur überflogen, kann aber die Sprungmarke mo2 nicht entdecken. Ausserdem wir nicht ein bit geschoben sondern das ganze Wort
gruss
 
Nun ja, wie ich schon sagte, der Sinn der originalen Abzweigung entzieht sich mir und funktioniert nicht richtig (s.o.). Also habe ich es modifiziert (siehe mein Programm), und das klappt dann jedoch auch nicht (s.o.)
 
Zurück
Oben