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

Ergebnis 1 bis 3 von 3

Thema: SFC20 Blockmove Problem

  1. #1
    Registriert seit
    07.05.2014
    Beiträge
    16
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nabend,

    ich habe ein paar Startschwierigkeiten mit der SFC20.

    Ich möchte in diesem Beispiel die Variable OB1_DATE_TIME in den DB6 schieben.

    Code:
          AUF   DB     6
    
          L     B#16#10                     //10h für s7
          T     LB     0
          L     B#16#2                      //Typ BYTE
          T     LB     1
          L     8                           //Anzahl (Wiederholungsfaktor)
          T     LW     2
          L     6                           //Nummer des DBs
          T     LW     4
    
          L     0                           //Anfangsadresse im Ziel-DB
          SLD   3                           //Pointer erzeugen
          T     LD     6
          L     B#16#84                     //Speicherbereich (DB)
          T     LB     6
    
    
          CALL  "BLKMOV"                    //Datensatz mit SFC20 in den DB kopieren 
           SRCBLK :=#OB1_DATE_TIME
           RET_VAL:=AW104
           DSTBLK :=#Zeiger
    
          L     DBB    3                     // Testausgabe
          T     AB   100
          L     DBB    4
          T     AB   101
          L     DBB    5
          T     AB   102
    #Zeiger ist im Temp Bereich (0.0 - 9.7) deklariert. (Datentyp ANY)

    Zum Test lese ich am Ende ein paar Bytes aus, jedoch stehen überall nur Nullen drin.

    Was mache ich da verkehrt?

    Grüße
    Zitieren Zitieren SFC20 Blockmove Problem  

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

    Standard

    .
    Schau dir HIER das mal an
    kind regards
    SoftMachine

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.289 Danke für 2.658 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    #Zeiger kann eigentlich nicht in TEMP an L0.0 deklariert sein, denn da liegen schon die vordefinierten OB1-Lokaldaten OB1_EV_CLASS ..., z.B. OB1_DATE_TIME ab L12.0 - oder hast Du Deine ANY-Variable #Zeiger davor eingefügt und damit die Deklarationen der vorhandenen Lokaldaten um 10 Byte verschoben? Das kann nichts werden. Die Startzeit des OB1 ist immer ab L12.0 eingetragen, egal wo OB1_DATE_TIME deklariert wird.


    Wenn Du unbedingt einen ANY-Pointer basteln willst, dann deklariere #Zeiger hinter den vordefinierten OB1-Lokaldaten und beschreibe den Pointer besser so:
    Code:
          LAR1  P##Zeiger                   //Anfangsadresse der ANY-Variable in Adressregister laden
          L     B#16#10                     //10h für S7
          T     B [AR1,P#0.0]
          L     B#16#2                      //Typ BYTE
          T     B [AR1,P#1.0]
          L     8                           //Anzahl (Wiederholungsfaktor)
          T     W [AR1,P#2.0]
          L     6                           //Nummer des Ziel-DB
          T     W [AR1,P#4.0]
          L     P#DBX 0.0                   //Anfangsadresse im Ziel-DB mit Bereichskennung "DB"
          T     D [AR1,P#6.0]
    
          CALL  "BLKMOV"
           SRCBLK :=#OB1_DATE_TIME
           RET_VAL:=MW104
           DSTBLK :=#Zeiger
    
          L     DB6.DBB 3                   // Testausgabe
          ...

    Du brauchst aber keinen ANY-Pointer basteln. Du kannst auch direkt schreiben:
    Code:
          CALL  "BLKMOV"
           SRCBLK :=#OB1_DATE_TIME
           RET_VAL:=MW104
           DSTBLK :=P#DB6.DBX0.0 BYTE 8
    Wenn der DB6 einen Symbolischen Namen hat und in dem DB6 an der Adresse 0.0 eine DATE_AND_TIME-Variable "DT_Variable_1" ist, dann wird der AWL-Editor das umformen zu:
    Code:
          CALL  "BLKMOV"
           SRCBLK :=#OB1_DATE_TIME
           RET_VAL:=MW104
           DSTBLK :="DB6".DT_Variable_1
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Frage zu SFC20 Blockmove
    Von SPS_79 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 29.10.2012, 15:34
  2. Problem mit sfc20
    Von gustave im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 13.09.2010, 21:02
  3. SFC20 BlockMove mit variablem Quell DB
    Von t-poke im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.09.2009, 05:12
  4. SFC20 - Blockmove - indirekt Adressiert ???
    Von DaMeista im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 10.01.2007, 12:03
  5. Blockmove
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 18.01.2005, 08:43

Lesezeichen

Berechtigungen

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