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

Ergebnis 1 bis 9 von 9

Thema: Indirekte register adressierung

  1. #1
    Registriert seit
    15.12.2009
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Unglücklich


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo
    Habe mehrere DBs, DB1, DB2, DB3, usw.… und jede DB ist für eine Maschine, jede 5 Sekunden wird den Inhalt diese DBs in einem DB10 kopiert
    Das heisst:
    Daten von DB1 werden geschrieben (Teile Hochzählen) >> nach 5 Sekunden >>in DB10 kopiert, dann
    Daten von DB2 werden geschrieben (Teile Hochzählen) >> nach 5 Sekunden >>in DB10 kopiert

    Ich möchte irgendwie ein bisschen das ganze flexibler machen, dass die Daten die in DB 10 nicht durch den 2. Kopiervorgang gelöscht werden, die sollten gespeichert bleiben .
    habe gehört als Lösung muss ich so eine Schleife mit die indirekte Adressierung (LAR1+W#) arbeiten, leider habe ich bis jetzt noch nie damit gearbeitet ….
    Kann mir jemand BITTE sagen wie ich mit eine indirekte registeradressierung arbeiten ???
    Danke .

    Gruß
    sebastian
    Zitieren Zitieren Indirekte register adressierung  

  2. #2
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

  3. #3
    sebastian2010 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.12.2009
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Marlob
    Danke für den link
    leider kann ich nicht viel damit anfangen , da habe ich noch nie damit gearbeitet , gibt es irgend ein einfaches beispiel mit erläuterung
    danke
    Gruß
    Sebastian

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Zitat Zitat von sebastian2010 Beitrag anzeigen
    ... gibt es irgend ein einfaches beispiel mit erläuterung
    Hallo,
    wenn du das Ganze in die Suche eingibst, dann findest du dazu sicherlich einige hundert Beispiele - viele davon sind sogar sehr gut dokumentiert. Versuch dich doch einfach mal ...

    Gruß
    LL

  5. #5
    sebastian2010 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.12.2009
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo
    Danke für die antworte
    und weißt jemanden vielleicht wie man die Daten von ein DB zu ein andere DB schieben kann , ZB , die Daten vom DB1 werden in DB2 geschoben , dann in DB3 usw... bis DB 4
    eine Idee Vielleicht ?
    Grüße
    Sebastian

  6. #6
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard

    das geht z.B. mit dem SFC20 Blockmove
    and we all support the team (S.King - Die Arena)

  7. #7
    sebastian2010 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.12.2009
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ja stimmt aber das ist nicht flexibel , sag ich mal , ich habe gehört man kann die daten in register schieben , oder mit ein flexibler Pointer,aber wie , das ist eine gute frage
    Grüsse
    Sebastian

  8. #8
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.476
    Danke
    1.140
    Erhielt 1.238 Danke für 971 Beiträge

    Standard

    Zitat Zitat von sebastian2010 Beitrag anzeigen
    ja stimmt aber das ist nicht flexibel , sag ich mal , ich habe gehört man kann die daten in register schieben , oder mit ein flexibler Pointer,aber wie , das ist eine gute frage
    Grüsse
    Sebastian
    Schau dir den Aufbau von Any-Pointern an. Damit wird der SFC20 flexibel.
    Gruß
    Dieter

  9. #9
    Registriert seit
    03.12.2006
    Ort
    Kassel
    Beiträge
    74
    Danke
    31
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin!

    Da ich mal ein ähnliches Problem hatte, hier mein Vorschlag:

    Code:
    FUNCTION "DB<==>DB Copy" : VOID
    TITLE =Datenbaustein komplett in einen anderen umkopieren
    AUTHOR : - - - 
    VERSION : 0.1
    
    
    VAR_INPUT
      Quell_DB : INT ;    
      Ziel_DB : INT ;    
    END_VAR
    VAR_OUTPUT
      RetVal : INT ;    
    END_VAR
    VAR_TEMP
      Quellpointer : ANY ;    
      ZielPointer : ANY ;    
      Quell_DB_TMP : INT ;    
      Ziel_DB_TMP : INT ;    
      Laenge_Quell_DB : INT ;    
      Laenge_Ziel_DB : INT ;    
      Adressregister_1 : DWORD ;    
      Adressregister_2 : DWORD ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =Adressregister sichern
    
          TAR1  #Adressregister_1; 
          TAR2  #Adressregister_2; 
    NETWORK
    TITLE =Länge des zu kopierenden Bereichs bestimmen
    
          L     #Quell_DB; 
          T     #Quell_DB_TMP; 
          L     0; 
          ==I   ; 
          L     1; // Fehlernummer für die RetVal
          SPB   ENDE; 
          AUF   DB [#Quell_DB_TMP]; 
          L     DBLG; // Länge des DB auslesen
          T     #Laenge_Quell_DB; 
    NETWORK
    TITLE =Länge des Zieldatenbausteins auslesen
    
          L     #Ziel_DB; 
          T     #Ziel_DB_TMP; 
          L     0; 
          ==I   ; 
          L     2; // Fehlernummer für die RetVal
          SPB   ENDE; 
          AUF   DB [#Ziel_DB_TMP]; 
          L     DBLG; // Länge des DB auslesen
          T     #Laenge_Ziel_DB; 
    NETWORK
    TITLE =Kontrolle ob beide Datenbausteine gleich lang sind
    
          L     #Laenge_Quell_DB; // Nur kopieren, wenn Quelle und Ziel gleich lang sind
          L     #Laenge_Ziel_DB; 
          ==I   ; 
          L     3; // Fehlernummer für die RetVal
          SPBN  ENDE; 
    NETWORK
    TITLE =Any-Poniter auf den Quell-Datenbeustein
    
          LAR1  P##Quellpointer; 
          L     B#16#10; // Syntax-ID (AWL)
          T     LB [AR1,P#0.0]; 
          L     B#16#2; // Datentyp BYTE
          T     LB [AR1,P#1.0]; 
          L     #Laenge_Quell_DB; // Anzahl Byte
          T     LW [AR1,P#2.0]; 
          L     #Quell_DB; // Datenbausteinnummer
          T     LW [AR1,P#4.0]; 
          L     P#DBX 0.0; // Pointer auf Byte und Bit
          T     LD [AR1,P#6.0]; 
    NETWORK
    TITLE =Any-Pointer auf den Zieldatenbaustein
    
          LAR2  P##ZielPointer; 
          L     B#16#10; // Syntax-ID (AWL)
          T     LB [AR2,P#0.0]; 
          L     B#16#2; // Datentyp BYTE
          T     LB [AR2,P#1.0]; 
          L     #Laenge_Quell_DB; // Anzahl Byte
          T     LW [AR2,P#2.0]; 
          L     #Ziel_DB; // Datenbausteinnummer
          T     LW [AR2,P#4.0]; 
          L     P#DBX 0.0; // Pointer auf Byte und Bit
          T     LD [AR2,P#6.0]; 
    NETWORK
    TITLE =DB komplett umkopieren
    
          CALL "BLKMOV" (
               SRCBLK                   := #Quellpointer,
               RET_VAL                  := #RetVal,
               DSTBLK                   := #ZielPointer);
    
    NETWORK
    TITLE =Rückmeldung nach aussen
    
    ENDE: T     #RetVal; 
    NETWORK
    TITLE =Adressregister rücksichern
    
          LAR1  #Adressregister_1; 
          LAR2  #Adressregister_2; 
    END_FUNCTION
    Den Code kannst Du als Quelle importieren.
    Meinen Ansprüchen hat der FC Genüge getan.

    Mal schauen was die Profis hier dazu sagen

    Viele Grüße aus Nordhessen
    DaMeista

Ähnliche Themen

  1. S7 Indirekte Adressierung
    Von Rommani im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 02.05.2014, 22:05
  2. Register indirekte Adressierung
    Von Sota im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 13.06.2010, 19:08
  3. Indirekte Adressierung
    Von Bensen83 im Forum Simatic
    Antworten: 34
    Letzter Beitrag: 26.01.2010, 11:33
  4. indirekte Adressierung in SCL
    Von BiBi im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 18.05.2007, 23:42
  5. Indirekte Adressierung
    Von wusel220983 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 18.05.2007, 18:19

Lesezeichen

Berechtigungen

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