Step 7 s7 Anfänger code erweitert aber falsch

sRobert

Level-1
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
moin allerseits

Anfänger mal wieder hier.
Kann mir evtl jemand erklären wieso die Erweiterung des Codes das Ganze dazu bringt das nichts mehr ordentlich funktioniert?

Kurze Erklärung.
3 Silos die man anwählen kann
2 Taster , einer zum Auffüllen einer zum Entleeren
Resetmöglichkeit
Das ganze ist noch im aufbau und es fehlen noch einige Funktionen aber das sollte erstmal für das Problem nicht hinderlich sein.

Verändert habe ich nur den Teil bei Silo 2
Da habe ich einen Rückwärtszähler mit der Taste 2 einbauen wollen. Mit sprüngen. Also Taster 1 springe zu Vorwärtszählen, Taster 2 springe zu Rückwärts
Vorher war der Aufbau ( silo 1 silo 2 silo 3) identisch und alles ging wie gewollt.

Offensichtlich hat es was mit den Sprungpunkten zu tun bzw mit dem zyklischen Ablauf der sich gerade selber beisst...aber ich seh das nicht..
Code:
// es darf nur ein Silo angewählt werden
// sind mehr als eins oder keins angewählt passiert nix

      U     "U09SpID".SchulA9T19.Sig    // Anwahl Silo 1
      UN    "U09SpID".SchulA9T20.Sig
      UN    "U09SpID".SchulA9T21.Sig
      =     "U09SeqD".Seq.User.Bit1
      SPB   sil1                        // springe Silo 1

      UN    "U09SpID".SchulA9T19.Sig
      U     "U09SpID".SchulA9T20.Sig    // Anwahl Silo 2
      UN    "U09SpID".SchulA9T21.Sig
      =     "U09SeqD".Seq.User.Bit2
      SPB   sil2                        // springe Silo 2

      UN    "U09SpID".SchulA9T19.Sig
      UN    "U09SpID".SchulA9T20.Sig
      U     "U09SpID".SchulA9T21.Sig    // Anwahl Silo 3
      =     "U09SeqD".Seq.User.Bit3
      SPB   sil3                        // springe Silo 3

// Silo 1
sil1: SET   
// Zähler vorwärts Silo 1
      U     "U09SeqD".Seq.User.Bit1     // nötig da sonst mehrere MW´s mitzählen
      U     "U09SpID".SchulA9T17.Sig
      UN    "U09SeqD".Seq.User.Bit4
      SPBN  e01

      L     MW    10
      L     1
      +I    
      T     MW    10

e01:  U     "U09SpID".SchulA9T17.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit4

// Silo 2
sil2: SET   
// Auswahl vorwärts oder rückwärts zählen
      U     "U09SeqD".Seq.User.Bit2     // nötig da sonst mehrere MW´s mitzählen
      U     "U09SpID".SchulA9T17.Sig    // Taster vorwärtszählen 
      SPB   vzs2                        // springe zu Vorwärtszähler Silo 2

      U     "U09SeqD".Seq.User.Bit2     // nötig da sonst mehrere MW´s mitzählen
      U     "U09SpID".SchulA9T18.Sig    // Taster rückwärtszählen
      SPB   rzs2                        // springe zu Rückwärtszähler Silo 2

// Zähler vorwärts Silo 2
vzs2: UN    "U09SeqD".Seq.User.Bit5
      SPBN  e02

      L     MW    20
      L     1
      +I    
      T     MW    20

e02:  U     "U09SpID".SchulA9T17.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit5


// Zähler rückwärts Silo 2
rzs2: UN    "U09SeqD".Seq.User.Bit8
      SPBN  e05

      L     MW    20
      L     1
      -I    
      T     MW    20

e05:  U     "U09SpID".SchulA9T18.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit8



// Silo 3
sil3: SET   
// Zähler vorwärts Silo 3
      U     "U09SeqD".Seq.User.Bit3     // nötig da sonst mehrere MW´s mitzählen
      U     "U09SpID".SchulA9T17.Sig
      UN    "U09SeqD".Seq.User.Bit6
      SPBN  e03

      L     MW    30
      L     1
      +I    
      T     MW    30

e03:  U     "U09SpID".SchulA9T17.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit6

