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

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

Thema: Alternative zu BLKMOV

  1. #1
    Registriert seit
    23.05.2008
    Beiträge
    32
    Danke
    20
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich muss Daten zu einem Profibus/RS-232 Interface senden. Damit es möglichst flexibel bleibt, möchte ich auch Adressen oberhalb des Prozessabbildes verwenden. Leider gibt es dann beim BLKMOV (SFC20) einen Bereichslängenfehler. Gibt es Alternativen zu diesem SFC oder muss ich meine Adressen gezwungenermaßen in das PA legen?

    Dank&Gruß
    Matthias
    Zitieren Zitieren Alternative zu BLKMOV  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Dazu verwendet man eigentlich die SFC14 / 15 ...
    Hattest du das schon ge-checked ?

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

    /*Matthias*/ (10.07.2008)

  4. #3
    Registriert seit
    23.05.2008
    Beiträge
    32
    Danke
    20
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Teilerfolg...ich kann jetzt auch Peripherieadressen verwenden. Ich habe jetzt allerdings ein neues Problem. Ich möchte 10 Byte Nutzdaten pro Block(i.d.R. Strings) versenden, die ersten 3 Byte brauche ich für´s Protokoll. Also in der HW-Konf. 13 Byte Datenlänge projektiert.
    Beim SFC15 muss aber der Quellbereich die gleiche Länge aufweisen wie ich´s bei der Baugruppe projektiert habe und ich schreibe mir dann in die ersten drei Protokollbytes.

  5. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.227
    Danke
    534
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Dann nimm die 3 Protokollbytes und schreib sie vorher in den Datenbereich. Anschließend den gesamten Datenbereich übertragen.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  6. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    /*Matthias*/ (10.07.2008)

  7. #5
    Registriert seit
    23.05.2008
    Beiträge
    32
    Danke
    20
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Alles klar, ich hab' es etwas anders gelöst...zwei Datenblöcke projektiert. Einmal der 3 Byte-Protokoll und danach ein zweiter Block mit den 10 Byte-Nutzdaten.

    Besten Dank für eure Hilfe!

    Edit:
    Vielleicht könnt mir nochmal kurz auf die Sprünge helfen.
    Warum bekomme ich beim Aufruf des SFC15 im FB einen "Ausrichtungsfehler beim Lesen eines Parameters"? Mache ich einen Fehler mit dem Pointer?

    Code:
          TAR1  LD   100
          LAR1  P##quell_pointer            // Pointer Quell-Daten
          L     B#16#10                     // Syntax-ID
          T     LB [AR1,P#0.0]
          L     B#16#2                      // Datentyp Byte
          T     LB [AR1,P#1.0]
          L     10                          // Anzahl Byte
          T     LW [AR1,P#2.0]
          L     22                          // Quell-DB
          T     LW [AR1,P#4.0]
          L     2
          SLW   3                           // Byte-Adresse
          T     LD [AR1,P#6.0]
          L     B#16#84                     // Speicherbereich DB
          T     LB [AR1,P#6.0]
          LAR1  LD   100
     
     
          CALL  "DPWR_DAT"
           LADDR  :=W#16#103
           RECORD :=#quell_pointer
           RET_VAL:=#RET_VALUE
    Geändert von /*Matthias*/ (10.07.2008 um 12:43 Uhr)

  8. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    ... das kann ich jetzt auf die Schnelle auch nicht sehen ...
    Aber ...
    warum schreibst du nicht
    Code:
          CALL  "DPWR_DAT"
           LADDR  :=W#16#103
           RECORD :=p##DB22.DBX2.0 Byte 10
           RET_VAL:=#RET_VALUE
    ...?

    Edit: eventuell habe ich beim Pointer ein "#" zuviel drin ...

  9. #7
    Registriert seit
    23.05.2008
    Beiträge
    32
    Danke
    20
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Mit dem Pointer funktioniert es, allerdings muss ich das auch variabel gestalten, da ich den Pointer nach den ersten 10 Byte versetzen muss. Im OB1 zB funktioniert der gleiche Pointer einwandfrei...

  10. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.227
    Danke
    534
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von /*Matthias*/ Beitrag anzeigen
    CALL "DPWR_DAT"
    LADDR :=W#16#103
    RECORD :=#quell_pointer
    RET_VAL:=#RET_VALUE
    [/code]
    W#16#106 = 259 Dez ???

    Es gibt Befehle ins Step7, die sich an Wortgrenzen ausrichten müssen. Ich weiß es in diesem Fall nicht, aber man kann das ja mal probieren.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  11. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    versuch doch bitte mal folgende Änderung :
    Code:
          LAR1  P##quell_pointer            // Pointer Quell-Daten
          L     B#16#10                     // Syntax-ID
          T     LB [AR1,P#0.0]
          L     B#16#2                      // Datentyp Byte
          T     LB [AR1,P#1.0]
          L     10                          // Anzahl Byte
          T     LW [AR1,P#2.0]
          L     22                          // Quell-DB
          T     LW [AR1,P#4.0]
         L     L#2
         SLD   3                           // Byte-Adresse
         T     LD [AR1,P#6.0]
          L     B#16#84                     // Speicherbereich DB
          T     LB [AR1,P#6.0]
    Gruß
    LL

  12. Folgende 2 Benutzer sagen Danke zu Larry Laffer für den nützlichen Beitrag:

    /*Matthias*/ (11.07.2008),SIGGI (29.10.2008)

  13. #10
    Registriert seit
    13.03.2004
    Beiträge
    135
    Danke
    10
    Erhielt 6 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    die Variable Record ist vom Typ "any" nicht "pointer". Das ist ein kleiner aber feiner Unterschied. Deshalb fehlt noch etwas in deiner Deklaration.

    Gruß Hagen
    Im Zweifel, tue immer das richtige!

Ähnliche Themen

  1. BLKMOV für Simatic S5
    Von matziane im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 08.11.2011, 13:39
  2. Blkmov
    Von sps_mitte im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 06.08.2010, 12:24
  3. blkmov in SCL
    Von Felse im Forum Simatic
    Antworten: 31
    Letzter Beitrag: 25.03.2009, 14:20
  4. Sfc 20 blkmov
    Von Franz im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 29.12.2008, 14:24
  5. BlkMov
    Von Anonymous im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 15.02.2004, 11:33

Lesezeichen

Berechtigungen

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