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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Dynamische DB Adressierung bei SCL

  1. #11
    Registriert seit
    16.09.2006
    Beiträge
    36
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ....evtl. hast D uda recht.

    Das was mir gut an SCL gefällt, ist die Symbolische Adressierung, und die schalte ich ja mit so einer Massnahme aus

    Ich versuche das Ding mir der UDT Übergabe zu realisieren.

    Noch eine Frage hierzu:

    wenn ich einen Datentyp ändere und den DB neu Übersetze, gleicht sich dann der SCL code automatisch mit ab, oder verschiebt er sich, so wie ein in AWL geschriebener Code?

    noch eine Frage :

    Hat schon Jemand die Unterschiede AWL vs SCL in Punkto Pervormance aufgenommen oder gibt es hierzu Erfahrungen?

  2. #12
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Hallo,
    wenn du den UDT oder den DB-Aufbau änderst, so kann SCL das nur nachvollziehen, wenn ihm diese Maßnehmen bekannt sind und du den SCL-Baustein neu generierst (compilierst). Das würdest du natürlich automatisch tun, wenn deine Daten Bestandteil der FB-Instanz sind (deshalb der Vorschlag) und der FB die Daten wahlweise ausgibt oder wieder aufnimmt. Das kann man z.B. durch eine entsprechende Binär-Beschaltung von Aussen realisieren.

    Ob SCL-Bausteine langsamer oder schneller wie AWL-Bausteine sind läßt sich nicht pauschal sagen. Das ist sehr von deinem Baustein selbst abhängig - unter Umständen wird von SCL bei Verwendung von Strukturen ein ganz schönes pointer-Wirr-Warr in AWL erzeugt, was dann nicht unbedingt Laufzeit-optimiert ist. Im Gegenzuig erhälst du dafür gut durchschaubare Bausteine und Prozessorleistung ist im Zweifel nachrüstbar ... wähle selbst ...

    Gruß
    LL

  3. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    mr.binford (03.11.2009)

  4. #13
    Registriert seit
    16.09.2006
    Beiträge
    36
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Sorry aber nun habe ich ein anderes Problem.

    wie kann ich bei diesen Aufruf :

    CALL "coHMI_IVT_Recipe"
    INDEX :="DB_IVT_Control_HMI".HMI_INDEX
    val :=LW0
    UPDATE_CMD :="DB_IVT_Control_HMI".HMI_UPDATE_DIALOG
    SAVE_CMD :="DB_IVT_Control_HMI".HMI_SAVE_CMD
    EDIT_CMD :="DB_IVT_Control_HMI".HMI_EDIT_CMD
    IVT_CONTROL:="DB_IVT_Control_001".IVT_CONTROL // p#301.dbx0.0

    den "DB_IVT_Control_001" in einer schleife hochzählen?

    Der "coHMI_IVT_Recipe" ist mein SCL FC und diesen rufe ich in AWL auf.

  5. #14
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Was genau ist das, eine Int, ein Pointer, ein Any oder was? (Denke ja ein Int oder DINT, also einfacher Standardtyp)
    Je nach dem, wird es nur mit dem selbst zusammenbauen der Adresse gehen.
    Bei einer z.Bsp. vorher in eine Temp umkopieren und danach wieder zurück. Bei einem Any schaust du mal zuerst die FAQ des Forums durch (Any und Pointer), stellst dann weitere Fragen.
    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

  6. #15
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard

    Es ist durchaus möglich und sinnnvoll mittels dynamischer DB-Adressierung weiterhin symbolisch innerhalb von SCL zu arbeiten.
    Der Db Inhalt wird mittels indizierter Adressierung in eine Variable von Typ `Array of word` gelegt,zu dieser Arrayvariablen difiniert man ein`Sicht`,bei mir genauso groß wie das Array. In SCL greift man dann ncht auf die Arraygroessen zu, sondern auf die dort hinterlegten Sichtvariablen. Sodaß man in SCL vollsymbolisch arbeiten kann.
    Leider kann ich im Augenblick kein Beispileprojekt hochladen da diese Funkion bei mir nicht funzt.Versuch es später noch einmal.
    .
    Code:
    TYPE "Messgroessen"//UDT1 4 Word groß
    STRUCT
        strom:REAL;//Strom
        Spannung:INT;//Ampere
        Zustand:BOOL;//1=ok
        END_STRUCT
    
    END_TYPE
    
    
    FUNCTION_BLOCK FBxxx
    //***************************************************************************************************************
    VAR_INPUT
    DB_NR:INT:=1;  //Datenbausteinnummer 
    Anf_Adresse:INT:=0;//Anfangsadresse der Inforamtion innerhalb des DB,Vorbelegung 0
    END_VAR
    //***************************************************************************************************************
    VAR_output
    Leistung:REAL;//Angabe in WAtt
    Status:BOOL;//1=OK
    END_VAR
    //***************************************************************************************************************
    
    VAR_TEMP
    Index_Daten:INT;//Steuervariable für Datenübergabe von Extern
    END_VAR
    //***************************************************************************************************************
    VAR
    Datenspeicher:ARRAY[1..4] OF WORD;//Datenspeicher für die Versorgung von Extern länge wie UDT1
    Messwert AT Datenspeicher:"Messgroessen";//Sichtweise auf Datenspeicher für die Bearbeitung intern,Format UDT1
    END_VAR
    begin
     //Datenübergabe von Extern an Datenspeicher
         Index_Daten:=1; //Vorbelegung Index mit 1  
          FOR Index_Daten:=1 TO 4 BY 1 DO//Schleife für Datenübergabe von Extern 4 Worte,länge wie UDT1
           datenspeicher[Index_Daten]:=WORD_TO_BLOCK_DB(INT_TO_WORD(DB_NR)).dw[2*Index_Daten-2+Anf_Adresse]; 
          END_FOR;
    //Interne Programmierung mittels Sichten auf Datenspeicher       
    Leistung:=Messwert.strom*(DINT_TO_REAL(INT_TO_DINT(Messwert.Spannung)));   //Übergabe nach OUT Beispiel 
    Status:=Messwert.Zustand;
    OK:=true;
    END_FUNCTION_BLOCK
    Viele Grüße Bernard
    Zitieren Zitieren Dynamische DB Adressierung bei SCL  

  7. #16
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Anbei ein Versuchsprojekt in dem,innerhalb eines mit SCL erstellten FB,
    Daten von aussen über direkte Adressierung übergeben werden.
    Innerhalb des Bausteines wird über`Sichten` auf diese Daten vollsymbolisch zugegriffen.
    Bei dem Beispiel geht es darum aus Strom u. Spannung die Leistung zu berechnen sowie den Zustand der Messung auszugeben.
    Vat Tabelle zum lesen und schreiben der Daten liegt bei.

    Viele Grüße Bernard
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Beispieleprojekt hochladen  

Ähnliche Themen

  1. Dynamische DB adressierung in SCL
    Von thomasgull im Forum Programmierstrategien
    Antworten: 3
    Letzter Beitrag: 08.09.2010, 22:14
  2. Dynamische Förderanlage
    Von thomasgull im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 28.09.2009, 05:25
  3. Dynamische Datenstrukturen in S7-SCL
    Von jck0815 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 20.11.2008, 15:33
  4. dynamische Arrays?
    Von merlin im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 30.05.2008, 16:06
  5. Dynamische Schrittkette
    Von Pau1e im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 26.03.2008, 20:09

Lesezeichen

Berechtigungen

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