Step 7 Binäruntersetzer

Le Penseur

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Liebe Forumler,

Ich habe dieses Programm aus dem SPS über Binäruntersetzer. Aber ich verstehe nicht warum der Ausgang erst beim 5ten Wechsel von der Flanke von 0 auf 1 low wird.
Code:
            // Netzwerk 1
            U     #Ix_Input            FP    #Positive_Flanke
            =     #IO_Flanke

           // Netzwerk 2

      U     #IO_Flanke
      UN    #Hilfe01
      S     #Hilfe01
      R     #IO_Flanke

    // Netzwerk 3

      U     #IO_Flanke
      U     #Hilfe01
      R     #Hilfe01

// Netzwerk 4
      U     #IO_Flanke
      UN    #Hilfe02
      S     #Hilfe02
      R     #IO_Flanke

// Netzwerk 5

      U     #IO_Flanke
      U     #Hilfe02
      R     #Hilfe02

     // Netzwerk 6

      U     #IO_Flanke
      UN    #Ox_Ausgang
      S     #Ox_Ausgang

     // Netzwerk 7

      U     #IO_Flanke
      U     #Ox_Ausgang
      R     #Ox_Ausgang



      R     #IO_Flanke
 
Ich versteh nicht, warum dein Ausgang überhaupt high werden sollte. Im NW6 wird dein Ausgang beim dritten Wechsel gesetzt. Im NW7 wird er dann aber auch wieder zurückgesetzt, weil IO_Flanke true ist und OX_Ausgang gerade gesetzt wurde.
(BTW, ich würde es vermeiden, den Ausgang einer Funktion in der Funktion abzufragen...)
 
Wie gesagt, das Programm habe ich aus dem Buch entnommen. Hier das Bild.
Du hast einen Fehler beim Abtippen gemacht. In dem Buch ist das Rücksetzen der IO_Flanke beim Setz-Zweig vom Ausgang (Netzwerk 6) (genauso wie bei den beiden Hilfsbits):
Code:
     // Netzwerk 6

      U     #IO_Flanke
      UN    #Ox_Ausgang
      S     #Ox_Ausgang
                        <------+
     // Netzwerk 7             |
                               |
      U     #IO_Flanke         |
      U     #Ox_Ausgang        |
      R     #Ox_Ausgang        |
                               |
                               |
                               |
      [COLOR="#FF0000"]R     #IO_Flanke[/COLOR]  -------+ [COLOR="#FF0000"]die Anweisung gehört zu Netzwerk 6 verschoben[/COLOR]

Harald
 
vielen Dank für den gefundenen Fehler aber ich verstehe immer nocht nicht warum der Ausgang erst beim 5ten Wechseln vom Eingang "#Ix_Input" von low auf high, erst low wird.
weil der Ausgang im 5ten Netzwerk auf High gesetzt wird und im 6ten Netzwerk wieder auf low. Ich würde es logisch finden, wenn der Eingang beim 2ten wechsel
vom Eingang "#Ix_Input" von low auf high, erst low wird.

Danke im Voraus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vermutlich hilft es Dir, wenn Du den zeitlichen Verlauf der Zustände der Bits aufmalst:
Code:
    1   2   3   4   5   6   7   8   9
     _   _   _   _   _   _   _   _   _
    ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^
IO _| |_| |_| |_| |_| |_| |_| |_| |_|

     ___     ___     ___     ___     _
    ^   |   ^   |   ^   |   ^   |   ^
H1 _|   |___|   |___|   |___|   |___|
    R       R       R       R       R
         _______         _______ 
        ^       |       ^       |
H2 _____|       |_______|       |_____
        R               R
                 _______________
                ^               |
A  _____________|               |_____
                R
beim Setzen eines Bits (bei "R") wird #IO_Flanke zurückgesetzt und bewirkt deshalb in den Bits danach (im Programm weiter unten) kein Umschalten
---> man sieht, das Impulsdiagramm im Buch ist nicht ganz korrekt! Der Ausgang geht erst beim 4. Eingangspuls auf 1, und nicht wie gemalt beim 1. Puls

- 1. steigende Flanke IO: setzt H1
- 2. steigende Flanke IO: rücksetzt H1 und setzt H2
- 3. steigende Flanke IO: setzt H1
- 4. steigende Flanke IO: rücksetzt H1 und H2 und setzt A
- 5. steigende Flanke IO: setzt H1
- 6. steigende Flanke IO: rücksetzt H1 und setzt H2
- 7. steigende Flanke IO: setzt H1
- 8. steigende Flanke IO: rücksetzt H1 und H2 und A

- 9. steigende Flanke IO: der Zyklus beginnt wieder wie bei 1. Flanke

Harald
 
Wenn es eine Nummer einfacher bzw. verständlicher sein soll
Bei dieser für Programmieranfänger wohl eher unverständlichen XOR-Variante braucht man für 3- und mehr-stufige Binäruntersetzer mehr Hilfsvariablen (2 pro Stufe) als bei der unschönen und umständlichen Variante aus dem Buch (1 pro Stufe).

Mein Favorit für mehrstufige Binäruntersetzer ist die Verwendung eines Zählers oder einer Zählvariable.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
vielen Dank Harald für die sehr gute Erklärung. ich bin Anfänger und konnte nicht verstehen warum im Buch der Ausgang beim 5ten Impuls auf low geht und nicht beim 4ten.
Nochmal vielen Dank für die Erläuterung.

Grüsse
 
Zurück
Oben