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

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

Thema: [SCL] IN1, IN2, .., INX indirekt adressieren ?

  1. #11
    Avatar von Flux
    Flux ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.03.2012
    Beiträge
    314
    Danke
    60
    Erhielt 9 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Was sind ParallelInstanzen
    ich meinte mehrere Instanzen die "parallel" existieren

    Zitat Zitat von PN/DP Beitrag anzeigen
    Beachte daß Du Deinen Code auch in einem halben Jahr noch verstehen mußt und daß man durch die indirekte Adressierung nicht die Programmausführung einer bestimmten Instanz beobachten kann falls mal eine Fehlersuche nötig wird.
    Jo, ich bin eigentlich ein Freund von L X, T Y ... statt LOOP. Insofern bau ich jetzt das TempArray ein, zum Unmut meines Chefs, der mit den zusätzlich benötigten Speicher vom Gehalt abziehen wird
    We must all suffer from one of two pains: the pain of discipline or the pain of regret. The difference is discipline weighs ounces while regret weighs tons.

  2. #12
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard

    Zitat Zitat von Flux Beitrag anzeigen
    ich meinte mehrere Instanzen die "parallel" existieren
    Ja aber die werden nicht parallel abgearbeitet, sondern genau so wie in der Schleife nacheinander.

    Zitat Zitat von Flux Beitrag anzeigen
    Jo, ich bin eigentlich ein Freund von L X, T Y ... statt LOOP. Insofern bau ich jetzt das TempArray ein, zum Unmut meines Chefs, der mit den zusätzlich benötigten Speicher vom Gehalt abziehen wird
    Spricht eigentlich was dagegen, gleich ein Array dem Baustein zu übergeben?
    Dann ersparst du dir das kopieren auch.

  3. #13
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von Flux Beitrag anzeigen
    ich meinte mehrere Instanzen die "parallel" existieren
    Ist das jetzt nur ein laienhafter Pleonasmus ala "tote Leiche" oder enthält Deine Wortwahl noch eine für Deine Frage relevante Information?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #14
    Avatar von Flux
    Flux ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.03.2012
    Beiträge
    314
    Danke
    60
    Erhielt 9 Danke für 8 Beiträge

    Standard

    Lass das "parallel"einfach weg

  5. #15
    Registriert seit
    06.10.2003
    Beiträge
    3.413
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard

    Zitat Zitat von Flux Beitrag anzeigen
    .. Insofern bau ich jetzt das TempArray ein, zum Unmut meines Chefs, der mit den zusätzlich benötigten Speicher vom Gehalt abziehen wird
    Zu Recht tut er das. UDTs als IN_OUT und dann auch noch umkopieren nach TEMP ist schon übelst recourcenfressend. Indirekte Adressierung kommt nicht in Betracht? Wenn man es gut kommentiert ist es durchaus ordentlich machbar.
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  6. #16
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von Onkel Dagobert Beitrag anzeigen
    Zu Recht tut er das. UDTs als IN_OUT und dann auch noch umkopieren nach TEMP ist schon übelst recourcenfressend
    Wenn man in KOP/FUP/AWL UDTs als IN_OUT übergibt stimmt das mit dem Ressourcenfressen, aber nicht in SCL. Und das steht hier im Threadtitel.

  7. #17
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Wenn man in KOP/FUP/AWL UDTs als IN_OUT übergibt stimmt das mit dem Ressourcenfressen, aber nicht in SCL.
    SCL "frisst" in dem Fall zwar tatsächlich etwas weniger Ressourcen als AWL, frisst aber auch. Um die Adressberechnung zum UDT-Member an INOUT kommt auch SCL nicht herum. (mal abgesehen von möglichen Compiler-Optimierungen bei Folge-Zugriffen auf andere Variablen des selben INOUT-UDT)

    Wird der UDT an IN eines FB übergeben, dann benötigt SCL genau wie AWL 4 Byte Programmcode für den Zugriff auf eine INT-Variable aus dem UDT.
    Wird der UDT an INOUT eines FB übergeben, dann benötigt AWL 42 Byte Programmcode, SCL benötigt "ressourcensparend" nur 26 Byte.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #18
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Wird der UDT an IN eines FB übergeben, dann benötigt SCL genau wie AWL 4 Byte Programmcode für den Zugriff auf eine INT-Variable aus dem UDT.
    Wird der UDT an INOUT eines FB übergeben, dann benötigt AWL 42 Byte Programmcode, SCL benötigt "ressourcensparend" nur 26 Byte.
    Toll, und wenn ich den FB lösche habe ich sogar nochmal 26 Bytes gespart

    Es macht nicht viel Sinn IN und IN_OUT miteinander zu vergleichen. Man verwendet IN_OUT ja nicht weil der Name so toll ist, sondern weil man die Funktion haben möchte.

  9. #19
    Avatar von Flux
    Flux ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.03.2012
    Beiträge
    314
    Danke
    60
    Erhielt 9 Danke für 8 Beiträge

    Standard

    Hm, woher habt ihr die zahlen? compilierten bst ohne quelle öffnen und anweisungen zählen? wieviel programmcode bräuchte die fb-interne idb-adressierung im vergleich, pi mal schnauze versteht sich?

  10. #20
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Es macht nicht viel Sinn IN und IN_OUT miteinander zu vergleichen. Man verwendet IN_OUT ja nicht weil der Name so toll ist, sondern weil man die Funktion haben möchte.
    Wenn man IN_OUT braucht dann muß man selbstverständlich IN_OUT benutzen - egal was es kostet.

    Meinen Vergleich habe ich gebracht, weil Du behauptet hast, das ressourcenfressende Vergrößern des Programmcodes gäbe es nur bei KOP/FUP/AWL aber nicht bei SCL. Und das ist leider nicht korrekt.


    Zitat Zitat von Flux Beitrag anzeigen
    Hm, woher habt ihr die zahlen? compilierten bst ohne quelle öffnen und anweisungen zählen? wieviel programmcode bräuchte die fb-interne idb-adressierung im vergleich, pi mal schnauze versteht sich?
    Im FB egal ob Zugriff auf IN/OUT/STAT oder TEMP: 4 Byte
    Zugriff auf eine Variable in einem UDT an IN_OUT: 26 Byte bei SCL-Quelle bzw. 42 Byte bei KOP/FUP/AWL-Quelle
    Auch deshalb ist es oft sinnvoll, UDT zur Verarbeitung zuerst von IN_OUT in TEMP zu kopieren.

    Codegröße ermitteln:
    - SCL Quelle übersetzen
    - den erzeugten Baustein in einen anderen Bausteine-Ordner kopieren
    - da den Baustein öffnen - man sieht den erzeugten AWL-Code
    - den Baustein einmal speichern --> Bausteingröße wird nun 2 Byte größer als das SCL-Compilat
    - diese Bausteingröße merken --> als Bausteingröße_vorher
    - nun den interessierenden Code löschen oder auskommentieren
    - den Baustein speichern --> Bausteingröße_vorher minus Bausteingröße_jetzt entspricht dem Bedarf des Codes

    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. Step 7 ANY-Pointer Indirekt Adressieren
    Von Heini im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 25.09.2013, 15:35
  2. String indirekt adressieren
    Von The Dude im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 22.06.2011, 12:21
  3. SCL indirekt Adressieren
    Von Nafura im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 19.05.2011, 21:42
  4. DB-Pointer indirekt Adressieren
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.03.2004, 16:59
  5. ANY-Pointer indirekt adressieren
    Von Anonymous im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 14.02.2004, 15:41

Lesezeichen

Berechtigungen

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