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

Ergebnis 1 bis 2 von 2

Thema: In RSLogix 5000 indirekt auf ein Variable aus einem Array eines UDT zugreifen

  1. #1
    Registriert seit
    22.03.2013
    Beiträge
    51
    Danke
    4
    Erhielt 3 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe einen User Definierten Datentyp welcher aus 3 INT ARRAYS besteht. Jedes ARRAYS besteht aus einer anderen Anzahl an INT.
    Ich möchte jetzt in einem ADD ON indirekt und dynamisch auf die INT Variablen der einzelnen ARRAYS zugreifen.

    Hat dies von ein schonmal jemand gemacht?

    Hintergrund ist dieser:
    in dem User Definierten Datentyp liegen alle meine Störungen drinnen.
    Ich möchte jetzt die ARRAYS des User Definierten Datentyp in einer Schleife durchlaufen und schaun ob ein Bit 1 ist. Dann weiß ich das eine Störung aktiv ist.
    Ich setze RSLogix Studio 5000 V28 ein.

    Danke

    LG

    Markus
    Zitieren Zitieren In RSLogix 5000 indirekt auf ein Variable aus einem Array eines UDT zugreifen  

  2. #2
    Registriert seit
    20.09.2016
    Beiträge
    25
    Danke
    1
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Markus,

    Ich nehme mal an dass du nur die Elemente der Arrays indirekt Adressieren möchtest und die Anzahl der Elemente bestimmen möchtest, dann wäre die SIZE-Funktion dass was du suchst.
    Unten ein Beispiel unter der Annahme dass dich nur interessiert ob überhaupt ein Bit gesetzt ist und nicht welches und wie viele.

    UDT Faults:
    R002_Faults.Hardware DINT[10]
    R002_Faults.Funtion DINT[20]
    R002_Faults.Diagnostic DINT[30]

    Code:
    SIZE(R002_Faults.Hardware[0],0,R002_ArrayLength);
    R002_ArrayLength := R002_ArrayLength - 1;
    
    FOR R002_Index := 0 TO R002_ArrayLength DO
        IF R002_Faults.Hardware[R002_Index] <> 0 THEN
            R002_HardwareFault := 1;
            EXIT;
        ELSE
            R002_HardwareFault := 0;
        END_IF;
    END_FOR;
    
    SIZE(R002_Faults.Function[0],0,R002_ArrayLength);
    R002_ArrayLength := R002_ArrayLength - 1;
    
    FOR R002_Index := 0 TO R002_ArrayLength DO
        IF R002_Faults.Function[R002_Index] <> 0 THEN
            R002_FunctionFault := 1;
            EXIT;
        ELSE
            R002_FunctionFault := 0;
        END_IF;
    END_FOR;
    Gruß
    Mathias

Ähnliche Themen

  1. Step 7 indirekt auf Eingänge eines FC´s zugreifen
    Von HelmiMUC im Forum Simatic
    Antworten: 26
    Letzter Beitrag: 02.08.2015, 15:45
  2. Auf ein bestimmtes Element in einem Array zugreifen
    Von Erema im Forum Sonstige Steuerungen
    Antworten: 0
    Letzter Beitrag: 05.05.2015, 09:04
  3. TIA Auf Array-Variable indirekt zugreifen
    Von zloyduh im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 22.01.2015, 21:28
  4. Antworten: 3
    Letzter Beitrag: 13.09.2014, 16:35
  5. Step 7 Indirekt auf WORD in einem DB zugreifen
    Von mega_ohm im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 09.03.2014, 22:06

Lesezeichen

Berechtigungen

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