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

Ergebnis 1 bis 5 von 5

Thema: S5->S7 der SFC20 Block_Move - Fragen zu Operanden

  1. #1
    Registriert seit
    21.04.2009
    Ort
    München
    Beiträge
    220
    Danke
    56
    Erhielt 0 Danke für 0 Beiträge

    Daumen runter


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Ich habe die S5 Bausteine FB190, 191, 192 und 193 zum kopieren Datenblöcken mit dem SFC20 ersetzt, wie es im Übersetzungshandbuch empfohlen wird.
    Es ist mir nur nicht klar ob das wirklich so funktionieren kann.

    Beispiel:
    Ich hab im FC folgende TEMP Einträge:
    conv_akku1 DWORD 0.0
    conv_stw WORD 4.0
    conv_index WORD 6.0


    In einem Netzwerk hab ich bspw den OB191 so übersetzt.
    Code:
    AUF DB97               //DB 97 Aufrufen
    L   4            //AB DW4 (BIS DW24) NACH
    L   B#(200,241)   //BEREICH MB200-MB241  =42byte = 21 Wörter
    // CALL OB191   //alte S5 funktion
    
    CALL SFC 20    //Statt OB 191 -> SFC20
    SRCBLK:= P#DB97.DBX4.0 WORD 21
    RET_VAL:= MW260
    DSTBLK:= P#M200.0 WORD 21
    ich kopiere also von DB97 ab DW4 die 42 Bytes bzw. 21 Words ist das so in Ordnung?

    Falls ja nächste Frage:

    Jetzt gibts hier ein Fall mit dem OB190, ich hab das so gemacht:

    Code:
    AUF DB [#conv_index]    //DB  [#conv_index]  Aufrufen ---> was ist das  [#conv_index]  überhaupt?
    L   B#(200, 241)          //Merkerbytes von ......bis ....   --> ist das der schmiermerker? 
    L   MB 250       //In DB ab Datenwort
    // CALL OB190   //alte S5 funktion
    
    // so richtig?
    CALL SFC 20    //Statt OB 190 -> SFC20 
    SRCBLK:= P#M200.0 BYTE 42    //da von 200 bis 241 -> 42bytes
    RET_VAL:= MW260
    DSTBLK:= P#M250.0 BYTE 42   // nach MB250 kopieren die 42 bytes bzw. 21 words
    ist das nun so richtig?

    woher weiß denn SRCBLK das ich mit P#M200.0 BYTE 42 die DB [#conv_index] meine?
    oder ist das falsch und man macht das anders?


    Für eure hilfe wäre ich sehr dankbar!
    Gruß
    SK
    Geändert von superkato (13.11.2012 um 23:47 Uhr)
    TIA V13 + SP1 Update5 Windows8.1
    Zitieren Zitieren S5->S7 der SFC20 Block_Move - Fragen zu Operanden  

  2. #2
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    .
    im ersten Code kopierst du aus dem DB97 in die Merker 200 aufwärts, ich
    würde aber eine geradzahlige Anzahl von Bytes bevorzugen.

    im zweitem Code spielt das DB [#conv_index] gar keine Rolle, weil du am
    SFC20 die Quell- und Zielparameter explizit genannt hast.

    Aber:
    Dein Ret_Val liegt mitten im Zielbereich und wird dir deine Daten
    verfälschen !
    kind regards
    SoftMachine

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

    superkato (14.11.2012)

  4. #3
    Avatar von superkato
    superkato ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.04.2009
    Ort
    München
    Beiträge
    220
    Danke
    56
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von SoftMachine Beitrag anzeigen
    .

    im zweitem Code spielt das DB [#conv_index] gar keine Rolle, weil du am
    SFC20 die Quell- und Zielparameter explizit genannt hast.
    aber nur weil ich davon ausgehe das sie richtig sind.
    Ich frage mich ob die Quelleangabe stimmt wenn dort das so vorher steht:


    AUF DB [#conv_index]
    L B#(200, 241) //Merkerbytes von ......bis ....
    L MB 250 //CALL OB190


    Ah stimmt Retval wird dann auhc eine temp!
    TIA V13 + SP1 Update5 Windows8.1

  5. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von superkato Beitrag anzeigen
    AUF DB [#conv_index]
    L B#(200, 241) //Merkerbytes von ......bis ....
    L MB 250 //CALL OB190
    Der Code ist nur noch eine "Leiche" aus S5.

    AUF DB [#conv_index] öffnet den DB mit der Nummer #conv_index, wahrscheinlich steht irgendwo im Code vorher ein T #conv_index.
    Dei beiden nächsten Zeilen machen nichts mehr, können also gelöscht werden.
    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:

    superkato (14.11.2012)

  7. #5
    Avatar von superkato
    superkato ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.04.2009
    Ort
    München
    Beiträge
    220
    Danke
    56
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ah ok danke Ralle und Softmachine!

    Also ist es so korrekt wie ich das mache ? Bzw. den OB191/190 so interpretiert?

    Falls ja , vielen dank jungs !
    TIA V13 + SP1 Update5 Windows8.1

Ähnliche Themen

  1. S7 Englische Operanden
    Von Senator42 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 14.12.2011, 00:00
  2. Anfängerfrage: Operanden
    Von tymanis im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 19.05.2010, 13:45
  3. Ungültige Operanden
    Von tomatensaft im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 17.08.2007, 10:31
  4. binäre operanden
    Von lister67 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 27.12.2006, 15:22
  5. Antworten: 2
    Letzter Beitrag: 12.12.2006, 16:14

Lesezeichen

Berechtigungen

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