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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 29

Thema: SCL - Auf Ziel eines ANY-Pointers zugreifen

  1. #11
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.347
    Danke
    451
    Erhielt 691 Danke für 516 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von michael77 Beitrag anzeigen
    e (LAR1 p##Any_Eingang) zugegriffen werden, oder ist das in SCL anderst
    In SCL steht leider keine Manipulation der Adressregister zur Verfügung.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  2. #12
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Zitat Zitat von Löwensenft Beitrag anzeigen
    Grund für die Verwendung des ANY-Pointers ist, dass ich beliebige (eigentlich nur WORD, DWORD, INT oder DINT) Werte annehmen können möchte, aber nicht vier einzelne IN-Parameter anbieten möchte. Eine Verwendung des Typs DWORD oder DINT als Eingangsparameter-Typ ist auch nicht machbar, da ich je nach Typ eine andere Teilfunktion ausführen muss.
    Wenn der FC sowieso verschiedene Dinge tun soll - warum mußt Du das alles in nur 1 FC quetschen?
    Mache doch 4 FC mit jeweils verschiedenen Eingangsparametern.
    Oder "wrappe" 4 FC um einen Kern-FC.

    Allerdings könnte es passieren, daß solch ein Konstrukt womöglich jeder versteht...

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #13
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Oder nimm einen FB, da braucht man nicht alle Eingänge beschalten, und die nicht beschalteten braucht man bei Aufruf aus SCL auch nicht angeben. Gib dem FB noch einen "Mode"-Eingang und übergebe 1, 2, 3 oder 4, damit der Baustein weiß, welchen Eingangsparameter er auswerten soll.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #14
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Zitat Zitat von michael77 Beitrag anzeigen
    ... und man hat keine Informationen über die Struktur.
    ... wo sollte die (in einem ANY) auch herkommen ... die Struktur ist ja eine willkürliche Vereinbarung ...

    Gruß
    Larry
    Geändert von Larry Laffer (06.02.2015 um 11:27 Uhr)

  5. #15
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    ... die von Harald vorgeschlagene Variante mit der Modus-Selektion verwende ich auch mitunter in Verbindung mit einem FB.

    Gruß
    Larry

  6. #16
    Registriert seit
    23.11.2008
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Bei einem FC erhältst du hier einen Pointer, den angibt, wo die Daten des ANY-Pointers stehen. Da ist dann auch wieder die Bereichslänge mit drin.
    ... wo sollte die (in einem ANY) auch herkommen ... die Struktur ist ja eine willkürliche Vereinbarung ...

    Gruß
    Larry
    aber nur wenn der Any-Pointer im V-Temp Bereich angelegt ist, wenn man außen (als IN-Parameter) eine beliebige struct_Var anliegt, hat man dann nur Zugriff mit deinem normalen Pointer (4 Byte) ?

  7. #17
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    @Michael:
    Du hast Recht - da hatte ich mich vertan. Ich habe den Beitrag geändert.
    Wo hattest du denn ein Problem mit den ANY's, worauf du dich bezogen hattest ?

  8. #18
    Registriert seit
    23.11.2008
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich wollte mit einem Baustein ermitteln ob in einer Struktur ein Bit 1 ist oder Bits zählen, könnte man anstatt dem Any-Pointer im V-Temp Bereich, auch eine Struct tempVar als Eingangsparameter verwenden, beim SFC20 BLCKMOVE muß man auch nichts im Temp-Bereich anlegen, aber ist ja auch eine SFC.
    Geändert von michael77 (06.02.2015 um 14:01 Uhr)

  9. #19
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    @Michael:
    Du schmeisst hier (glaube ich) ein paar Dinge durcheinander.
    Das mit dem "im TEMP-Bereich ablegen" ist notwendig wenn du innerhalb von SCL eine AT-Sicht auf den IN- oder IN-OUT-Parameter eines FC's machen willst - Fokus ist hier aber SCL.
    Das Durchsuchen nach einem gesetzten Bit eines (wie auch immer gearteten) Bereichs ist mit dem ANY auf jeden Fall realisierbar - der ANY hätte hier ja alle dafür benötigten Daten.
    Ist das noch ein Thema für dich ?

    Gruß
    Larry

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

    michael77 (06.02.2015)

  11. #20
    Registriert seit
    23.11.2008
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Larry
    ist zwar nicht SCL aber zum Verständniss, wäre das so richtig:
    Code:
      L     P##Struct_Any               //Eingang
          LAR1  
    
    // Aufbau des ANY-Zeigers
          L     LW [AR1,P#2.0]
          T     #Anzahl_Bytes
    
          L     LW [AR1,P#4.0]
          T     #DB_Nr
    
          L     LD [AR1,P#6.0]              //Bereichszeiger
          LAR1  
    
          AUF   DB [#DB_Nr]
          L     0
          T     #Loop_Zaehler
    
    next: NOP   0
          L     #Loop_Zaehler
          SLW   3
          +AR1  
          L     B [AR1,P#0.0]
          L     0
          >I    
          =     #Bit_True
    
          L     #Loop_Zaehler
          +     1
          U(    
          T     #Loop_Zaehler
          L     #Anzahl_Bytes
          >I    
          )     
          O     #Bit_True
          SPB   exit
          SPA   next
    exit: NOP   0
    Geändert von michael77 (06.02.2015 um 21:30 Uhr)

Ähnliche Themen

  1. Antworten: 23
    Letzter Beitrag: 17.07.2014, 21:58
  2. SCL: Auf Bits eines Word zugreifen.
    Von Aksels im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 28.10.2011, 17:10
  3. Antworten: 1
    Letzter Beitrag: 11.03.2008, 09:39
  4. deklarierung eines any pointers
    Von viech im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 29.01.2008, 13:39
  5. Verwendung eines Any-Pointers im FB
    Von merlin im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 17.04.2007, 21:33

Lesezeichen

Berechtigungen

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