// reset Silo 1 2 oder 3
      U     "U09SpID".SchulA9T17.Sig    // sig 17 und sig 18 gleichzeitig = reset
      U     "U09SpID".SchulA9T18.Sig
      U     "U09SeqD".Seq.User.Bit1     // Silozuordnung (Silo 1)
      SPB   res1                        //Sprung zu Reset Silo 1

      U     "U09SpID".SchulA9T17.Sig    // sig 17 und sig 18 gleichzeitig = reset
      U     "U09SpID".SchulA9T18.Sig
      U     "U09SeqD".Seq.User.Bit2     // Silozuordnung (Silo 2)
      SPB   res2                        // Sprung zu Reset Silo 2

      U     "U09SpID".SchulA9T17.Sig    // sig 17 und sig 18 gleichzeitig = reset
      U     "U09SpID".SchulA9T18.Sig
      U     "U09SeqD".Seq.User.Bit3     // Silozuordnung (Silo 3)
      SPB   res3                        // Sprung zu Reset Silo 3

      SPA   ende
// Rücksetzten der jeweiligen Silos auf Stand null
res1: SET   
      L     0
      T     MW    10
      SPB   ende

res2: SET   
      L     0
      T     MW    20
      SPB   ende

res3: SET   
      L     0
      T     MW    30
      SPB   ende

ende: CLR   
      =     "U09ActD".SchulA9L17.ACo
      =     "U09ActD".SchulA9L18.ACo
      =     "U09ActD".SchulA9L19.ACo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
na klar.
also das sind einige....

mw 20 ist daueraktiv
insofern zählt wenn silo 1 angewählt ist silo 2 auch mit
ist silo 2 angewählt dann zählt der vorwärtszähler rückwärts und vice versa
noch dazu nicht nur um 1 pro signal sondern dauerhaft solange aktiv

silo 3 geht noch wie vorher, reset ist dort möglich

silo 1 geht kein reset mehr

uvm...
 
also das eigentliche Ziel war einen Rückwärtszähler per Silo dazuzubasteln der per Taster gesteuert wird. Erreicht habe ich offensichtlich etwas ganz anderes
 
Ich denke du musst nach jedem Silo auch einen SPA ans Ende machen, sonst werden die anderen Siloteile ja auch bearbeitet
 
und das ist auch genau das was ich nicht verstehe. MW10 bzw MW 30 wird nur nach Bedarf angesteuert, MW 20 jedoch immer, obwohl der code ja "identisch" ist, also von der Fallunterscheidung mal abgesehen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also Fehler 1:
Code:
sil2: SET   
// Auswahl vorwärts oder rückwärts zählen
      U     "U09SeqD".Seq.User.Bit2     // nötig da sonst mehrere MW´s mitzählen[COLOR=#ff0000]  NICHT ERFÜLLT[/COLOR]
      U     "U09SpID".SchulA9T17.Sig    // Taster vorwärtszählen 
      SPB   vzs2                        // springe zu Vorwärtszähler Silo 2 [COLOR=#ff0000]KEIN SPRUNG[/COLOR]

      U     "U09SeqD".Seq.User.Bit2     // nötig da sonst mehrere MW´s mitzählen  [COLOR=#ff0000]NICHT ERFÜLLT[/COLOR]
      U     "U09SpID".SchulA9T18.Sig    // Taster rückwärtszählen
      SPB   rzs2                        // springe zu Rückwärtszähler Silo 2 [COLOR=#ff0000]KEIN SPRUNG[/COLOR]

