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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Typinformation doch in der SPS?

  1. #1
    Registriert seit
    29.03.2004
    Beiträge
    5.797
    Danke
    144
    Erhielt 1.707 Danke für 1.239 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe folgendes Programmstück zum Auslesen der Typinformation aus einem Any-Pointer:
    Code:
          L     P##IN1
          LAR1  
          L     B [AR1,P#1.0]
          SET
          R     #xWORD
          R     #xINT
          R     #xDINT
          R     #xREAL
          R     #xDWORD
          T     #y_typ                      // Typ speichern
          L     4
          ==I   
          S     #xWORD                      // Typ WORD
          TAK   
          L     5
          ==I   
          S     #xINT                       // Typ INT
          TAK   
          L     6
          ==I   
          S     #xDWORD                     // Typ DWORD 
          TAK   
          L     7
          ==I   
          S     #xDINT                      // Typ DINT
          TAK   
          L     8
          ==I   
          S     #xREAL                      // Typ REAL
    IN1 ist ein In-Parameter eines FCs vom Datentyp Any.

    Jetzt kann ich an diesen Parameter z.B. auch MD40 eintragen. Bei der Auswertung kommt dabei genau der Datentyp heraus den ich in meiner Symboltabelle eingetragen habe.

    Wie funktioniert das?
    Setzt der Step7 Editor meine Eingabe automatisch in den passenden Any-Pointer um? Eigentlich sind in der SPS doch keine Typinformationen vorhanden.

    Gruß
    Thomas
    Geändert von Thomas_v2.1 (19.02.2009 um 20:18 Uhr) Grund: R der Ausgänge ergänzt
    Zitieren Zitieren Typinformation doch in der SPS?  

  2. #2
    Avatar von Thomas_v2.1
    Thomas_v2.1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.03.2004
    Beiträge
    5.797
    Danke
    144
    Erhielt 1.707 Danke für 1.239 Beiträge

    Standard

    Im Anhang mal eine AWL Quelle mit dem ganzen Baustein.
    Angehängte Dateien Angehängte Dateien

  3. #3
    Registriert seit
    16.05.2007
    Ort
    im Stahlwerk...
    Beiträge
    1.178
    Danke
    120
    Erhielt 429 Danke für 236 Beiträge

    Standard

    Der Baustein guckt einfach im Byte 1 deines Any-Pointers nach dem Datentyp. Siehe auch: http://www.sps-forum.de/showthread.php?t=12923

    Gruß Appro
    Nihil est in cpu, quod non fuerit in intellectu" - Nichts ist in der CPU, was nicht (zuvor) im Verstand war.

  4. #4
    Avatar von Thomas_v2.1
    Thomas_v2.1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.03.2004
    Beiträge
    5.797
    Danke
    144
    Erhielt 1.707 Danke für 1.239 Beiträge

    Standard

    Zitat Zitat von Approx Beitrag anzeigen
    Der Baustein guckt einfach im Byte 1 deines Any-Pointers nach dem Datentyp. Siehe auch: http://www.sps-forum.de/showthread.php?t=12923
    Das ist ja klar, nur:

    Ich kann an diesen FC an den Any-Parameter direkt "MD40" schreiben, also nicht "P#M40.0 REAL 1". Siehe Screenshot im Anhang.

    Die Frage ist ja, ob der Step 7 Editor intern aus dem MD40 den passenden Anypointer je nach Symboltabelle generiert.
    Angehängte Grafiken Angehängte Grafiken

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    ... wenn du den Operanden symbolisch angelegt hast, dann wird das m.E. so geschehen.
    Wenn du in dein MD40 aber den Inhalt eines anderen Doppelwortes überträgst, so überträgst du damit nicht auch die Typ-Zuweisung ...

    Gruß
    LL

  6. #6
    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

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Wenn du in dein MD40 aber den Inhalt eines anderen Doppelwortes überträgst, so überträgst du damit nicht auch die Typ-Zuweisung ...
    ich bin mir relativ sicher, dass es so ist ... hatte ich doch vor kurzen erst einen baustein geschrieben, der das ausnutzt: http://sps-forum.de/showpost.php?p=164419&postcount=14

    und schaut man sich den aufruf

    Code:
    *
          CALL  "UN-&SCALE_ANY"
           anyIn     :=MD40
           bParameter:=MB2
           anyOut    :=MW30
    mal in der makro sicht an

    Code:
    *
          BLD   1
          =     L     48.0
          L     W#16#1006
          T     LW    49
     
          L     1
          T     LW    51
          L     0
          T     LW    53
          L     P#M 40.0
          T     LD    55
          L     W#16#1004
          T     LW    59
          L     1
          T     LW    61
          L     0
          T     LW    63
          L     P#M 30.0
          T     LD    65
          UC    "UN-&SCALE_ANY"
                P#L 49.0
                P#M 2.0
                P#L 59.0
          BLD   2
    wirds auch klarer
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. #7
    Avatar von Thomas_v2.1
    Thomas_v2.1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.03.2004
    Beiträge
    5.797
    Danke
    144
    Erhielt 1.707 Danke für 1.239 Beiträge

    Standard

    4L:
    Wie hast du denn die Ansicht hinbekommen sodass er dir die Pointer anzeigt?

    Bei mir steht egal was ist anstelle immer nur MD40 da.
    Das Ganze funktioniert übrigens auch mit Einträgen aus Datenbausteinen.

    So ganz glücklich bin ich damit aber nicht was der Step7 Editor macht. Wenn ich nachträglich in der Symboltabelle oder DB den Datentyp ändere, sollte Step7 beim Online gehen eigentlich meckern dass der Baustein nicht mit dem in der Station übereinstimmt - macht es aber nicht.

  8. #8
    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

    es ist egal ob du einen pointer ala P#M40.0 REAL 1 oder direkt das MD40 angibst, es wird immer der Pointer übergeben, gleicher aufbau, gleiche parameter.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    @4L:
    Ich weiß gerade nicht, was du mir mit deinem Beitrag sagen wolltest ... aber ich meinte :
    Code:
    L MD 30   // deklariert als DINT
    T MD 40  // deklariert als REAL
    hier liegt der Typ in der Symbolik und nicht in dem Variablen-Inhalt ...

    Gruß
    LL

  10. #10
    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
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    hier liegt der Typ in der Symbolik und nicht in dem Variablen-Inhalt ...
    stimmt

    wenn keine symbolik definiert ist wird der wert als DWORD (06) übergeben
    definiere ich den datentyp als DINT wird auch 07 übergeben
    entsprechend bei REAL 08

    das sieht man aber nur in der makrosicht.

    hmm ... was war eigentlich die frage?
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. Das ist doch mal eine gute Idee!!!
    Von Ralle im Forum Stammtisch
    Antworten: 4
    Letzter Beitrag: 26.01.2011, 07:33
  2. Können wir doch mal S5 und S7 trennen?
    Von maxi im Forum Stammtisch
    Antworten: 40
    Letzter Beitrag: 01.03.2008, 08:52
  3. ...das muss doch gehen!
    Von Praktikant ohne Ahnung! im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 20.03.2006, 10:23
  4. Hart is doch 'n Begriff , oder?
    Von Anonymous im Forum Feldbusse
    Antworten: 4
    Letzter Beitrag: 02.05.2004, 14:55

Lesezeichen

Berechtigungen

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