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

Ergebnis 1 bis 3 von 3

Thema: AWL (IL Logic) Problem mit Schleife

  1. #1
    Registriert seit
    11.08.2014
    Beiträge
    44
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich möchte folgende Funktionalität in mein Programm einbringen:
    Ich habe einen eingelesenen Ist-Wert (Fill1 vom Typ WORD)
    und einen Vorgabewert (SET_Fill1 vom Typ WORD)

    Ich hatte mir folgende Ansteuerung in AWL, bzw IL (Movicon) vorgestellt:

    Code:
    L Fill1
    L SET_Fill1
    > // Fill1 ist groesser als SET_Fill1 und Fill1 und wird um eins verringert
    L Fill1
    L KD 1
    -
    T Fill1 
    BE
    Funktionsprinzip:
    Ich lade Fill1 und SET_Fill1 in den Akku und vergleiche diese miteinander.
    Sofern Fill1 größer ist als SET_Fill1 so wird Fill1 um 1 dekrementiert.
    Mein Problem ist hier, dass die Schleife ewig durchläuft, auch wenn das VKE vom Vergleichsoperator 0 ist.
    Normalerweise soll Fill1 nach X Zyklen den Wert von SET_Fill1 annehmen.
    Die Realität sieht aber so aus, dass es immer gegen 0 geht und diesen Wert dann auch annimmt.

    Wie kann ich das optimieren?

    Bzw. wie würde das in VBA ( WinWrap) aussehen?

    Danke und Gruß
    Geändert von julianpe (26.05.2015 um 15:19 Uhr)
    Zitieren Zitieren AWL (IL Logic) Problem mit Schleife  

  2. #2
    Registriert seit
    11.08.2014
    Beiträge
    44
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habe ein wenig ausprobiert und folgender Code funktioniert:

    Code:
    L Fill1
    L SET_Fill1
    >
    JC MINUS
    L Fill1
    L SET_Fill1
    <
    JC PLUS
    L Fill1
    L SET_Fill1
    ==
    JC EQUAL
    
    :MINUS
    L Fill1
    L KD 1
    -
    T Fill1
    BE
    
    :PLUS
    L Fill1
    L KD 1
    +
    T Fill1
    BE
    
    
    :EQUAL
    L SET_Fill1
    T Fill1
    Kann man das noch einfacher umsetzen?

  3. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bei EQUAL brauchst du gar nichts machen, denn die beiden Variablen sind ja ohnehin identisch.

    Also einfacher:

    Code:
    L Fill1
    L SET_Fill1
    >
    JC MINUS
    L Fill1
    L SET_Fill1
    <
    JC PLUS
    JMP EQUAL
    
    :MINUS
    L Fill1
    L KD 1
    -
    T Fill1
    BE
    
    :PLUS
    L Fill1
    L KD 1
    +
    T Fill1
    BE
    
    
    :EQUAL
    JMP soll ein unbedingter Sprung sein (Kenne in deiner Steuerung nicht den Befehl dafür).



    Geändert von Ralle (26.05.2015 um 15:35 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. Step 7 AWL - Schleife mit Array
    Von bo1986 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.06.2013, 12:57
  2. awl schleife und pointer
    Von Iserlohner im Forum Simatic
    Antworten: 28
    Letzter Beitrag: 18.02.2011, 09:12
  3. IF oder FOR Schleife in AWL?
    Von motamas im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 21.07.2010, 14:19
  4. Problem mit Flex Logic 1794-VHSC
    Von spskarl im Forum Sonstige Steuerungen
    Antworten: 6
    Letzter Beitrag: 19.06.2007, 09:23
  5. AWL Schleife
    Von Anonymous im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 31.07.2003, 07:05

Lesezeichen

Berechtigungen

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