// Zähler vorwärts Silo 2
vzs2: UN    "U09SeqD".Seq.User.Bit5
      SPBN  e02

      L     MW    20  [COLOR=#ff0000]TROTZDEM BEARBEITET[/COLOR]
      L     1
      +I    
      T     MW    20

e02:  U     "U09SpID".SchulA9T17.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit5
 
@ centipede
das war leider nicht richtig

@ borromeus
fast
da der schalter für das bit 2 in dem Fall gedrückt bleibt ist die Bedingung erfüllt. Beim Zusatz von sig 17(vorw) bzw sig 18(rückw) springt er auch in an die richtig Stelle.
Und jetzt fängt er an mit tohuwabochu.

wenn bit2 und Taster vorwärts da ist zählt er eine zahl und dann in dem Bereich der fürs Rückwärtszählen gedacht ist dauerhaft rückwärts( hoffe ich interpretiere das richtig)
beim erlöschen des Signals überschreibt er den Wert im Vorwärtszähler mit dem aktuellen aus dem Rückwärtszähler

bei bit2 und rückwärts springt er zwar da hin, überschreibt sich aber den Wert nach beendigung des Signals aus dem Vorwärtszähler

hoffe das versteht einer..
 
Ja das ist richtig.
Ich sehe aber nicht wieso er bei Silo1, das ja gleich aufgebaut ist, das MW 10 nicht bearbeitet wird, wohingegen bei Silo 2 schon
 
Ausserdem fehlt m.E. hier:

Code:
  L     MW    20
      L     1
      +I    
      T     MW    20

e02:  U     "U09SpID".SchulA9T17.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit5

[COLOR=#ff0000]SPA e05[/COLOR]
// Zähler rückwärts Silo 2
rzs2: UN    "U09SeqD".Seq.User.Bit8
      SPBN  e05

      L     MW    20
      L     1
      -I    
      T     MW    20

e05:  U     "U09SpID".SchulA9T18.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit8

Die Konstruktion mit diesen Sperrbits damit "er nicht wie ein Wilder" zählt, ist auch etwas merkwürdig. Sowas würde ich mit Taste->Flanke und einmal durchlaufen lösen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Konstruktion mit diesen Sperrbits damit "er nicht wie ein Wilder" zählt, ist auch etwas merkwürdig. Sowas würde ich mit Taste->Flanke und einmal durchlaufen lösen.

Im Grunde genommen ist der existierende Code ja auch eine Flankenerkennung, nur viel schöner beschrieben.;)
 
Im Grunde genommen ist der existierende Code ja auch eine Flankenerkennung, nur viel schöner beschrieben.;)

Jaja, das ist schon klar, nur werden die Bits da über diverse Sprünge und Verzweigungen eben nicht mehr bearbeitet und dann doch wieder.
Es spräche ja nichts dagegen, VOR dem Herumgezähle die Flanke zu bilden.
 
ook, glaube ich hab da was gesehen.. diese Sperrbits sind vermute ich der Übeltäter

diese stehen nach dem Sprung bzw Permanent auf "vke1 sta0" bei Silo 2, somit bearbeitet er das MW 20
Hingegen bei Silo 1 und 3 stehen diese auf "vke0 sta0" und das wird eben nicht automatisch bearbeitet..
Code:
// Zähler rückwärts Silo 2
rzs2: UN    "U09SeqD".Seq.User.Bit8    <---- der da 
      SPBN  e05
 
Hab das mal gelöst aber sieht für mich unschön aus. Mehr Sprungpunkte definiert und den einzelnen Zählern zugewiesen. Macht aber zumindest alles was es soll.
Code:
// es darf nur ein Silo angewählt werden
// sind mehr als eins oder keins angewählt passiert nix
      U     "U09SpID".SchulA9T19.Sig    // Anwahl Silo 1
      UN    "U09SpID".SchulA9T20.Sig
      UN    "U09SpID".SchulA9T21.Sig
      =     "U09SeqD".Seq.User.Bit1

      UN    "U09SpID".SchulA9T19.Sig
      U     "U09SpID".SchulA9T20.Sig    // Anwahl Silo 2
      UN    "U09SpID".SchulA9T21.Sig
      =     "U09SeqD".Seq.User.Bit2

      UN    "U09SpID".SchulA9T19.Sig
      UN    "U09SpID".SchulA9T20.Sig
      U     "U09SpID".SchulA9T21.Sig    // Anwahl Silo 3
      =     "U09SeqD".Seq.User.Bit3


// Sprungpunkte zu den Zählern
      U     "U09SeqD".Seq.User.Bit1
      U     "U09SpID".SchulA9T17.Sig
      SPB   zvs1

      U     "U09SeqD".Seq.User.Bit2
      U     "U09SpID".SchulA9T17.Sig
      SPB   zvs2

      U     "U09SeqD".Seq.User.Bit3
      U     "U09SpID".SchulA9T17.Sig
      SPB   zvs3

      U     "U09SeqD".Seq.User.Bit1
      U     "U09SpID".SchulA9T18.Sig
      SPB   zrs1

      U     "U09SeqD".Seq.User.Bit2
      U     "U09SpID".SchulA9T18.Sig
      SPB   zrs2

      U     "U09SeqD".Seq.User.Bit3
      U     "U09SpID".SchulA9T18.Sig
      SPB   zrs3

