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

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

Thema: Daten in DB schreiben /aus DB lesen/ kopieren

  1. #11
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Dalbi sorry, ich hab auf die schnelle Deinen Baustein rauskopiert und geändert.

    @Heizer, bei dem Baustein übergibst du die Quelle und das Ziel einfach als Anyzeiger. (Quelle_1 := DB150.DBW14 / Quelle_2 := DB156.DBW40)
    Anzahl wären Deine 30 Worte
    Und wenn Du das Bit schreiben auf True setzt werden die Daten von DB156 in den DB150 zurück geschrieben.
    Ist allerdings jetzt nicht getestet.

    Den Danke Button kannst Du dann beim Dalbi drücken, der Link bringt Dich zum Orginalbaustein (Schaut aber ein bisschen anders aus):
    http://sps-forum.de/showpost.php?p=251550&postcount=116

    Code:
    FUNCTION "FC10" : VOID
    TITLE : Daten kopieren
    VERSION : 0.1
     
     
    VAR_INPUT
      Quelle_1 : ANY ;    
      Quelle_2 : ANY ;   
      Anzahl  : INT ; 
      Schreiben : Bool; // True =schreiben / Fales = lesen
    END_VAR
    VAR_TEMP
      tDBNr_Q1 : WORD ;    
      tDBNr_Q2 : WORD ;    
      tZaehler : INT ;    
      tSaveAr1 : DWORD ;    
      tSaveAr2 : DWORD ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =Adressregister sichern
     
          TAR1  #tSaveAr1; 
          TAR2  #tSaveAr2; 
     
    NETWORK
    TITLE =Zeiger zusammenstellen
          U #Schreiben
          L     P##Quelle_2;
          SPB S1;
          L     P##Quelle_1; 
    S1:   LAR1; 
          L     W [AR1,P#4.0]; //DB-Nummer o. =0
          T     #tDBNr_Q1; 
          L     D [AR1,P#6.0]; //Speicherbereich
          LAR1  ; //AR1 auf Erste Adresse
     
          U #Schreiben;
          L     P##Quelle_1;
          SPB S2;
          L     P##Quelle_2; 
    S2:   LAR2 ; 
          L     W [AR2,P#4.0]; //DB-Nummer o. =0
          T     #tDBNr_Q2; 
          L     D [AR2,P#6.0]; //Speicherbereich
          LAR2  ; //AR2 auf Erste Adresse
     
    NETWORK
    TITLE =Daten kopieren
     
          L #Anzahl; 
    next: T     #tZaehler; 
     
          AUF   DB [#tDBNr_Q1]; //Quelle Datenbaustein öffnen
          L     DBW [AR1,P#0.0]; //Quelle laden
          AUF   DB [#tDBNr_Q2]; //Ziel Datenbaustein öffnen
          T     DBW [AR2,P#0.0]; //Ziel transferieren
     
          U #Schreiben;
          SPB S3;
          +AR1  P#14.0; //Adresse AR1 um 14 Byte erhöhen
          +AR2  P#2.0; //Adresse AR2 um 2 Byte erhöhen
          SPA ENDE;
    S3:   +AR1  P#2.0; //Adresse AR1 um 2 Byte erhöhen
          +AR2  P#14.0; //Adresse AR2 um 14 Byte erhöhen
    ENDE:  NOP 0;
          L     #tZaehler; //Noch mal?
          LOOP  next; 
     
    NETWORK
    TITLE =Adressregister AR1&2 wiederherstellen
     
          LAR1  #tSaveAr1; 
          LAR2  #tSaveAr2; 
     
    END_FUNCTION
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  2. Folgender Benutzer sagt Danke zu Paule für den nützlichen Beitrag:

    Heizerfraktion (27.03.2010)

  3. #12
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    kein Problem.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  4. Folgender Benutzer sagt Danke zu dalbi für den nützlichen Beitrag:

    Heizerfraktion (27.03.2010)

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

    Standard

    hier noch eine lösung mit auf DB und auf DI , AR1 und AR2

    Code:
     
          TAR1  #ar1sichern
          TAR2  #ar2sichern
     
          AUF   DB   156
          AUF   DI   150
     
          L     #startlesen
          SLD   3
          LAR1  
     
          L     #startschreiben
          SLD   3
          LAR2  
     
          L     30
    next: T     #count
          L     DBW [AR1,P#0.0]
          T     DIW [AR2,P#0.0]
     
          +AR1  P#14.0
          +AR2  P#2.0
     
          L     #count
          LOOP  next
     
          LAR1  #ar1sichern
          LAR2  #ar2sichern
    ist jetzt der code für eine FC. für einen FB muß man noch was hinzuzählen(siehe Beitrag von vl)
    Geändert von Gerhard K (27.03.2010 um 11:36 Uhr)
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

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

    Heizerfraktion (27.03.2010)

  7. #14
    Registriert seit
    29.03.2006
    Beiträge
    44
    Danke
    9
    Erhielt 7 Danke für 1 Beitrag

    Standard

    Hallo Leute,

    danke erst mal für die Kurzfristige Unterstützung. War gestern so genervt, da war klar denken nicht mehr möglich.
    Generell mal: Was bevorzugt ihr bei solchen Anwendungen-> FB oder FC? Ich persönlich bin mehr der Freund von FC's.
    Habe die Vorschläge umgesetzt, werde mich jetzt ans testen machen.
    Habt ihr Erfahrungen mit Zykluszeiten bei häufiger Verwendung von solchen Bausteinen? Wie siehts mit der Abarbeitungim Programm aus -> innerhalb eines Zykluses oder über mehrere verteilt? Gibt es eventuell Konflikte mit dem OB35 bei 20ms Aufruf?

    @ vierlagig:
    Das mit dem DI war mir neu, dachte das würde nur mir FB's gehen. Also wieder was gelernt. Muss mich mal wieder intensiver die Theorie beschäftigen.

    Schon mal an allle eine schönes WE
    Gruß Heizer

  8. #15
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Heizerfraktion Beitrag anzeigen
    Generell mal: Was bevorzugt ihr bei solchen Anwendungen-> FB oder FC? Ich persönlich bin mehr der Freund von FC's.
    Habe die Vorschläge umgesetzt, werde mich jetzt ans testen machen.
    Habt ihr Erfahrungen mit Zykluszeiten bei häufiger Verwendung von solchen Bausteinen? Wie siehts mit der Abarbeitungim Programm aus -> innerhalb eines Zykluses oder über mehrere verteilt? Gibt es eventuell Konflikte mit dem OB35 bei 20ms Aufruf?
    Hallo Heizer,
    ich nehme für so etwas auch gerne eine FC.
    Da in dem Baustein ja nichts gemerkt werden muss. Die Daten werden ja in einem Zyklus kopiert.
    Und selbst wenn der Baustein durch einen Alarm OB unterbrochen wird, macht das dem Temporären Zeiger nichts aus, da ja jeder OB seinen eigenen Lokaldaten Stack besitzt.

    Betreff Zykluszeit:
    Ob Du jetzt jedes Datenwort mit "L" und "T" übergibst oder das in einer Schleife machst ist fast egal.
    Und 30 Variablen sind jetzt nicht wirklich viel.

    Ob das Konflikte mit dem OB35 macht kann man so pauschal nicht sagen.
    Deine Zykluszeit sollte halt immer kleiner sein als die Aufrufzeit des Weckalarms.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

Ähnliche Themen

  1. Daten aus S7 lesen und schreiben
    Von pat125 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 01.11.2011, 19:35
  2. Mit OPC Daten Bidirektional lesen und schreiben
    Von captainchaos666 im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 09.07.2008, 18:54
  3. Libnodave Daten lesen/schreiben
    Von Acidic im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.06.2008, 08:32
  4. Daten aus DB lesen / in DB schreiben
    Von Supervisor im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.06.2006, 12:02
  5. Daten lesen/schreiben und verarbeiten
    Von Supervisor im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 02.05.2006, 08:08

Lesezeichen

Berechtigungen

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