Bitte hilfe (S7 Lite) Inkrmente auslesen und vergleichen

Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe es nun etwas ungemodelt.
Habe ja ein dach und einen Rollo. Der Rollo muss immer zuerst offen sein bevor das Dach aufgeht. Dazu eine Grundstellungsfahrt super toll mit einen Taster integriert.
Es funktioniert alles sehr toll *stolz*

Danke dir, war eien grosse Hilfe.

Code:
// Vorbedingungen:
// in DW 0 steht der Wert mit den aktuellen Incrementen
// in DW 6 steht der Wert mit der zu prüfenden Obergrenze (auf)
// in DW 8 steht der Wert mit der zu prüfenden Untergrenze (zu)
 
// Timerimpuls bilden
 
      UN    M     10.0                            // Abfragen für Timer Reset
      UN    M     10.1                            // Taster oder Grundstellungsfahrt
      O(    
      U     "A124.0_Rollo_Zu"                     // Reset solange Rollo noch ....
      O     "A124.1_Rollo_Auf"                    // ... nicht offen.
      U     M     10.0
      )     
      R     "Timer_Dach"                          // Reset Timer
 
      U     M     10.0                            // Abfrage nach Tipp
      O     M     10.1                            // Abfrage nach Grundstellung
      UN    M    115.0                            // Abfrage nach Impuls
      L     S5T#600MS                             // Zeit für den Impuls
      SE    "Timer_Dach"                          // Einschaltverzögerung als Impuls
      SET   
      U     "Timer_Dach"                          // Wenn die Timer Zeit abgelaufen ...
      =     M    115.0                            // wird der Hilfsmerker Rollo gesetzt
 
T001: UN    M    115.0                            // Zeit läuft noch
      SPB   Ende                                  // Dann ist im Augenblick nichts zu tun
// Grenzwert für auf prüfen
      L     DB1.DBW   10                          // Aktuellen Istwert laden
      L     DB1.DBW    2                          // Aktuellen Sollwert (auf) laden
      >I                                          // Istwert hat Mindestincs nicht erreicht
      S     M    105.0                            // Wir merken uns den Fehler
// Grenzwert für zu prüfen
      L     DB1.DBW   12                          // Aktuellen Istwert laden
      L     DB1.DBW    2                          // Aktuellen Sollwert (zu) laden
      <I                                          // Istwert hat Mindestincs nicht erreicht
      S     M    105.1                            // Wir merken uns den Fehler
// Neue Grenzwerte berechnen
      L     DB1.DBW    2                          // Aktuellen Istwert laden
      L     20                                    // Anzahl Mindextinkremente
      +I                                          // Neuen Sollwert (auf) ausrechen ...
      T     DB1.DBW   10                          // ... und merken
      L     DB1.DBW    2                          // Aktuellen Istwert laden
      L     20                                    // Anzahl Mindextinkremente
      -I                                          // Neuen Sollwert (zu) ausrechen ...
      T     DB1.DBW   12                          // ... und merken
 
// Timer auf jeden Fall neu starten, dies erfolgt mit Flankenwechsel am Eingang
//      L     S5T#1S
//      CLR   
//      SE    "Timer_Dach_Zu"
//      SET   
//      SE    "Timer_Dach_Zu"
 
 
// Abfrage auf alles in ordnung
Ende: NOP   0                                     // Nop
      SET                                         // VKE 1 bilden
      ON    M    105.0                            // Bewegung auf
      ON    M    105.1                            // Bewegung zu
      =     M    105.2                            // Alles ok
 
// Fehlermeldungen Reseten und unterdrücken
      UN    M     10.0                            // Abfrage ob Tipp nicht aktiv
      UN    M     10.1                            // Abfrage ob Grdst. nicht aktiv                              
      O(    
      O     "A124.0_Rollo_Zu"                     // Fehler mit Reset unterdrücken wenn das Dach ...
      O     "A124.1_Rollo_Auf"                    // ... aktiv ist.
      U     M     10.0                            // ..
      )     
      R     M    105.0                            // Reset der ...
      R     M    105.1                            // ... Fehlerauswertung
 
// Bausteinende Bedingt
      BEB
 
Freut mich wenn alles klappt.
Hier kann das SET übrigens entfallen
Code:
      SE    "Timer_Dach"                          // Einschaltverzögerung als Impuls
      SET   
      U     "Timer_Dach"                          // Wenn die Timer Zeit abgelaufen ...
und das hier kann
Code:
// Abfrage auf alles in ordnung
Ende: NOP   0                                     // Nop
      SET                                         // VKE 1 bilden
      ON    M    105.0                            // Bewegung auf
      ON    M    105.1                            // Bewegung zu
      =     M    105.2                            // Alles ok
auch so geschrieben werden:
Code:
// Abfrage auf alles in ordnung
Ende: ON    M    105.0                            // Bewegung auf
      ON    M    105.1                            // Bewegung zu
      =     M    105.2                            // Alles ok
Einfach mal auf dem jeweiligen Befehl F1 drücken und schauen, welche Bits beeinflusst werden.
 
Zurück
Oben