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

Ergebnis 1 bis 7 von 7

Thema: AWL: Symbolischer Zugriff auf Array

  1. #1
    Registriert seit
    07.05.2014
    Beiträge
    16
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    ist es in AWL möglich, symbolisch auf ein Array, welches in einem DB liegt, zuzugreifen?

    Mein Programm soll die aktuelle Uhrzeit an einer Stelle X im Array, welches in DB1 liegt, speichern.

    So Funktioniert das ja ohne Probleme
    Code:
          
    CALL  "READ_CLK"
           RET_VAL:=MW10
           CDT    :=DB1.TestArray[1]
    Jetzt würde ich nur gerne den Platz im Array aus einer Variablen beziehen:
    Code:
    L 1
    T MW 0
    
    CALL  "READ_CLK"
           RET_VAL:=MW10
           CDT    :=DB1.TestArray[MW 0]
    .. was ja in der Form leider nicht funktioniert.
    Gibts dafür eine Lösung? Wenn ja, wie sieht diese aus?

    Ansich könnte man ja bitweise auf den DB zugreifen, allerdings bereitet mir da der Datentyp DATE_AND_TIME Probleme.

    Wie löst man das am elegantesten?

    Vielen Dank
    Zitieren Zitieren AWL: Symbolischer Zugriff auf Array  

  2. #2
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.476
    Danke
    1.140
    Erhielt 1.238 Danke für 971 Beiträge

    Standard

    Zitat Zitat von Reibekuchen Beitrag anzeigen
    Wie löst man das am elegantesten?
    In AWL kannst du dir einen passenden ANY-Ponter zusammenbauen.
    Über die Suche findest du genügend Info.

    Am elegantesten löst man sowas mit SCL. Damit funktionieren Array-Zugriffe über eine Variable

    Gruß
    Dieter

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Mit SCL geht es.

    Wie viele/wenige Einträge hat das Array? Wenn es nur ein paar sind, dann könnte man ein paar SFC-Aufrufe ausprogrammieren und dann nur den zum gewünschten Index passenden aufrufen.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #4
    Reibekuchen ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.05.2014
    Beiträge
    16
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    An AWL komme ich leider nicht vorbei, ist eine Studienleistung und in der Aufgabenstellung so vorgegeben

    Im Array sollen bis zu 100 Datensätze aufgenommen werden, die jeweils das aktuelle Datum und die Uhrzeit umfassen.

    Dann werde ich mir mal die ANY-Pointer anschauen.

    Ich bin gerade noch über die SFC20 gestolpert.. wäre das damit nicht machbar?


    Danke!

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Symbolisch mit variablem Index geht nicht in AWL.

    Für den SFC20 brauchst Du einen zusammengebastelten ANY-Pointer, den Du ebensogut direkt an den SFC1 geben kannst.

    Sollen die DATE_AND_TIME in dem Array geschoben werden (neuer kommt, ältester fliegt raus)?
    Dann könntest Du mit SFC20 den zweiten bis letzten Eintrag zum ersten bis vorletzten Eintrag umkopieren/verschieben und danach konstant symbolisch mit dem SFC1 in den letzten Eintrag lesen.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #6
    Reibekuchen ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.05.2014
    Beiträge
    16
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das ist nicht direkt vorgegeben, da hab ich also freie Hand.
    Aber das macht so natürlich Sinn wie Du sagst

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Sie dir mal den Baustein hier an: #9

    Du kannst dann z.Bsp. Die Zeit imm in die selbe DB-Variable auslesen, die Zielzelle anhand einer Zählvariable bestimmen und den o.g. Baustein aufrufen, der mittels Blockmove die Daten umkopiert. Die Any werden im Baustein zusammengesetzt.
    Im Baustein wird AWL verwendet, der Aufruf dann auch in AWL, damit kannst du die Bedingungen erfüllen.
    Geändert von Ralle (19.08.2014 um 23:24 Uhr)
    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

Ähnliche Themen

  1. Zugriff auf einen DB mit ARRAY und STRUCT
    Von Lonne im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 21.12.2012, 16:26
  2. Antworten: 4
    Letzter Beitrag: 19.07.2012, 16:51
  3. Antworten: 1
    Letzter Beitrag: 23.01.2012, 17:06
  4. Zugriff auf einen Array eines UDT`s
    Von Andreas- im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.09.2009, 19:02
  5. Antworten: 0
    Letzter Beitrag: 13.11.2008, 12:39

Lesezeichen

Berechtigungen

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