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

Ergebnis 1 bis 2 von 2

Thema: Bereichszeiger in SCL auslesen

  1. #1
    Registriert seit
    03.06.2016
    Ort
    Nähe Graz
    Beiträge
    10
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Ich habe einen FB in SCL mit einer Input variable Any;
    Ist es möglich diesen auszulesen, sprich DBnr, Länge, Bitadresse, usw..?
    wenn ja wie?

    in AWL ist es mir klar
    ANY-Pointer Auslesen.jpg

    Gruß
    Zitieren Zitieren Bereichszeiger in SCL auslesen  

  2. #2
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Jop das ist möglich. mit eine AT Sicht drauf:

    Code:
    TYPE "ANY_POINTER"
    VERSION : 0.1
      STRUCT     
       SyntaxID : BYTE ;    
       Bereichstyp : BYTE ;    
       Anzahl_Werte : INT ;    
       DB_Nr : INT ;    
       Startadresse : DWORD ;    
      END_STRUCT ;    
    END_TYPE
    Code:
    FUNCTION_BLOCK "Baustein_1"
    { S7_Optimized_Access := 'FALSE' }
    VERSION : 0.1
       VAR_INPUT 
          Startdaten : Any;
          pStartdaten AT Startdaten : "ANY_POINTER";
          versatz : Int;
       END_VAR
    
    
       VAR 
          anypointer : "ANY_POINTER";
          anypointer_out : "ANY_POINTER";
          IN_Byte { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Int;
          IN_Bit : Int;
          OUT_Byte : Int;
          OUT_Bit : Int;
       END_VAR
    
    
       VAR CONSTANT 
          Eingänge : DWord := 16#8100_0000;
          Ausgänge : DWord := 16#8200_0000;
          Merker : DWord := 16#8300_0000;
          Datenbaustein : DWord := 16#8400_0000;
          Instanz_DB : DWord := 16#8500_0000;
          LokalDaten : DWord := 16#8600_0000;
          VorherigeLokalDaten : DWord := 16#8700_0000;
       END_VAR
    
    
    
    
    BEGIN
        #anypointer := #pStartdaten;
        
        #IN_Byte := DWORD_TO_INT(SHR(IN := SHL(IN := #pStartdaten.Startadresse, N := 8), N := 11));
        #IN_Bit := DWORD_TO_INT(SHR(IN := SHL(IN := #pStartdaten.Startadresse, N := 29), N := 29));
        
        #OUT_Byte := 30;
        #OUT_Bit := 3;
        
        #anypointer_out.Startadresse := SHL(IN := INT_TO_DWORD(#OUT_Byte), N := 3) OR INT_TO_DWORD(#OUT_Bit) OR #Datenbaustein;
        
    END_FUNCTION_BLOCK
    Edit: Etwas vereinfacht, damit man auch sieht wie man die Startadresse auch wieder zusammenbauen kann.

    mfG René
    Geändert von vollmi (17.06.2016 um 11:12 Uhr)

  3. Folgende 2 Benutzer sagen Danke zu vollmi für den nützlichen Beitrag:

    Hohlkörper (17.06.2016),Verithas (17.06.2016)

Ähnliche Themen

  1. TIA Scl FIFO auslesen
    Von robson im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 10.05.2016, 08:29
  2. String in scl auslesen
    Von Bensen83 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 06.12.2010, 13:50
  3. Wert eines ANY-Parameter in SCL auslesen
    Von U.Schmidt im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.09.2010, 14:37
  4. UDT Länge mit SCL auslesen
    Von Panzerknacker im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 16.07.2009, 20:41
  5. Systemzeit auslesen und umwandeln in S7-SCL
    Von Angelo im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 12.09.2008, 09:41

Lesezeichen

Berechtigungen

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