// Silo 1
zvs1: SET   
      U     "U09SeqD".Seq.User.Bit1     // nötig da sonst mehrere MW´s mitzählen
      U     "U09SpID".SchulA9T17.Sig
      UN    "U09SeqD".Seq.User.Bit4
      SPBN  e01

      L     MW    10
      L     1
      +I    
      T     MW    10

e01:  U     "U09SpID".SchulA9T17.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit4

zrs1: SET   
      U     "U09SeqD".Seq.User.Bit1     // nötig da sonst mehrere MW´s mitzählen
      U     "U09SpID".SchulA9T18.Sig
      UN    "U09SeqD".Seq.User.Bit7
      SPBN  e04

      L     MW    10
      L     1
      -I    
      T     MW    10

e04:  U     "U09SpID".SchulA9T18.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit7


// Silo 2
zvs2: SET   
      U     "U09SeqD".Seq.User.Bit2     // nötig da sonst mehrere MW´s mitzählen
      U     "U09SpID".SchulA9T17.Sig
      UN    "U09SeqD".Seq.User.Bit5
      SPBN  e02

      L     MW    20
      L     1
      +I    
      T     MW    20

e02:  U     "U09SpID".SchulA9T17.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit5

zrs2: SET   
      U     "U09SeqD".Seq.User.Bit2     // nötig da sonst mehrere MW´s mitzählen
      U     "U09SpID".SchulA9T18.Sig
      UN    "U09SeqD".Seq.User.Bit8
      SPBN  e05

      L     MW    20
      L     1
      -I    
      T     MW    20

e05:  U     "U09SpID".SchulA9T18.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit8


// Silo 3
zvs3: SET   
      U     "U09SeqD".Seq.User.Bit3     // nötig da sonst mehrere MW´s mitzählen
      U     "U09SpID".SchulA9T17.Sig
      UN    "U09SeqD".Seq.User.Bit6
      SPBN  e03

      L     MW    30
      L     1
      +I    
      T     MW    30

e03:  U     "U09SpID".SchulA9T17.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit6

zrs3: SET   
      U     "U09SeqD".Seq.User.Bit3     // nötig da sonst mehrere MW´s mitzählen
      U     "U09SpID".SchulA9T18.Sig
      UN    "U09SeqD".Seq.User.Bit9
      SPBN  e06

      L     MW    30
      L     1
      -I    
      T     MW    30

e06:  U     "U09SpID".SchulA9T18.Sig    // nötig damit er nur eine Operation durchführt, sonst zählt er wie ein Wilder
      =     "U09SeqD".Seq.User.Bit9


// reset Silo 1 2 oder 3
      U     "U09SpID".SchulA9T17.Sig    // sig 17 und sig 18 gleichzeitig = reset
      U     "U09SpID".SchulA9T18.Sig
      U     "U09SeqD".Seq.User.Bit1     // Silozuordnung (Silo 1)
      SPB   res1                        //Sprung zu Reset Silo 1

      U     "U09SpID".SchulA9T17.Sig    // sig 17 und sig 18 gleichzeitig = reset
      U     "U09SpID".SchulA9T18.Sig
      U     "U09SeqD".Seq.User.Bit2     // Silozuordnung (Silo 2)
      SPB   res2                        // Sprung zu Reset Silo 2

      U     "U09SpID".SchulA9T17.Sig    // sig 17 und sig 18 gleichzeitig = reset
      U     "U09SpID".SchulA9T18.Sig
      U     "U09SeqD".Seq.User.Bit3     // Silozuordnung (Silo 3)
      SPB   res3                        // Sprung zu Reset Silo 3

      SPA   ende
// Rücksetzten der jeweiligen Silos auf Stand null
res1: SET   
      L     0
      T     MW    10
      SPB   ende

res2: SET   
      L     0
      T     MW    20
      SPB   ende

res3: SET   
      L     0
      T     MW    30
      SPB   ende

ende: CLR   
      =     "U09ActD".SchulA9L17.ACo
      =     "U09ActD".SchulA9L18.ACo
      =     "U09ActD".SchulA9L19.ACo

Kann mir evtl jemand beispielhaft zeigen wie die "saubere" Lösung geht? hab mit den FP´s rumprobiert, zumindest lief das wieder normal aber das problem das die Zähler umgangen werden sollten habe ich nicht hingekriegt.
 
Zuletzt bearbeitet:
Zurück
Oben