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

Ergebnis 1 bis 5 von 5

Thema: SCL: indirekte adressierung

  1. #1
    Registriert seit
    18.03.2013
    Ort
    Wittlich, RP
    Beiträge
    50
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute

    ich stehe vor folgendem Problem:

    ich habe zwei datenbausteine in welchen jede menge werte stehen, nach bestimmten strukturen.
    diese enthalten wiederzum werte etc und die will ich prüfen... standard also.

    mein problem besteht darin, dass ich nicht weiß, wie ich die adressierung anständig hinbekomme.

    Code:
      
    IO_AppPos : array[1..52] of INT
          
    FOR i:=1 TO 52 DO
    
        IF i = "DB_Apps".App01.AppOrigPos THEN       
            IO_AppPos[i] := "DB_Apps".App01.AppNr;     
        END_IF;
                
        IF i = "DB_Apps".App02.AppOrigPos THEN       
            IO_AppPos[i] := "DB_Apps".App02.AppNr;     
        END_IF;
    
    END_FOR;
    
    FOR i:=1 TO 52 DO
    
        IF "DB_AnlKonfig".Apps.App01 = true THEN
                    
            "DB_Apps".App01.AppVorhanden := true;        
        ELSE        
            "DB_Apps".App01.AppVorhanden := false;
                
        END_IF;
    
    END_FOR;
    beide schleifen habe ich abgekürzt auf zwei einträge. da stehen aktuell 52 drin, was mir aber zu viel und zu umständlich ist!
    prinzipiell geht es um die indizes die ich ro markiert habe. was ich möchte ist -> z.B. "DB_Apps".App[x].AppOrigPos. kann ich das irgendwie realisieren, ohne fehler

    gruß sven
    Zitieren Zitieren SCL: indirekte adressierung  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.403 Danke für 2.002 Beiträge

    Standard

    Hallo,
    das geht deshalb nicht, weil der DB_Apps kein Array beinhaltet sondern die App01 bis App52 als einzeln definierte Strukturen.
    Du müßtest den DB also umdefinieren.
    Andere Alternative wäre : du nimmst den DB selbst als IN_OUT-Parameter für deinen Baustein und legst darauf eine AT-Sicht, die ihn als Array1..52] of struct interpretiert.

    Gruß
    Larry

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

    Sickone4 (22.08.2014)

  4. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Variablennamen kann man sich in SCL nicht zusammenbasteln, weil das compilierte Programm kennt die Variablennamen nicht.

    Man kann aber Elemente von Arrays indiziert ansprechen, z.B. "DB_Apps".App[i].AppOrigPos
    Dazu mußt Du "einfach nur" die Deklarationen Deiner Strukturen so ändern, daß überall da wo Du indiziert zugreifen willst auch ein Array ist. Daß also statt App01.x, App02.x ... App ein ARRAY OF STRUCT oder ARRAY OF BOOL oder ARRAY OF ... ist.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Sickone4 (22.08.2014)

  6. #4
    Registriert seit
    10.10.2007
    Beiträge
    17
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,
    Es gibt auch die Konvertierungsfunktion "Word_to_Block_DB()".
    Mit dieser lassen sich auch Datenblöcke ohne Array in SCL mit einer For Schleife über indirekte Adressierung bearbeiten.

  7. #5
    Registriert seit
    18.03.2013
    Ort
    Wittlich, RP
    Beiträge
    50
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke für die Antworten hat super geholfen. (Umgestellt auf Arrays im DB)

    Die word_to_block_db Funktion war in diesem fall nicht nutzbar!

Ähnliche Themen

  1. TIA Indirekte Adressierung im SCL-Editor
    Von MarkusP210 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.04.2015, 07:41
  2. Indirekte Adressierung in SCL
    Von Atlas im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 22.04.2014, 15:27
  3. Indirekte Adressierung von STRING SCL
    Von sm@rt im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 06.02.2009, 15:12
  4. Indirekte Adressierung von Bit's in SCL
    Von tarzipan7 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 23.01.2009, 12:37
  5. indirekte Adressierung in SCL
    Von BiBi im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 18.05.2007, 23:42

Lesezeichen

Berechtigungen

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