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

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

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

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Leute,

    habe gerade ein dickes Brett vor dem Kopf. Folgendes Problem:
    Werte (INT) von mehreren Meßstellen aus DB lesen und in anderen DB schrieben (kopieren). Hane diesen DB als Array angelegt

    DB150.dbw14 Wert 1 -> DB60.dbw0
    DB150.dbw28 Wert 2 -> DB60.dbw2
    DB150 dbw42 Wert 3 -> DB60.dbw4

    Über die Visu möchte ich einen Sollwert (INT) vorgeben, der für alle Meßstellen gültig ist.

    DB70.dbw0 -> DB80.dbw14
    -> DB80.dbw28
    -> DB80.dbw42
    .......

    Könnt ihr mir bitte dabei kurzfristig helfen?
    Danke schon mal vorab

    Gruß Heizer
    Zitieren Zitieren Daten in DB schreiben /aus DB lesen/ kopieren  

  2. #2
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Da die Werte nicht am Stück vorliegen, ist kein Blockmove möglich. Es bleibt somit Zugriff mit Pointern oder das Ganze auszuprogrammieren.
    Code:
    L DB150.dbw14
    T DB60.dbw0
    L DB150.dbw28
    T DB60.dbw2
    L DB150.dbw42
    T DB60.dbw4
    Beim Sollwert ist es ja nur ein mehrfaches Transferieren
    Code:
    L DB70.dbw0 
    T DB150.dbw14
    T DB150.dbw28
    T DB150.dbw42
    Oder habe ich jetzt die Frage nicht richtig verstanden?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

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

    Standard

    Zitat Zitat von Rainer Hönle Beitrag anzeigen
    Da die Werte nicht am Stück vorliegen, ist kein Blockmove möglich. Es bleibt somit Zugriff mit Pointern oder das Ganze auszuprogrammieren.
    Code:
    L DB150.dbw14
    T DB60.dbw0
    L DB150.dbw28
    T DB60.dbw2
    L DB150.dbw42
    T DB60.dbw4
    Beim Sollwert ist es ja nur ein mehrfaches Transferieren
    Code:
    L DB70.dbw0 
    T DB150.dbw14
    T DB150.dbw28
    T DB150.dbw42
    Oder habe ich jetzt die Frage nicht richtig verstanden?
    Hallo Herr Hönle,

    danke für die Info, dass der Blockmove nicht funktioniert ist mir auch klar.
    Die Frage haben Sie richtig verstanden, allerdings muss ich mehrere Daten (ca 150 Messwerte und das Ganze ca 30 x) kopieren/transferieren. Wenn ich das nach der klassichen Methode L DB150.dbw0 T DB160dbw14 mache ist das sehr unkomfortabel.
    Habe an indirekte Adressierung gedacht.
    Geht das eigentlich komfortabel in SCL? Habe mich allerdings damit noch nicht beschäftigt.

  4. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von Heizerfraktion Beitrag anzeigen
    Habe an indirekte Adressierung gedacht.
    wenn sich ein bestimmtes muster finden lässt, ist da sicher was zu machen... also? wie lautet das muster? zwei links, zwei rechts, eine fallen lassen?
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    Standard

    L DB150.dbw14
    T DB60.dbw0
    L DB150.dbw28
    T DB60.dbw2
    L DB150.dbw42
    T DB60.dbw4


    ausleseDB in 14er schritte und einleseDB 2er schritte wenn man es so nimmt wie er geschrieben hat.
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

  6. #6
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von Gerhard K Beitrag anzeigen
    ausleseDB in 14er schritte und einleseDB 2er schritte wenn man es so nimmt wie er geschrieben hat.
    mit beiden AR und AUF DB und AUF DI läßt sich da gut was machen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    Standard

    wenn der logorythmus wirklich so ist auf jeden fall.
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

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

    Standard

    Hallo Zusammen,

    um Missverständnisse zu vermeiden:
    1. Der Offset von 14 Worten ist immer gleich, lediglich die Startadresse variiert
    2. Ich hatte an zwei Bausteine gedacht, einen für das Schreiben der Daten und einen zum Lesen

    @ vierlagig: Daran hatte ich auch gedacht, allerdings ist mir die Funktinsweise von DI nicht mehr ganz geläufig

    Ich versuch das Gnze noch mal genauer zu beschreiben:

    30 Daten lesen aus DB150,(Werte haben einen Offset von 14 Worten) schreiben in ein Array [1-30] nach DB 160

    Startadresse z.B. DB150. DBW14 Wert 1 -> DB156.DBW40
    DB150. DBW28 Wert 2 -> DB156.DBW42
    ... ......................................
    DB150. DBW420 Wert 1 -> DB156.DBW74

    Nun möchte ich umgekehrt mit einem anderen Baustein die Werte aus dem Array [1-30] im DB160 in einen anderen DB170 schreiben

    Ich hoffe, dass e jetzt besser verständlich ist

    Gruß Heizer

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

    Standard

    Code:
      AUF   "Quelle" DB 160
          AUF   DI    156
          L     P#14.0    //  die startadresse kann man auch variabel 
          T     MD    20 //   gestalten
          L     P#40.0
          T     MD    30
          L     30
    next: T     #count
          L     DBW [MD 20]
          T     DIW [MD 30]
          L     MD    20
          L     P#14.0
          +D    
          T     MD    20
          L     P#2.0
          L     MD    30
          +D    
          T     MD    30
          L     #count
          LOOP  next
    das ist eine sehr einfache möglichkeit ohne AR1 und AR2 um die Daten von einem in den anderen DB zu schreiben
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

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

    Heizerfraktion (27.03.2010)

  11. #10
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Heizerfraktion Beitrag anzeigen
    @ vierlagig: Daran hatte ich auch gedacht, allerdings ist mir die Funktinsweise von DI nicht mehr ganz geläufig
    die steuerung hat zwei adressregister
    du kannst mit AUF DI (eigentlich instanz-DB) auch einen globalen DB aufmachen und benutzt diesen dann automatisch mit dem AR2 (im gegensatz dazu: AR1 "benutzt" den DB der mit AUF DB geöffnet wird)

    VORSICHT! in FBs, denn da wird das AR2 für die interne adressierung automatisch benutzt, dass heißt, du solltest sowal AR2 also auch den letzten offenen DI speichern und nach deiner kopierfunktion wieder herstellen (würde ich übrigens grundsätzlich machen...

    mittlerweile hat gerhard schon geantwortet ... ja, ohne AR gehts auch, aber ich finds schöner mit ^^ vorallem wegen so tollen möglichkeiten wie

    Code:
    *
         +AR1    P#2.0
    das verkürzt das konstrukt ...

    zum variablen laden der adressen das erste byte nummerieren und drei nach links schieben (SLD 3) ... hängt mit dem pointeraufbau zusammen ... xxxx xyyy .... x byte-, y bitadresse
    Geändert von vierlagig (27.03.2010 um 11:03 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  12. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    Heizerfraktion (27.03.2010)

Ä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
  •