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

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

Thema: AWL Befehl aus Step7 in FUP 1200

  1. #11
    Itschi77 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.01.2014
    Beiträge
    19
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ach so! Und wenn ich addieren würde dann würde in Akku1 30 stehen?

  2. #12
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Ja, siehe oben mein PS.

  3. #13
    Itschi77 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.01.2014
    Beiträge
    19
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    OK. Das habe ich hoffentlich verinnerlicht. Aber da die 1200er ja kein AWL kann, muss ich ihr den Vergleich irgendwie anders beibiegen. Hast Fu da auch noch eine Idee?

  4. #14
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Den 1. Vergleich von Post 1?

    Da mußt Du halt schauen, was vorher (gibt's da noch Netzwerke davor?) in die Akkus geladen wird. Denn das wird ja dort verglichen.
    So pur, wie's da steht, ist es eh' unsauber programmiert. Das haben zu Recht schon meine Vorredner angemerkt.

    Um bei dem Problem weiter zu helfen, bräuchte man also mehr Info's. Z.B. den kompletten Baustein oder sogar die Bausteine, die diesen aufrufen.

  5. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    Itschi77 (14.01.2014)

  6. #15
    Itschi77 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.01.2014
    Beiträge
    19
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielleicht kann sich das ja jemand ansehen und etwas zu sagen. Es ist im Grunde immer das gleiche. Netzwerk für Netzwerk und Sprung für Sprung nur die DB11 Adressen ändern sich. Wenn ich jetzt die eine Geschicht mit der Akkuabfrage hin bekommen würde, wäre ja der Rest in FUP einfach

    Der Aufruf erfolgt in OB1 UC FC2

    Register 4 auswerten
    L L#-1
    L DB11.DBD14 Register 1_4
    ==D
    SPB M1
    L DB47.DBD14 InstanzDB Zähler
    <D
    SPB M1
    >=D
    S M10.0
    L L#-1
    T DB11.DBD14 Register 1_4

    M1: L L#-1
    L DB11.DBD18 Register 2_4
    ==D
    SPB M2
    L DB47.DBD14
    L DB11.DBD18
    <D
    SPB M2
    >=D
    S M10.0
    L L#-1
    T DB11.DBD18
    M2: L L#-1
    L DB11.DBD22 Register 3_4
    ==D
    SPB M3
    L DB47.DBD14
    L DB11.DBD22
    <D
    SPB M3
    >=D
    S M10.0
    L L#-1
    T DB11.DBD22
    M3: L L#-1
    L DB11.DBD22 Register 4_4
    ==D
    SPB M3
    L DB47.DBD14
    L DB11.DBD26
    <D
    SPB M3
    >=D
    S M10.0
    L L#-1
    T DB11.DBD26
    M4: L L#-1
    L DB11.DBD22 Register 5_4
    ==D
    BEB
    L DB47.DBD14
    L DB11.DBD30
    <D
    BEB
    >=D
    S M10.0
    L L#-1
    T DB11.DBD22

    Ist es nicht so das das einfach zwei unterschiedliche Vergleiche mit den selben Werten sind?!
    L DB47.DBD14
    L DB11.DBD22
    <D
    SPB M3
    >=D
    S M10.0
    Er läd die Werte aus den beiden DB's in die Akkus und sagt einmal <D SPB M3 und dann werden die DB's nochmal >=D verglichen.
    Also mache ich im FUP ein NW mit L DB47, L DB11 <D und ein NW wieder L DB47, L DB11 und dann >=D
    Oder??? Ist das die Lösung
    Geändert von Itschi77 (14.01.2014 um 03:43 Uhr) Grund: Vermeintlicher Geistesblitz

  7. #16
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von Itschi77 Beitrag anzeigen
    Ist es nicht so das das einfach zwei unterschiedliche Vergleiche mit den selben Werten sind?!
    L DB47.DBD14
    L DB11.DBD22
    <D
    SPB M3
    >=D
    S M10.0
    Er läd die Werte aus den beiden DB's in die Akkus und sagt einmal <D SPB M3 und dann werden die DB's nochmal >=D verglichen.
    Also mache ich im FUP ein NW mit L DB47, L DB11 <D und ein NW wieder L DB47, L DB11 und dann >=D
    Oder??? Ist das die Lösung
    Ja, richtig!
    <D und >=D vergleichen nicht DB-Werte sondern den momentanen Inhalt von AKKU1 und AKKU2.
    Du mußt also logisch 'rauskriegen, was zum Zeitpunkt des Vergleiches in den AKKUs steht, damit Du die Parameter in FUP angeben kannst. Der ursprüngliche AWL-Programmierer hat sich das erneute Laden der DB-Werte in die AKKUs gespart, bei FUP geht diese Abkürzung aber nicht.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Itschi77 (14.01.2014)

  9. #17
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Um Deinen AWL-Code in FUP umzusetzen solltest Du Dich nicht stoisch an den AWL-Code halten, sondern zunächst den Sinn verstehen und den dann in FUP programmieren. Insbesondere solltest Du nicht versuchen, die ganzen Sprünge SPB und BEB in FUP zu übernehmen.
    Die für Dich zunächst unverständlichen >=D im AWL-Code sind sogar überflüssig, weil vorher schon bei <D der Code übersprungen wird.

    Ich hoffe mal, die vielen logischen Fehler in Deinem Code in Beitrag #15 sind nur Tippfehler, die Du beim Abtippen des Codes für das Forum gemacht hast...

    Im Grunde mußt Du nur 5x das folgende FUP-Netzwerk erstellen und dabei immer den DB11.DBD... anpassen.
    Code:
    //Zähler mit Register 1_4 vergleichen
                +--------+
                | CMP<>D |
    DB11.DBD22--|IN1     |   +-------+
                |        |   |   &   |
          L#-1--|IN2     |---|       |
                +--------+   |       |
                             |       |
                +--------+   |       |
                | CMP>=D |   |       |             M10.0
    DB47.DBD14--|IN1     |   |       |          +--------+
                |        |   |       |          |    S   |
    DB11.DBD22--|IN2     |---|       |--+-------|        |
                +--------+   +-------+  |       +--------+
                                        |
                                        |       +--------+
                                        |       |  MOVE  |
                                        +-------|EN   OUT|--DB11.DBD22
                                                |        |
                                         L#-1---|IN   ENO|--
                                                +--------+
    So geht's auch (der compilierte Programmcode wird etwas kürzer):
    Code:
                +--------+
                | CMP<>D |
    DB11.DBD22--|IN1     |   +-------+
                |        |   |   &   |
          L#-1--|IN2     |---|       |
                +--------+   |       |
                             |       |
                +--------+   |       |
                | CMP>=D |   |       |
    DB47.DBD14--|IN1     |   |       |          +--------+
                |        |   |       |          |  MOVE  |                M10.0
    DB11.DBD22--|IN2     |---|       |----------|EN   OUT|--DB11.DBD22  +-------+
                +--------+   +-------+          |        |              |   S   |
                                          L#-1--|IN   ENO|--------------|       |
                                                +--------+              +-------+
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Itschi77 (14.01.2014)

  11. #18
    Itschi77 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.01.2014
    Beiträge
    19
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,
    schon mal vielen vielen dank für Eure Hilfe.
    Also ich befürchte das die logischen Fehler das sind wo nach es aussieht, nämlich logische Fehler. Ich kann noch mal gucken, da ich es in der Nachtschicht abgetippt habe, aber ich glaube das ich nichts falsch abgetippt habe.
    Es steht ja auch zwischen jedem Sprung das gleiche, es ändert sich immer nur die Adresse im DB11. Auch die anderen FC's sehen im Grunde so aus. Register 1 auswerten ist auch so aufgebaut DB47 ist immer Countervalue (der wird wohl vom Inkrementalgeber angesteuert) und dann wieder die DB11's mit den Verschiedenen Adressen und anstatt zb M10.0 dann zb M10.1
    Wenn ich gleich richtig wach bin gucke ich mir mal Deinen FUP an. Wie gesagt vielen Dank dafür!So, erstmal Frühstücken

  12. #19
    Itschi77 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.01.2014
    Beiträge
    19
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Harald,
    wenn ich deinen Programmcode richtig verstehe, dann gehst du das Problem nicht so an das du sagst "wenn der cmp=1 dann spb, wenn der cmp=1 dann spb, wenn das alles nicht VKE 1 ist dann S M10.0"
    Sondern du arbeitest alle Bedingungen ab die nötig sind um M 10.0 zu setzten und wenn die nicht gegeben sind dann geht die SPS halt einfach weiter zum nächsten NW.
    Verstehe ich das richtig?
    VG
    Michael

  13. #20
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie bereits gesagt: man sollte nicht versuchen, den AWL-Code 1:1 umzusetzen (das ergibt "unschönes" FUP), sondern den Sinn des AWL-Codes erforschen und so übersichtlich wie möglich in FUP neu programmieren. Sinn eines FUP-Programmes ist es nicht, besonders schnellen Code zu produzieren, sondern übersichtlich und leicht verständlich zu sein.


    Der Sinn des AWL-Codes in #15:
    Wenn in DB11.DBD.. ein Wert <> -1 eingetragen ist und der Zählerstand in DB47.DBD14 >= DB11.DBD.. ist, dann Setze M10.0 und Lösche den Wert in DB11.DBD.. auf -1

    Der AWL-Code macht zunächst den (die) Vergleich(e) und überspringt bei nicht-zutreffen den unnötigen Code.

    Der FUP-Code macht immer beide Vergleiche, auch wenn der erste Vergleich DB11.DBD.. <> -1 schon nicht erfüllt ist und damit das UND nicht erfüllt sein kann. Der "FUP-Compiler" optimiert das nicht (zumindest bei S7-300/400) und ist dadurch geringfügig langsamer als die unübersichtliche AWL-Springerei. Will man unbedingt, daß schon bei nicht-erfülltem ersten Vergleich der Rest übersprungen wird, dann muß man den FUP-Code auf 2 oder 3 Netzwerke aufteilen:
    1. nur der Vergleich DB11.DBD.. <> -1 und überspringen des zweiten Netzwerkes falls nicht erfüllt
    2. der Vergleich Zähler >= DB11.DBD.. und Setzen des M10.0 und löschen des DB11.DBD.. auf -1
    3. die Ziel-Sprungmarke für das Überspringen

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 27
    Letzter Beitrag: 26.11.2012, 10:41
  2. AWL in FUP
    Von galliman81 im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 06.12.2010, 20:31
  3. Fachliteratur Step7, AWL, FUP, SCL
    Von Toki0604 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 10.11.2010, 19:32
  4. AWL zu FUP
    Von Waldi_März im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 10.11.2008, 12:40
  5. STEP7: Bausteine von AWL in FUP wandeln
    Von Oeffi im Forum Simatic
    Antworten: 24
    Letzter Beitrag: 01.07.2008, 23:10

Lesezeichen

Berechtigungen

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