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

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

Thema: S7 mit SFC20 datenblock in die lokaldaten kopieren

  1. #1
    Registriert seit
    03.05.2006
    Beiträge
    491
    Danke
    43
    Erhielt 45 Danke für 42 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hi

    wie ja bekannt dürfen sich beim BLKMOV befehl der quell und zielbereich nicht überlappen.

    nun möchte ich zb. einen datenblock aus dem ersten datensatz eines DBs in die temp lokaldaten eines FBs kopieren um sie dann wieder im gleichen DB ab dem zweiten datensatz einzufügen (datenblock um einen satz verschieben).

    wie muss ich in der var.deklaration des fbs die tempdaten deklarieren bzw. wie muss so ein befehl aussehen?

    grüsse
    Zitieren Zitieren S7 mit SFC20 datenblock in die lokaldaten kopieren  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.399 Danke für 1.999 Beiträge

    Standard

    Wenn dein Ziel eine Struktur ist, dann kannst du den Namen schon an den SFC antragen - ansonsten wie gehabt :

    P#L4.0 Byte 10 // ab Lokalbyte 4 - 10 Bytes

    oder im DB

    P#DB10.DBX6.0 Byte 20

    Gruß
    LL

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

    funkdoc (19.04.2008)

  4. #3
    funkdoc ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.05.2006
    Beiträge
    491
    Danke
    43
    Erhielt 45 Danke für 42 Beiträge

    Standard

    danke war zu faul es auszuprobieren...

    grüsse

  5. #4
    funkdoc ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.05.2006
    Beiträge
    491
    Danke
    43
    Erhielt 45 Danke für 42 Beiträge

    Standard

    hat sich erledigt... habe einen UDT angelegt mit der gleichen struktur wie der DB.

    ne andere frage ist jetzt ob das ganze auch gut geht mit insgesamt 672 Bytes oder geht mir da die cpu in stop?

    grüsse
    Geändert von funkdoc (19.04.2008 um 15:19 Uhr)

  6. #5
    Registriert seit
    20.11.2004
    Ort
    Linz, OÖ
    Beiträge
    1.365
    Danke
    96
    Erhielt 177 Danke für 133 Beiträge

    Standard

    Also, mit 672 Bytes könnte es im Lokaldatenstack eng werden.

    Zum Thema SFC20:
    Es ist zwar richtig, dass sich (lt. Handbuch) der Quell- und Zielbereich nicht überlappen dürfen.
    Ist die Zieladresse (z.B. innerhalb eines DB) niedriger als die Quelladresse, funktioniert der SFC20 auch bei überlappenden Speicherbereichen. Habe Tests auf verschiedenen S7-300 CPUs gemacht, gab bisher noch keine Probleme damit.

    Der Grund, warum das funktioniert, dürfte daran liegen, dass der SFC20 intern Byte- oder Wortweise arbeitet (so genau hab ich es nicht nachvollzogen), ist die Quelleadresse z.B. DBX2.0 und die Zieladresse DBX0.0, so wird auf jeden Fall ohne Datenverfälschung kopiert.


    mfg Maxl
    Bin aufgrund §2 der "Rechte des Betreibers" der Forum-Regeln nicht mehr aktiv, da nicht nicht akzeptiere, dass Informationen und Erkenntnisse ohne Quellangabe weitergegeben werden sollen. Jedem steht frei, auf die gleichen Erkenntnisse durch Eigenversuche zu kommen, vor allem Buchautoren.

  7. Folgender Benutzer sagt Danke zu Maxl für den nützlichen Beitrag:

    funkdoc (20.04.2008)

  8. #6
    funkdoc ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.05.2006
    Beiträge
    491
    Danke
    43
    Erhielt 45 Danke für 42 Beiträge

    Standard

    hi maxl

    es geht tatsächlich...

    habs nie ausprobiert.. da ja in der hilfe steht dass es sich nicht überlappen soll. steht glaub ich sogar dabei dass bei überlappung dann gar nix kopiert wird.


    das ersetzt mir dann einen FIFO auf ziemlich unspektakuläre weise.

    danke
    von welcher gegend bist du denn?

    grüsse

  9. #7
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Wenn dein Ziel eine Struktur ist, dann kannst du den Namen schon an den SFC antragen - ansonsten wie gehabt :

    P#L4.0 Byte 10 // ab Lokalbyte 4 - 10 Bytes

    oder im DB

    P#DB10.DBX6.0 Byte 20
    Wie sähe es eigentlich aus, wenn ich in einem FB die Daten aus dem statischen Bereich mit dem SFC 20 kopieren möchte?
    Irgendwie kam man in einem FB doch an die Nummer des Instanz-DB heran, dann könnte man sich den ANY-Pointer eigentlich selbst zusammensetzen.

    Thomas

  10. #8
    funkdoc ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.05.2006
    Beiträge
    491
    Danke
    43
    Erhielt 45 Danke für 42 Beiträge

    Standard

    die statischen daten sind ja kein problem...
    die werden ja im instanzDB abgelegt.
    die kannst du dir direkt abholen... zb. P#DB1.DBX0.0 byte 128

    grüsse

  11. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.399 Danke für 1.999 Beiträge

    Standard

    ... oder, falls es passt, direkt die symbolische Variable an den SFC antragen ...

  12. #10
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von funkdoc Beitrag anzeigen
    die statischen daten sind ja kein problem...
    die werden ja im instanzDB abgelegt.
    die kannst du dir direkt abholen... zb. P#DB1.DBX0.0 byte 128

    grüsse
    Nur dass ich beim programmieren des FBs den Instanz-DB noch nicht kenne, bzw. gar nicht kennen will. Also die feste DB-Nummer geht so nicht.

    Ich werde morgen mal sehen was der Step 7 Manager für eine Adresse anzeigt, wenn ich wie Larry meinte den symbolischen Namen an den SFC eintrage.
    Zu hause hab ich nur Version 5.1, da funktioniert das mit den Symbolen noch nicht richtig gut.

    Thomas

Ähnliche Themen

  1. Lokaldaten
    Von S7 Frischling im Forum Programmierstrategien
    Antworten: 9
    Letzter Beitrag: 12.08.2013, 14:20
  2. DBs mit SFC20 BLKMOV kopieren
    Von Lenni im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.02.2012, 22:33
  3. einfacher Datenblock lässt sich nicht erstellen
    Von FrankTheTank im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.10.2011, 14:50
  4. mit SFC20 auf Lokaldaten schreiben
    Von Gerri im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 29.01.2009, 19:11
  5. SCL und Lokaldaten
    Von derwestermann im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 14.03.2008, 11:53

Lesezeichen

Berechtigungen

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