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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: Nur "0" via BLKMOV in DB schreiben?!

  1. #11
    Registriert seit
    08.12.2006
    Ort
    Kleinwallstadt
    Beiträge
    90
    Danke
    4
    Erhielt 2 Danke für 2 Beiträge

    Cool


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Habs jetzt ganz anders gelöst.

    L 0
    T MD 200 //Schmiermerker mit 0 beschreiben

    CALL "FILL" //SFC21
    BVAL :=MD200 //Schmiermerker
    RET_VAL:=MW204 //Schmiermerker
    BLK :=P#DB200.DBX0.0 BYTE 40 //Alles Null setzen der erste 40 Byte

    CALL "FNK: BLK_MOV"
    AnzahlDBB:=40 //Wie viele Byte's werden verschoben?
    QuellDB :=200 //Woher kommen die Daten?
    QuellDW :=0 //Wo beginnen die daten
    ZielDB :=111 //Wohin sollen die Daten
    ZielDW :=#Adress_BLKMOV_2 //Wo beginnen die daten
    RET_VAL :=MW200 //Schmiermerker

    Tada, und schon hat man 40 byte leer

  2. #12
    Registriert seit
    18.09.2006
    Beiträge
    231
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    das ist doch doppelt gemoppelter blödsinn

    warum nicht direkt in den db111?

    L 0
    T MW 200
    CALL SFC 21
    BVAL :=MW200
    RET_VAL:=#retval
    BLK :=P#DB111.DBX20.0 BYTE 40 //40 byte 0 ab dbb20

    und falls es dir darum geht das ziel variabel zu machen kannst du dir den any-zeiger so bauen

    L W#16#1002 //Typ BYTE
    T LW 0
    L #Blockgroesse //Anzahl Bytes
    T LW 2
    L #ziel_db //Ziel-DB
    T LW 4
    L #QAnfang_schleife //Anfang der Quelle
    SLD 3
    OD DW#16#84000000
    T LD 6

    //temp_var: #zany typ: any liegt im L0
    und dann einfach zany an den parameter blk schreiben
    Geändert von KalEl (21.12.2006 um 07:20 Uhr)
    .
    mfg KALEL

    Wer über gewisse Dinge nicht den Verstand verliert, der hat keinen zu verlieren.
    Gottfried Ephraim Lessing

  3. #13
    Registriert seit
    28.06.2006
    Ort
    Königreich Neuseeland
    Beiträge
    2.027
    Danke
    133
    Erhielt 96 Danke für 76 Beiträge

    Standard

    Zitat Zitat von Hawkster Beitrag anzeigen
    Habs jetzt ganz anders gelöst.

    Tada, und schon hat man 40 byte leer
    Das hättets du auch einfacher haben können, siehe KalEl.

  4. #14
    Registriert seit
    08.12.2006
    Ort
    Kleinwallstadt
    Beiträge
    90
    Danke
    4
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Naja, habe mich noch nicht mit ANY-Zeigern auseinander gesetzt

    Von daher gehe ich dann doch lieber über bissl mehere DB's und machst mit nem Normalen Zeiger

  5. #15
    Registriert seit
    18.09.2006
    Beiträge
    231
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Hawkster Beitrag anzeigen
    Naja, habe mich noch nicht mit ANY-Zeigern auseinander gesetzt
    dann schau dir mal deinen blk_mov genauer an.
    dort wird der any-zeiger vermutlich ähnlich gebaut wie ich das oben geschrieben habe.
    der orginale (sfc20) ist das jedenfalls nicht.
    .
    mfg KALEL

    Wer über gewisse Dinge nicht den Verstand verliert, der hat keinen zu verlieren.
    Gottfried Ephraim Lessing

  6. #16
    Registriert seit
    08.12.2006
    Ort
    Kleinwallstadt
    Beiträge
    90
    Danke
    4
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ja weiß ich, da wird auch so ein Pointer zusammengebastelt. Aber ich raff den net, is mir alles net so logisch daran. Aber werde ma das forum durchsuchen nach ANY-Definitionen und Beispielen.

    Trotzden Danke

  7. #17
    Registriert seit
    08.12.2006
    Ort
    Kleinwallstadt
    Beiträge
    90
    Danke
    4
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von KalEl
    und falls es dir darum geht das ziel variabel zu machen kannst du dir den any-zeiger so bauen

    L W#16#1002 //Typ BYTE
    T LW 0
    L #Blockgroesse //Anzahl Bytes
    T LW 2
    L #ziel_db //Ziel-DB
    T LW 4
    L #QAnfang_schleife //Anfang der Quelle
    SLD 3
    OD DW#16#84000000
    T LD 6
    Habe jetzt mal versucht diesen Code irgendwie zu übersetzen
    Meine Schlussfolgerungen sind fogende:

    L W#16#1002 steht laut der S7-Doku für Bytes. D.h. es wird wohl ein bezug zu irgendwelchen Bytes daargestellt.
    L W#16#1002 konnte ich bis jetzt leider noch nicht zuordnen.

    Was ist ein LW (Lokaldatenwort) genau? Wie groß ist es usw...

    Bin bissl hilflos wie ihr sicher feststellt
    Zitieren Zitieren ANY-Pointer Definition  

  8. #18
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    byte 0 ist bei s7 immer 10. keine ahnung warum.
    lokaldaten sind die speicherbereiche der temp_var

    öffne mal aus dem s7-manager die hilfe im index nach any suchen.
    wirst du einiges finden.
    und dann weiterfragen falls noch unklarheiten bestehen.

    wie lang das ist ist abhängig davon was du deklariert hast.
    der any-zeiger ist 10 byte lang
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

Ähnliche Themen

  1. Antworten: 14
    Letzter Beitrag: 22.07.2011, 08:26
  2. "Index Pulse", "Home Switch" und "Position Limit Switch"
    Von senmeis im Forum Antriebstechnik
    Antworten: 3
    Letzter Beitrag: 07.03.2011, 11:21
  3. Antworten: 36
    Letzter Beitrag: 01.06.2009, 23:36
  4. Probleme mit SFC20 "BLKMOV"
    Von matchef im Forum Simatic
    Antworten: 25
    Letzter Beitrag: 18.12.2008, 16:19
  5. Antworten: 2
    Letzter Beitrag: 14.12.2007, 15:09

Lesezeichen

Berechtigungen

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