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

Ergebnis 1 bis 6 von 6

Thema: Array in Datenbaustein schieben

  1. #1
    Registriert seit
    21.11.2008
    Beiträge
    13
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe ein 2 dimensionales Array mit SCL erstellt und gleichzeitig auch den DB dazu. Wie kann ich mein beschriebenes Array aus dem SCL-Prog in den Datenbaustein schreiben.

    Kann ich das Array als Ausgangsvariable verwenden oder geht das irgendwie anders.
    Denn, wenn ich es ausprobiere, dann krieg ich immer einen Bereichsfehler, als wenn der auf den DB schreiben, aber der DB in diesem Bereich gar nicht definiert ist.

    greets
    Zitieren Zitieren Array in Datenbaustein schieben  

  2. #2
    Registriert seit
    28.03.2008
    Beiträge
    142
    Danke
    19
    Erhielt 25 Danke für 25 Beiträge

    Standard

    Aus dem hohlen Bauch raus würde ich sagen leg eine UDT mit einem Array an und verwende diese sowohl im DB als auch im SCL Baustein.

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.845
    Danke
    400
    Erhielt 2.428 Danke für 2.024 Beiträge

    Standard

    ... ich habe nicht so ganz verstanden, was du da vorhast ...

    Mein Vorschlag aber trotzdem :
    Verwende für dein SCL-Programm einen FB - dieser hat dann einen eigenen DB. Dorthin werden alle Daten, die du im STAT-Bereich deklariert hast, geschrieben.

    Falls du etwas anderes wünscht, dann bitte eine genauere Beschreibung. Außerdem ist es für Ratschläge immer hilfreich, wenn man den schon erstellten Code mit-postet ...

    Gruß
    LL

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

    bayerguard (27.11.2008)

  5. #4
    bayerguard ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.11.2008
    Beiträge
    13
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    also ich habe in einem SCL-Prog ein Array definiert, (ARRAY[1..5,1..2] of REAL), dieses Array soll dann an andere SCL-Progs übergeben werden. Also muss man es ja als Eingangs- bzw. Ausgangsvariable im jeweiligen SCL-Prog definieren.
    Ich habe mir gedacht, die Übergabe funktioniert am besten, wenn ich einen DB dazwischen schalte und ihn dieses Array übergebe.
    Sozusagen soll das Array eine globale Variable sein, auf die mehrere SCL-Progs zugreifen können.

    Und dann ist die Frage, wie realisiere ich das?
    Speziell auch der Syntax, also was ich an die SCL-Box dran schreibe.
    Step7 generiert sich bei der symbolischen Programmierung seinen Pointer selbst, aber es schreibt in den Pointer ja immer nur das Anfangsbit des Arrays im DB.
    Werden die folgenden Bits auch beschrieben, wenn der Pointer nur auf das Anfangsbit zeigt ?

    Ich hoffe, das war jetzt ein bisschen verständlicher!

    greets

  6. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.845
    Danke
    400
    Erhielt 2.428 Danke für 2.024 Beiträge

    Standard

    Hallo,
    dein Stichwort heißt hier ANY-Pointer. Bitte zu diesem thema auch mal entsprechende Beiträge in der Rubrik FAQ des Forums durchlesen (ANY).
    Mit dem ANY-Pointer kannst du sowohl den Daten-Einstiegspunkt wie auch den Datentyp und die Länge des Datenbereichs übergeben.

    Gruß
    LL

  7. #6
    Registriert seit
    06.10.2003
    Beiträge
    3.469
    Danke
    457
    Erhielt 515 Danke für 416 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo bayerguard,

    das geht in SCL recht einfach.

    Ein sinnloses Beispiel:
    Code:
    //**************************************
    DATA_BLOCK DB_ARR
    //**************************************
      STRUCT
        A                       : ARRAY[1..5,1..2] OF REAL;
        B                       : ARRAY[1..5,1..2] OF REAL;
        C                       : ARRAY[1..5,1..2] OF REAL;
      END_STRUCT
    BEGIN
    END_DATA_BLOCK
     
    //**************************************
    FUNCTION "TEST_ARRAY": VOID
    //**************************************
    VAR_IN_OUT
      ARR_A                     : ARRAY[1..5,1..2] of REAL;
    END_VAR
    BEGIN
      ARR_A[1,1] := 4712.1;
      ARR_A[2,1] := 4712.2;
      ARR_A[3,1] := 4712.3;
      ARR_A[4,1] := 4712.4;
    END_FUNCTION
     
    //**************************************
    ORGANIZATION_BLOCK OB1
    //**************************************
    VAR_TEMP
      info : ARRAY[0..19] OF BYTE;
    END_VAR
    BEGIN
      TEST_ARRAY(ARR_A := "DB_ARR".A);
    END_ORGANIZATION_BLOCK

    btw: Man kann übrigens auch sehr einfach komplette ARRAYs oder UDTs kopieren.
    Code:
    //**************************************
    FUNCTION "HMI_MESSWERT": VOID
    //**************************************
    VAR_INPUT
      ID_HMI, ID_MESSWERT               : INT;
      INIT                              : BOOL;
    END_VAR
    VAR_IN_OUT
      UNI, MESSWERT                     : UDT183;
    END_VAR
    BEGIN
      IF ID_HMI=ID_MESSWERT THEN
        IF INIT
          THEN UNI:=MESSWERT;
          ELSE MESSWERT:=UNI;
        END_IF;
      END_IF;
    END_FUNCTION

    Gruß, Onkel
    Geändert von Onkel Dagobert (27.11.2008 um 22:42 Uhr)
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 18.02.2011, 10:06
  2. Kommentar im ARRAY eines Datenbaustein
    Von tahren im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 22.06.2010, 11:03
  3. Datenbaustein Wörter nach oben schieben
    Von TheBigMemph im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 25.02.2007, 21:09
  4. Array aus Datenbaustein an FC-Eingang
    Von Joline im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 09.01.2007, 14:34
  5. S5 Datenbaustein, Datenworte schieben
    Von -Andreas- im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 31.07.2006, 12:07

Stichworte

Lesezeichen

Berechtigungen

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