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

Ergebnis 1 bis 5 von 5

Thema: Wert eines ANY-Parameter in SCL auslesen

  1. #1
    Registriert seit
    02.09.2010
    Ort
    Friedberg/Hessen
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Beitrag


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe ein kleines Problem mit ANY-Parametern (FC) in SCL. Die Auswertung des ANY-Parameters (Datentyp, Datenbereich, u.s.w.) ist soweit klar.

    1. Um auf den tatsächlichen Wert des ANY-Parameters (also letzendlich auf den Wert, der sich dahinter verbergenden Variablen), würde man in AWL den Pointer in das Adressregister laden, nur wie macht man es in SCL ?

    2. Kann man einen ANY-Ausgangsparameter auch so (Datentyp, Datenbereich, u.s.w.) auswerten ?

    Kann mir jemand schnell einen kurzen Anstoß geben - Danke.
    Zitieren Zitieren Wert eines ANY-Parameter in SCL auslesen  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.786
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Hallo,
    das geht in SCL noch viel schicker ...
    Du legst eine AT-Sicht auf den ANY. In der AT verweißt du auf eine Struktur, die den Aufbau einzeln darstellt.

    Also z.B. so :
    Code:
    var
    Datenquelle : ANY
     
    aDatenquelle AT Datenquelle : struct 
       ID_Code : byte ; 
       DatenTyp : byte ;
       Anzahl : word ;
       DB_Nr : word ;
       SpeicherPtr : DWord ;
    end_struct ;
    end_var ;
    über aDatenquelle kannst du jetzt die einzelnen Bestandteile ansprechen ...

    Gruß
    Larry

    Nachtrag zu 2.)
    den Ausgangs-ANY kannst du dir auf diese Weise natürlich auch so erstellen.
    Wenn der ANY auf eine Variable aus deinem Baustein verweisen soll, so geht das über direkte Zuweisung - also :
    Code:
    var
    Datenquelle : Any ;
    myVar : integer ;
    end_var ;
     
    Datenquelle := myVar ;
    Geändert von Larry Laffer (02.09.2010 um 12:41 Uhr)

  3. #3
    U.Schmidt ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    02.09.2010
    Ort
    Friedberg/Hessen
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Frage

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    das geht in SCL noch viel schicker ...
    Du legst eine AT-Sicht auf den ANY. In der AT verweißt du auf eine Struktur, die den Aufbau einzeln darstellt.

    Also z.B. so :
    Code:
    var
    Datenquelle : ANY
     
    aDatenquelle AT Datenquelle : struct 
       ID_Code : byte ; 
       DatenTyp : byte ;
       Anzahl : word ;
       DB_Nr : word ;
       SpeicherPtr : DWord ;
    end_struct ;
    end_var ;
    über aDatenquelle kannst du jetzt die einzelnen Bestandteile ansprechen ...

    Gruß
    Larry

    Nachtrag zu 2.)
    den Ausgangs-ANY kannst du dir auf diese Weise natürlich auch so erstellen.
    Wenn der ANY auf eine Variable aus deinem Baustein verweisen soll, so geht das über direkte Zuweisung - also :
    Code:
    var
    Datenquelle : Any ;
    myVar : integer ;
    end_var ;
     
    Datenquelle := myVar ;

    Danke für die schnelle Antwort - aber leider nicht so richtig die Antwort auf meine Frage:
    • Ich will es ja, wie geschrieben, in SCL machen.
    • Die Auswertung des ANY-Records habe ich auch schon erledigt (AT-Struktur).
    • Nur wie greife ich jetzt über den Speicherpointer auf den Variablenwert zu. In AWL über die indirekte Adressierung durch z.B. das AR1.
    Aber in SCL, und was ist eventuell mit dem DB (wenn DB-Nr. <> 0) ?
    Kann man einen ANY-OUT-Parameter auch so abfragen (Lese-Zugriff auf die Parameter, der am Baustein angegebenen Variablen, überhaupt möglich) und wie schreibt man hier den Variablenwert ?
    Zitieren Zitieren Leider ist die Frage noch nicht beantwortet  

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.786
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    ... das mußt du dann alles einzeln auswerten.
    Also den Datentyp entsprechend seiner Kennung aus .Datentyp entnehmen.
    Den Speicherbereich aus dem High-Byte des .SpeicherPtr und die Adresse aus dem verbleibenden Rest des SpeicherPtr's.

    Dann bastelst du dir aus dem allem einen absoluten Zugriff zusammen - Sorry ... anders geht es nicht.

    Aber jetzt mal meine Gegenfrage : Was ist der Sinn des Ganzen ? Da ich ja sehe, dass das nicht das ist, was du haben willst - was willst du denn machen ? Vielleicht gibt es ja einen besseren Weg, das zu erreichen.

    Gruß
    Larry

  5. #5
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    naja, nun, ich würde da schon noch einen weg sehen.

    den bekannten any-pointer auf länge hin untersuchen, einen entsprechend langen zielbereich bekannter adressierung, also zum beispiel im stat (weil anders als temp per any adressierbar) oder einen globalen datenbaustein zur verfügung stellen (zur laufzeit erstellen oder vorher anlegen) und mit blk_move die quelldaten in den bereich kopieren.

    einzig das problem zu wissen, aus was die quelldaten bestanden, also int oder real oder oder oder muß hier noch gelöst werden. aber wenn bekannt ist, was da kommt kann das zumindest symbollos adressiert werden, bei bekannter struktur und dem globalen db der nicht zur laufzeit erstellt wird oder der vorhaltung im instanz-db dann sogar auch symbolisch.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. SFC 102 Parameter auslesen
    Von marsi im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 07.10.2011, 16:17
  2. Antworten: 10
    Letzter Beitrag: 19.01.2011, 17:08
  3. Parameter als ANY - Boolwert auslesen
    Von guidokk im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 19.06.2009, 15:22
  4. MM420 Parameter auslesen
    Von Buchholz im Forum Feldbusse
    Antworten: 16
    Letzter Beitrag: 17.11.2006, 13:13
  5. MM420 Parameter auslesen
    Von Buchholz im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 13.11.2006, 13:05

Stichworte

Lesezeichen

Berechtigungen

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