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

Ergebnis 1 bis 4 von 4

Thema: Array mehrmals als Parameter übergeben

  1. #1
    Registriert seit
    14.04.2012
    Beiträge
    81
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    moin moin

    Ich habe einen FB_1 mit einem Array im Instanz-DB unter stat deklariert

    in diesem FB_1 wird ein FB_2 aufgerufen (als Multiinstanz) und der hat wieder dieses Array als IN_Out_Parameter <- diese Übergabe geht

    in dem FB_2 wird ein FC aufgerufen den ich in SCL programmiert habe. in der SCL-Quelle ist das Array auch als IN_Out_Parameter deklariert <- diese Übergabe geht nicht

    kann mir jemand sagen warum das nicht geht?
    Geändert von xj900mb (08.03.2016 um 11:22 Uhr)
    Zitieren Zitieren Array mehrmals als Parameter übergeben  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.308
    Danke
    932
    Erhielt 3.321 Danke für 2.683 Beiträge

    Standard

    Weil Siemens festgelegt hat, daß nicht-elementare Datentypen nicht an Bausteine durchgereicht werden können.
    Siehe Hilfe zu STEP7 > Index > Parameterübergabe bei Bausteinen

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    xj900mb (08.03.2016)

  4. #3
    Registriert seit
    14.04.2012
    Beiträge
    81
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard

    ok, habe die hilfeseite gefunden und verstanden.
    aber warum ist das so?


    ich umgehe das Problem jetzt indem ich dem FC die Werte des Array (es sind zum Glück nur 20) EINZELN als IN_OUT übergebe, in dem FC füge ich sie in einem temporären Array wieder zusammen, und am Ende des Bausteins gehen die Werte aus dem temporären Array wieder an die einzelnen IN_OUT-Parameter
    Geändert von xj900mb (08.03.2016 um 11:48 Uhr)

  5. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.308
    Danke
    932
    Erhielt 3.321 Danke für 2.683 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nicht-elementare Variablen werden nicht als Wert sondern als POINTER übergeben und man kann in den Siemens-Programmiersprachen nicht formulieren, ob man den Pointer oder die Variable ansprechen will. Eine explizite Dereferenzierung ist nicht vorgesehen. Die Compiler verwenden bereits einige implizite/versteckte Dereferenzierungen.

    Will man nicht-elementare Datentypen durchreichen, dann muß man selber den POINTER kopieren (was aber nur in AWL geht) oder die Variable auf eine zweite Variable umkopieren (am besten in eine eigene Lokalvariable TEMP/STAT) und die zweite Variable weiterreichen.
    Oder man übergibt solche Daten als ANY-Pointer. Die ANY-Pointer muß man allerdings auch selber weiter-kopieren und wenn man auf den Speicherbereich zugreifen will, auf den der ANY zeigt, dann muß man selber den ANY zerlegen.

    Dein kleines Array könntest Du in TEMP oder STAT umkopieren und die Kopie an den FC übergeben.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Ausgang als Parameter übergeben
    Von IOSam im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 10.02.2013, 14:05
  2. Array als IN Parameter
    Von RON_87 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 20.01.2013, 14:13
  3. Antworten: 9
    Letzter Beitrag: 15.12.2010, 12:27
  4. Block_DB typ als parameter übergeben ?
    Von michdan im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 19.02.2007, 17:59
  5. Datenbaustein als Parameter übergeben.
    Von Jochen Kühner im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 07.07.2004, 08:13

Stichworte

Lesezeichen

Berechtigungen

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