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

Ergebnis 1 bis 4 von 4

Thema: Daten von einem Werkstück in einen DB abspeichern

  1. #1
    Registriert seit
    13.11.2006
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Mädls und Jungs, ich bräuchte dringend eure Hilfe. Ist es möglich Daten von einem Werkstück in einem DB zu speichern und diese Daten dann immer weiter nach hinten im DB zu verschieben um so die letzten 100 Werkstücke zu speichern. Ich nähme an ein FIFO wäre da das richtige. Nur kann ich das FIFO so machen das die Daten die ich speichere definierbar sind. zur Zeit habe ich für das Werkstück 10 Daten, wir wollen aber später mal 12 oder 15 Daten pro Werkstück speichern. Hat jemand zufällig eine Vorlage für mich oder vielleicht sogar ein fertiges Programm wo ich mir sowas anschauen kann. Danke für eure Hilfe Gruß Nick
    Zitieren Zitieren Daten von einem Werkstück in einen DB abspeichern  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Ja, ist möglich.
    FIFO ist gar nicht schlecht, ich würde aber möglichst einen Ringpuffer mit Schreibzeiger verwenden, da entfällt das Umspeichern
    Die Struktur im ARRAY OF STRUCT gleich für die spätere Anzahl Datenpunkte + Reserve auslegen, dann bleiben die Speicherinhalte bei späteren Programmänderungen erhalten.
    Benutze mal die Forumsuche nach FIFO, da gibt es auch eine FAQ mit Link zu Volkers Homepage

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    Registriert seit
    03.12.2009
    Beiträge
    64
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo,

    hier ein Beispiel für einen Ringpuffer mit 10 Einträgen der einen Wert zusammen mit Zeitstempel speichert:

    --------------------------------------------------------------------------------------
    in: error_code type word
    temp: SFC_21_Ret_Val type INT
    now type Date_And_Time


    AUF "DB_fault_history" //open fault DB
    L "DB_fault_history".actual_pointer
    L 8 // convert to byte
    *D
    L 10
    *D // 10 Bytes between entries
    L P#DBX 0.0
    +D
    LAR1

    L #error_code // store error code
    T DBW [AR1,P#0.0]


    CALL "READ_CLK"
    RET_VAL:=#SFC_21_Ret_Val // read date and time
    CDT :=#now

    L LD 2 // store date and time
    T DBD [AR1,P#2.0]
    L LD 6
    T DBD [AR1,P#6.0]


    L "DB_fault_history".actual_pointer
    + 1
    L 9
    >I
    TAK
    SPBN next
    L 0
    next: T "DB_fault_history".actual_pointer
    BEA


    Die Konfiguration des DB's


    fault_1 WORD W#16#0
    date_and_time_1 DATE_AND_TIME DT#90-1-1-0:0:0.000
    fault_2 WORD W#16#0
    date_and_time_2 DATE_AND_TIME DT#90-1-1-0:0:0.000
    fault_3 WORD W#16#0
    date_and_time_3 DATE_AND_TIME DT#90-1-1-0:0:0.000
    fault_4 WORD W#16#0
    date_and_time_4 DATE_AND_TIME DT#90-1-1-0:0:0.000
    fault_5 WORD W#16#0
    date_and_time_5 DATE_AND_TIME DT#90-1-1-0:0:0.000
    fault_6 WORD W#16#0
    date_and_time_6 DATE_AND_TIME DT#90-1-1-0:0:0.000
    fault_7 WORD W#16#0
    date_and_time_7 DATE_AND_TIME DT#90-1-1-0:0:0.000
    fault_8 WORD W#16#0
    date_and_time_8 DATE_AND_TIME DT#90-1-1-0:0:0.000
    fault_9 WORD W#16#0
    date_and_time_9 DATE_AND_TIME DT#90-1-1-0:0:0.000
    fault_10 WORD W#16#0
    date_and_time_10 DATE_AND_TIME DT#90-1-1-0:0:0.000
    actual_pointer INT 0 points to actual entry in ring buffer

    --------------------------------------------------------------------------------------------------
    Anstelle von Datum/Uhrzeit kannst Du natürlich auch andere Daten in den Puffer schreiben und das ganze aufbohren.


    Hoffe das gibt eine Anregung

    Gruss

    Oliver

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von extruder_luder Beitrag anzeigen


    CALL "READ_CLK"
    RET_VAL:=#SFC_21_Ret_Val // read date and time
    CDT :=#now
    Du (Sch)luder, aber eine einfache Möglichkeit.
    Für Werkstückdaten würde ich trotzdem eher nach FIFO schauen.
    In der Bibliothek fblib1 gibts bei mir nen FC92 Buffer Storage (FIFO), den würde ich mir mal anschauen.
    Für die Erweiterung der Daten von 10 auf 15 würde ich schon vorab entsprechend Reserve lassen, alternativ gibts nen parallelen Buffer.
    Siemens bietet auch eine Menge Beispiele, zB hier

    gruß MK
    and we all support the team (S.King - Die Arena)

Ähnliche Themen

  1. Welches Format zum abspeichern von Daten?
    Von LambdaFourth im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 06.11.2012, 12:55
  2. Antworten: 6
    Letzter Beitrag: 05.02.2009, 09:44
  3. Von einem Datum einen Tag abziehen
    Von Tompson im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 14.01.2009, 18:16
  4. Mit Adressregister von Daten von DBx in einen DBy kopieren
    Von iga-graz im Forum Programmierstrategien
    Antworten: 11
    Letzter Beitrag: 15.10.2007, 21:17
  5. Antworten: 2
    Letzter Beitrag: 16.11.2006, 17:45

Lesezeichen

Berechtigungen

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