Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: s7 Anfänger code erweitert aber falsch

  1. #11
    sRobert ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.07.2016
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @ 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..

  2. #12
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.217
    Danke
    235
    Erhielt 325 Danke für 298 Beiträge

    Standard

    Wenn Silo 1 angewählt ist, wird aber trotzdem Silo2 aus oben genannten Gründen bearbeitet.

  3. #13
    sRobert ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.07.2016
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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

  4. #14
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.217
    Danke
    235
    Erhielt 325 Danke für 298 Beiträge

    Standard

    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
    
    SPA e05
    // 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.

  5. #15
    Registriert seit
    27.07.2007
    Beiträge
    223
    Danke
    17
    Erhielt 41 Danke für 40 Beiträge

    Standard

    Zitat Zitat von borromeus Beitrag anzeigen
    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.

  6. #16
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.217
    Danke
    235
    Erhielt 325 Danke für 298 Beiträge

    Standard

    Zitat Zitat von Hohlkörper Beitrag anzeigen
    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.

  7. #17
    sRobert ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.07.2016
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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

  8. #18
    Registriert seit
    27.07.2007
    Beiträge
    223
    Danke
    17
    Erhielt 41 Danke für 40 Beiträge

    Standard

    Zitat Zitat von borromeus Beitrag anzeigen
    Es spräche ja nichts dagegen, VOR dem Herumgezähle die Flanke zu bilden.
    Das wäre sicherlich die sauberere Lösung.

  9. #19
    sRobert ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.07.2016
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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.
    Geändert von sRobert (10.08.2016 um 15:11 Uhr)

  10. #20
    Registriert seit
    15.05.2015
    Beiträge
    39
    Danke
    1
    Erhielt 8 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wieso machst du das nicht einfach in Fup mit Zählerbausteinen ?
    http://www.sps-lehrgang.de/zaehler-in-fup/
    Geändert von TP-Inc (10.08.2016 um 18:47 Uhr)

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 30.03.2016, 23:04
  2. Antworten: 1
    Letzter Beitrag: 06.08.2013, 19:24
  3. Antworten: 0
    Letzter Beitrag: 18.05.2011, 09:34
  4. SPS mit PC Steuern aber wie, bin Anfänger?
    Von sonic_229 im Forum CODESYS und IEC61131
    Antworten: 12
    Letzter Beitrag: 24.11.2010, 13:53
  5. Antworten: 15
    Letzter Beitrag: 01.03.2005, 22:25

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •