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

Ergebnis 1 bis 9 von 9

Thema: [SCL] DATE_AND_TIME aus DB holen

  1. #1
    Registriert seit
    20.12.2006
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also. die AUfgabenstellung ist ja recht simpel:

    Ich mach einen FC in SCL.
    in einem DB hab ich ein DATE_AND_TIME und möchte das jetzt im FC auf ein VAR_TEMP der auch vom Typ DATE_AND_TIME is schieben.

    pseudocode: "dat_temp := DB1[34-38]"

    nur wie schieb ich das rüber, andersrum mach ichs mit dem SFC20 aber so...

    hm, jetzt fällt mir was ein

    mal schaun obs geht wenn ich ein temp array mit 8 byte mach, einzeln rüberscheib und dann block_move...

    Aber wenn wer eine einfache lösung kennt, wärs super!!
    Zitieren Zitieren [SCL] DATE_AND_TIME aus DB holen  

  2. #2
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard

    hi,

    pseudocode:

    dat_temp := "dein_DB".deineDTVariable;

    Gilt wenn beide vom Typ gleich deklariert sind.

    Gruss Andy

  3. #3
    lazka ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.12.2006
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für die schnelle Antwort!
    Das einzige Problem ist, dass ich das in einer for-Schleife hab und die Variablen per index ansprechen muss (ein DB mit mehreren gleichen UTDs die alle abgearbeitet werden müssen). Also kommt das glaube ich nicht in frage...

    edit:
    dat_temp_array[1]:=DB_chips.DD[index+36];
    dat_temp_array[2]:=DB_chips.DD[index+36+4];
    error:=BLKMOV(SRCBLK := dat_temp_array, DSTBLK := dat_temp);

    das scheint zu gehen mal schaun...
    Geändert von lazka (22.12.2006 um 19:06 Uhr)

  4. #4
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard

    Achso,
    kenn jetzt deine Struktur nicht, brauchst nur index1 hochzählen.

    dat_temp := "dein_DB".deineDTVariable[index1];

    Oder du hast in der Struktur ein Array mit deinen UDT´s?


    dat_temp := "dein_DB".Bereich[UDT_index].deineDTVariable[index1];

    Evtl. musst halt deine DB Struktur noch mal überarbeiten.

  5. #5
    lazka ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.12.2006
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Zefix Beitrag anzeigen
    Achso,
    kenn jetzt deine Struktur nicht, brauchst nur index1 hochzählen.

    dat_temp := "dein_DB".deineDTVariable[index1];

    Oder du hast in der Struktur ein Array mit deinen UDT´s?


    dat_temp := "dein_DB".Bereich[UDT_index].deineDTVariable[index1];

    Evtl. musst halt deine DB Struktur noch mal überarbeiten.
    es ist ein DB mit 5 UDTs (100 Byte pro) und jeder UDT enhält unter anderem ein DATE_AND_TIME(bei Byte 36).
    Ich glaub du hast es eh verstanden... Aber könntest du mir vlt. mal ein Beispiel anschreiben? Bin ziemlicher Anfänger..

    DB2 >> "chip1", "chip2", "chip3", "chip4", "chip5" >> je ein "time_last"

  6. #6
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard

    Zitat Zitat von lazka Beitrag anzeigen
    Danke für die schnelle Antwort!
    Das einzige Problem ist, dass ich das in einer for-Schleife hab und die Variablen per index ansprechen muss (ein DB mit mehreren gleichen UTDs die alle abgearbeitet werden müssen). Also kommt das glaube ich nicht in frage...

    edit:
    dat_temp_array[1]:=DB_chips.DD[index+36];
    dat_temp_array[2]:=DB_chips.DD[index+36+4];
    error:=BLKMOV(SRCBLK := dat_temp_array, DSTBLK := dat_temp);

    das scheint zu gehen mal schaun...
    Ja, so gehts zur Not auch.
    manchmal gehts halt nicht anders.
    Aber wenn sich am DB was verschiebt, ist es mit einfach SCL neu übersetzen hier leider nicht getan.
    Hier ist der Symbolische Zugriff einfach besser.

    Also wenn es nicht zuviel Aufwand ist würd ich die DB Struktur ändern.
    So könnte der Zugriff dann aussehen.
    dat_temp := "dein_DB".deineUDT[index].deineDTVariable;

    Gruss Andy

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

    pirat (30.11.2012)

  8. #7
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard

    Zitat Zitat von lazka Beitrag anzeigen
    es ist ein DB mit 5 UDTs (100 Byte pro) und jeder UDT enhält unter anderem ein DATE_AND_TIME(bei Byte 36).
    Ich glaub du hast es eh verstanden... Aber könntest du mir vlt. mal ein Beispiel anschreiben? Bin ziemlicher Anfänger..

    DB2 >> "chip1", "chip2", "chip3", "chip4", "chip5" >> je ein "time_last"
    Ok,
    Wahrschneinlich hast deinen DB mit der Hand (Global_DB) erstellt.
    DB Öffnen und in die deklarationssicht wechseln.

    Mach ne neue Zeile:
    Unter namen zb.Chips, unter Typ Array[1..10] (1-die anzahl deiner chips),return drücken
    dann landest wieder im Feld Typ da gibts deine UDT chips an.
    Angehängte Grafiken Angehängte Grafiken

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

    pirat (30.11.2012)

  10. #8
    lazka ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.12.2006
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ach!! du meinst ein UDT-Array!!! so geht das also (hab die einfach hintereinander reingehaut, so wies mein Prof immer macht)
    dass ich da nicht drann gedacht hab.

    danke


    edit: hast meine fehler auch schon geraten wieder was gelernt, vielen dank nochmal!!!

  11. #9
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Naja, schön wenns doch geholfen hat.
    bin nich so der Erklärbär

    Gruss und schöne Weihnachten

Ähnliche Themen

  1. wincc 7.0 db variablen von sps holen
    Von emilio20 im Forum HMI
    Antworten: 10
    Letzter Beitrag: 25.09.2010, 17:47
  2. Datenbereich über ANY Zeiger aus DB holen
    Von Temotec im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 21.06.2009, 21:42
  3. daten vom Wago Controller holen?
    Von Tiger30 im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 31.03.2009, 12:09
  4. DB Parameter von CPU ins Programm holen
    Von ottopaul im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 27.10.2007, 15:01
  5. Bits aus Byte-Array holen
    Von MW im Forum Hochsprachen - OPC
    Antworten: 7
    Letzter Beitrag: 11.07.2007, 20:29

Lesezeichen

Berechtigungen

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