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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: Blockmove in einem FC (UDT als IN Parameter)

  1. #1
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe einen FC, dieser bekommt in einem Inparameter einen UDT! Nun möchte Ich gern den Inhalt dieses In Parameters per Blockmove in einen anderen DB schieben (den ANY dazu erstelle Ich im FC). Aber diesen In kann Ich ja nicht an den SFC20 hängen. Ist dies Irgendwie möglich. mit L P##PAR1 (PAR1 ist mein UDT IN Parameter)
    kann Ich ja die Adresse des Parameters ins AR1 laden, doch kann Ich mir nun daraus einen ANY basteln???
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Blockmove in einem FC (UDT als IN Parameter)  

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

    Meines Wissens Nein ...
    Der UDT als IN-Parameter ist in Wirklichkeit ein Pointer. Dieser läßt sich so nicht hochreichen.
    Einen ANY daraus zu basteln müßte grundsätzlich gehen, da der Pointer im Aufbau mit den "unteren" Bytes des ANY identisch ist ...

  3. #3
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Ja, aber wie bastle Ich mir den ANY?? Wie kann Ich die einzelnen bytes des pointers auslesen???
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Ja,...  

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

    ... hat ein bißchen gedauert ...
    Um den Pointer greifbar zu bekommen machst du folgendes :
    Code:
    L P##PAR1
    LAR1
    TAK
    T LD14
    TAK
    L W[AR1,p#0.0]
    T LW 18
    Das LD14 (in meinem Beispiel) enthält jetzt die Adresse des UDT's und das LW18 die DB-Nummer (falls die Daten aus einem DB kommen).
    Dieses LD14 kannst du jetzt in den "unteren" Teil deines ANY hineinschieben (bzw. es ist schon der untere Teil desselben).
    Den ANY deklarierst du am sinnvollsten auch in deinem L-Daten-Bereich.
    Weißt du wie man den ANY aufbaut ? Wenn nein, dann lies dir bitte dazu zunächst das Beispiel von Volker in der Rubrik FAQ durch. Wenn dann noch Fragen sind ... du findest mich hier ...

    Gruß
    LL

  5. #5
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Wenn Ich einen UDT als in nehme, ist das dann ein Pointer oder ein Any???

    Weil wenn es ein ANY ist müsste ja auch folgendes funzen:

    L P##DATEN
    LAR1
    L D [AR1,P#0.0]
    T LD 0
    L D [AR1,P#4.0]
    T LD 4
    L W [AR1,P#8.0]
    T LW 8

    Oder??? (Mein ANY in den Lokaldaten fängt bei LD 0 an!)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Mhh...  

  6. #6
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    ... hat ein bißchen gedauert ...
    Um den Pointer greifbar zu bekommen machst du folgendes :
    Code:
    L P##PAR1
    LAR1
    TAK
    T LD14
    TAK
    L W[AR1,p#0.0]
    T LW 18
    Das LD14 (in meinem Beispiel) enthält jetzt die Adresse des UDT's und das LW18 die DB-Nummer (falls die Daten aus einem DB kommen).
    Dieses LD14 kannst du jetzt in den "unteren" Teil deines ANY hineinschieben (bzw. es ist schon der untere Teil desselben).
    Den ANY deklarierst du am sinnvollsten auch in deinem L-Daten-Bereich.
    Weißt du wie man den ANY aufbaut ? Wenn nein, dann lies dir bitte dazu zunächst das Beispiel von Volker in der Rubrik FAQ durch. Wenn dann noch Fragen sind ... du findest mich hier ...

    Gruß
    LL

    Das
    Code:
    L P##PAR1
    LAR1
    TAK
    Kann doch eigendlich nicht funktionieren oder??? da LAR1 den Akku nicht ändert und nach TAK steht ja im Akku was vor dem LP## drin war, oder???
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

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

    Nein ...
    Der Verweis auf deinen UDT wird in den FC als Pointer übergeben ...
    Ein Pointer ist 6 Byte groß und beinhaltet nur die DB-Nummer (falls benutzt) die Speicherbereichs-Kennung und die Speicher-Adresse bezpogen auf die Bit-Ebene (siehe hierzu auch Step7-Hilfe "Pointerformat").
    Ein ANY-Pointer ist 10 Byte groß und beinhaltet zusätzlich die Steuerung und den Wiederholfaktor (siehe hierzu Step7-Hilfe "ANY - Format").
    Gleichzeitig ist der Aufbau der Einzel-Inhalte etwas unterschiedlich.

    Dein Code-Beispiel funktioniert so nicht ...

  8. #8
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Ahh ja, wenn mans weis das UDT als Pointer übergeben werden...

    So sollte es ja dann gehn oder??

    Code:
    //Any auf Quelldaten
          L     W#16#1002
          T     LB     0
          L     B#16#2
          T     LB     1
          L     255                         //Länge des Datensatzes...
          T     LW     2
          L     P##DATEN
          LAR1  
          L     W [AR1,P#0.0]
          T     LW     4
          L     D [AR1,P#2.0]
          T     LD     6
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Aber so...  

  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

    ... da fehlt m.E. noch ein TAK vor " L D [...]", weil die Adresse in Akku 2 steht ...
    Sonst sieht es ganz gut aus - probier mal ...!

  10. #10
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Seid wann läd denn der L Befehl was in beide Akkus??? Normalerweise verschiebt er den Akku 1 in 2 und läd dann Akku 1!

    Step 7 Hilfe:

    L <Operand> lädt den Inhalt des adressierten Bytes, Wortes oder Doppelwortes in AKKU 1, nachdem zuvor der alte Inhalt von AKKU 1 in AKKU 2 gespeichert wurde und AKKU 1 auf "0" zurückgesetzt wurde.

    Oder lieg ich jetzt fallsch???
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Hä???  

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 19.01.2011, 17:08
  2. Blockmove mit Datenformat Int und String
    Von sailor im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 20.05.2010, 10:49
  3. FC mit einem STRING Parameter aufrufen
    Von xaverlg im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 04.04.2008, 12:20
  4. Blockmove
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 18.01.2005, 08:43
  5. Blockmove Probleme....
    Von Jochen Kühner im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 05.10.2004, 10:21

Lesezeichen

Berechtigungen

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