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

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

Thema: Diesen FC verstehe ich nicht

  1. #1
    Registriert seit
    16.02.2007
    Beiträge
    150
    Danke
    33
    Erhielt 17 Danke für 15 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    beim erstaunten Betrachten eines sehr umfangreichen Projektes habe ich diesen FC gefunden, dessen Arbeitsweise ich nicht verstehe. Das geht über meine Kenntnisse hinaus. Da ich ihn aber recht interessant finde wäre es nett wenn mir mal jemand erklären könnte, wie das Schritt für Schritt abläuft.
    Insbesonders die von mir blau gekennzeichneten Zeilen verstehe ich nicht. Die fünf VarInput werden beim Aufruf übergeben.


    FUNCTION "DataCopy" : INT
    TITLE =Daten kopieren
    VERSION : 1.0


    VAR_INPUT
    DB_Quelle : INT ;
    Anfang_Quelle : INT ;
    Laenge : INT ;
    DB_Ziel : INT ;
    Anfang_Ziel : INT ;
    END_VAR
    VAR_TEMP
    TEMP5 : ANY ;
    TEMP6 : ANY ;
    END_VAR
    BEGIN
    NETWORK
    TITLE =

    L W#16#1002;
    T LW 0;
    L #Laenge;
    T LW 2;
    L #DB_Quelle;
    T LW 4;
    L #Anfang_Quelle;
    SLD 3;
    OD DW#16#84000000;
    T LD 6;
    NETWORK
    TITLE =

    L W#16#1002;
    T LW 10;
    L #Laenge;
    T LW 12;
    L #DB_Ziel;
    T LW 14;
    L #Anfang_Ziel;
    SLD 3;
    OD DW#16#84000000;
    T LD 16;
    NETWORK
    TITLE =

    CALL "BLKMOV" (
    SRCBLK := #TEMP5,
    RET_VAL := #RET_VAL,
    DSTBLK := #TEMP6);
    BE ;
    END_FUNCTION



    Wie kommen denn überhaupt Daten in die #Temp5 und #Temp6 ?


    Gruß Wilhelm
    Zitieren Zitieren Diesen FC verstehe ich nicht  

  2. #2
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    kennst den aufbau eines any pointers??
    such mal danach im forum oder les dir die umfangreiche beschreibung von volker in den FAQ durch,dann wirst du es verstehen.
    kleiner Tipp.
    die LokalWörter sind bei diesen FC wichtig.
    Gruß gerhard k

  3. #3
    WL7001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.02.2007
    Beiträge
    150
    Danke
    33
    Erhielt 17 Danke für 15 Beiträge

    Standard

    Zitat Zitat von Gerhard K Beitrag anzeigen
    kennst den aufbau eines any pointers??
    such mal danach im forum oder les dir die umfangreiche beschreibung von volker in den FAQ durch,dann wirst du es verstehen.
    kleiner Tipp.
    die LokalWörter sind bei diesen FC wichtig.
    Gruß gerhard k
    OK, danke für den Hinweis, habe ich jetzt erst gesehen, das #Temp5 aus LW 0-8 und #Temp6 aus LW 10-18 besteht und so die ANY POINTER für den SFC20 Quelle und Ziel zusammengebaut wird.

    Jetzt fehlt mir nur noch die Erklärung für
    L W#16#1002; T LW 0
    und
    OD DW#16#84000000; T LD 6;


    Gruß und Danke soweit
    Wilhelm

  4. #4
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    81 Eingänge 82 Ausgänge 83 Merker
    84 Datenbaustein 85 Instanz-DB 86 Lokal daten (L-Stack)
    87 Vorherige Lokal daten

    OD DW#16#84000000 // Speicherbereich (hier DB)

    Oder Doppelwort

  5. Folgender Benutzer sagt Danke zu Gerhard K für den nützlichen Beitrag:

    WL7001 (30.03.2008)

  6. #5
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard

    Hallo!

    Code:
          L     W#16#1002;     //Lade den Wert 1002 in Hexadezimal (Dieser Wert ist immer gleich)
          T     LW     0;              //Transferiere es in das Lokalwort 0
          L     #Laenge; 
          T     LW     2; 
          L     #DB_Quelle; 
          T     LW     4; 
          L     #Anfang_Quelle; 
          SLD   3;                   //Bilde Pointer
          OD    DW#16#84000000;   //Oderverknüpfung mit dem Hexwert damit der Pointer für DBX (Bereichsübergreifend) formatiert wird
          T     LD     6;            //Transferiere Pointer in das Lokaldoppelwort 6
    NETWORK
    TITLE =
    
          L     W#16#1002; 
          T     LW    10; 
          L     #Laenge; 
          T     LW    12; 
          L     #DB_Ziel; 
          T     LW    14; 
          L     #Anfang_Ziel; 
          SLD   3; 
          OD    DW#16#84000000; 
          T     LD    16; 
    NETWORK
    TITLE =
    
          CALL "BLKMOV" (
               SRCBLK                   := #TEMP5,
               RET_VAL                  := #RET_VAL,
               DSTBLK                   := #TEMP6);
          BE    ; 
    END_FUNCTION
    Da habe ich auch mal ein Beispiel gemacht:
    http://www.sps-forum.de/showpost.php...4&postcount=13

    Das ist mit indirekter Adressierung so das nicht auf die Lokaldaten direkt zugegriffen werden muss.

    godi

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

    WL7001 (30.03.2008)

  8. #6
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    L W#16#1002; T LW 0
    LW 0 besteht aus LB 0 und LB 1

    Code:
      L     B#16#10                   //10h für s7
               T     LB     0
               L     B#16#02                   //Typ BYTE
              T     LB     1
    der Code ist ein Auschnitt von Volkers Beschreibung aus dem FAQ

    Hoffe jetzt ist es leichter verständlich.
    Gruß gerhard K
    Geändert von Gerhard K (30.03.2008 um 20:47 Uhr)

  9. Folgender Benutzer sagt Danke zu Gerhard K für den nützlichen Beitrag:

    WL7001 (30.03.2008)

  10. #7
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    Code:
     L     W#16#1002;     //Lade den Wert 1002 in Hexadezimal (Dieser Wert ist immer gleich)
    @ godi
    Ist der wirklich immer gleich??

    1002 sind die letzten 2 Stellen nicht abhängig vom Datentyp oder
    steh ich jetzt auf der Leitung??
    Geändert von Gerhard K (30.03.2008 um 20:54 Uhr)

  11. #8
    WL7001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.02.2007
    Beiträge
    150
    Danke
    33
    Erhielt 17 Danke für 15 Beiträge

    Standard

    Danke euch beiden für die Erklärungen. Ist ja ganz schön tricky, jedenfalls für mich. Wo würdet ihr denn die Programmierkenntnisse des Erstellers auf einer Skala von 0 bis 10 einstufen ? Damit ich mal eine Ahnung kriege, wo ich denn dann so ungefähr stehe, denn darauf wäre ich nicht gekommen

    Gruß Wilhelm

  12. #9
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    wenn man mal den Aufbau eines Any kennt ist das n.M. nach keine große Hexerei mehr.
    Gruß gerhard k

  13. #10
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Gerhard K Beitrag anzeigen
    Code:
     L     W#16#1002;     //Lade den Wert 1002 in Hexadezimal (Dieser Wert ist immer gleich)
    @ godi
    Ist der wirklich immer gleich??

    1002 sind die letzten 2 Stellen nicht abhängig vom Datentyp oder
    steh ich jetzt auf der Leitung??
    Nein du stehst nicht auf der Leitung. Da habe ich mich falsch ausgedrückt.
    Wie du sagst die 10 sind immer gleich und die 02 ist der Datentype (in diesem Fall Byte)
    In dem link den ich im oberen Beispiel eingefügt habe stehen die genauen werte.

Ähnliche Themen

  1. Antworten: 13
    Letzter Beitrag: 22.10.2010, 22:22
  2. Antworten: 35
    Letzter Beitrag: 14.09.2010, 14:16
  3. Kennt jemand diesen Türschalter-Typ?
    Von Rainer_Eifel im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 11.11.2009, 15:49
  4. S5 Sprunganweisung, die ich nicht verstehe
    Von spybot im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 28.10.2009, 16:05

Lesezeichen

Berechtigungen

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