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

Results 1 to 6 of 6

Thread: Array in Datenbaustein schieben

  1. #1
    Join Date
    21.11.2008
    Posts
    13
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Default


    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
    Reply With Quote Reply With Quote Array in Datenbaustein schieben  

  2. #2
    Join Date
    28.03.2008
    Posts
    144
    Danke
    19
    Erhielt 25 Danke für 25 Beiträge

    Default

    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
    Join Date
    22.03.2007
    Location
    Detmold (im Lipperland)
    Posts
    12,402
    Danke
    422
    Erhielt 2,536 Danke für 2,108 Beiträge

    Default

    ... 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 is offline Neuer Benutzer
    Themenstarter
    Join Date
    21.11.2008
    Posts
    13
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Default

    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
    Join Date
    22.03.2007
    Location
    Detmold (im Lipperland)
    Posts
    12,402
    Danke
    422
    Erhielt 2,536 Danke für 2,108 Beiträge

    Default

    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
    Join Date
    06.10.2003
    Posts
    4,474
    Danke
    619
    Erhielt 772 Danke für 606 Beiträge

    Default


    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
    Last edited by Onkel Dagobert; 27.11.2008 at 22:42.
    Der höchste Lohn für unsere Bemühungen ist nicht das, was wir dafür bekommen, sondern das, was wir dadurch werden.
    John Ruskin

Similar Threads

  1. [TC2] ARRAY OF BOOL in ARRAY OF INT schieben
    By Stefan4863 in forum CODESYS und IEC61131
    Replies: 5
    Last Post: 06.02.2018, 16:13
  2. Array - Werte schieben
    By mfreye in forum CODESYS und IEC61131
    Replies: 11
    Last Post: 17.10.2016, 21:43
  3. Replies: 5
    Last Post: 15.04.2016, 11:42
  4. Datenbaustein Wörter nach oben schieben
    By TheBigMemph in forum Simatic
    Replies: 8
    Last Post: 25.02.2007, 21:09
  5. S5 Datenbaustein, Datenworte schieben
    By -Andreas- in forum Simatic
    Replies: 3
    Last Post: 31.07.2006, 12:07

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •