Step 7 Zeitstempel in Textdatei auf HMI-Speicherkarte?

Hangasilly

Level-1
Beiträge
61
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Erstmal sry wenn ich falsch bin hier, dann pls unter HMI schieben ;)

Also nun das gesamte Script zu posten wäre Wahnsinn, allerdings geht es schlussendlich um meinen Q22.0 und dessen Schaltungen.

Ich hab nen DB2 der mim HMI kommuniziert und nun bräuchte ich im HMI ne Liste, wann der Q22.0 ein- und abgeschaltet wird.

schätze mal am einfachsten lässt sich sowas realisieren, wenn ich mir 2 Flankenmerker bastel (ein pos. und ein neg.) und die dann einen Transfer des Zeit/Datum - Stempels in eine Variable machen lassen?!?
Zeit und Datum krieg ich ja aussem SFC1 und dann in eine Date_And_Time - Variable.

Schön und gut, nun hab ich das dann in der Variablen, aber wie gehts weiter....?
Es soll also nun in ne Datei gespeichert werden - eine Liste, die sich immer und immer mehr Zeilen anlegt - bei jedem Schaltet eine neue, in der dann steht:

Datum // Einschaltzeitpunkt // Abschaltzeitpunkt

Wobei in dem Fall dann vllt 3 Variablen -- Datum // Einschaltzeit // Abschaltzeit -- besser wären???

- jetz schaltet das Dingen allerdings zig mal am Tag und die Liste wird übelst lang, daher wäre es gut, wenn der letze Eintrag oben steht und sie scrollbar ist / wird, wenn sie eine gewisse Zeilenzahl überschreitet... -

Und dann soll diese Liste im HMI angezeigt werden können auf nem extra Bild [...] und hierher müsste noch ein Buttpn >>Liste leeren<<, welcher, wie der Name schon sagt, die Liste leert ...


Wie gesagt, die Variablen krieg ich denk ich so wie oben beschrieben hin, aber dann haperts bei mir leider :(
Bin für jede Hilfe dankbar^^
 
Am einfachsten geht das vermutlich mit einem Archiv in der HMI (welche?), wenn Du mit dem Archiv-Dateiformat leben kannst.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann ich bestimmt, aaaaber - wie macht man son Archiv und was sind Vor- und/oder Nachteile??

Habe folgendes HMI: MP277 10" Touche

edit://
Also nun steh ich wie 'Ochs vorm Berge' und bin ganz verpeilt, was ich machen soll...
habe nun ne ganze Menge über *.cvs - Dateien und Archivordner und Archivkopien, ExcelArbeitsmappen, AccessDatenbänke, VB-Scripte etc. gelesen... und hab nun noch viel mehr Information als voher im Kopf - kann aber mit allem keinen wirklichen Zusammenhang aufbauen *seufz*

.... HILFE!!! ...:confused::confused::confused:
 
Zuletzt bearbeitet:
Sooo - derzeitiger Stand ist:

Ich hab mir nun ein Array im DB2 hinterlegt, genannt >>SchaltungsZeitenArray -- Array [0..49] -- TIME_OF_DAY<<
Wenn ich mich nicht täusche, kann ich da nun 50 x eintragen, wann geschaltet wurde (An und Aus)...

Nun hab ich mir im Baustein wie folgt schonmal eine Auslesevariable gebaut sowie einen Merker, der den Transfer aktiviert:

Code:
...
NW12: Ventilschaltung: Zeiten in #DatumUndZeit (Temporäre Variable)

O(
A "M_pos_Flanke_Ventil"                     -- M14.3
FP "M_FW_Y_AUF"                             -- M254.1
)
O(
A "M_neg_Flanke_Ventil"                     -- M14.4
FN "M_FW_Y_AUF"                             -- M254.1
)

Call "READ_CLK"                                 -- SFC1
    RET_VAL:=#FehlerSFC1                  -- Fehlervariable (INT) (temp)
    OUT0     :=#DatumUndZeit              -- Datum/ZeitVariable (TOD) (temp)



NW13: Ventil AUF oder ZU Datum und Zeit Transfermerker

O(
A "M_pos_Flanke_Ventil"                     -- M14.3
FP "M_FW_Y_AUF"                             -- M254.1
)
O(
A "M_neg_Flanke_Ventil"                     -- M14.4
FN "M_FW_Y_AUF"                             -- M254.1
)
= "M_VentilSchaltzeitTrans"                 -- M14.5



NW14: Transfer

[I]Und hier gehts dann mit meinem Wissen zuende...[/I]


Nun brauchts in NW14 ne Bearbeitung, die da sagt:
Mach nen Pointer und schmeiß ihn in die letzte unbeschirftete Zeile im Array in DB2 (erstmal Zeile 49 dann)
Wenn M14.5 (Transfermerker) aktiviert wird, dann such dir den Platz von dem Pointer raus, der da in dem Array im DB2 rumschwirt, schreibe die Variable >> #DatumUndZeit << in die entsprechende Arrayzeile und dann setze anschließend den Pointer in die letze unbeschriftete Zeile im Array (eine Zeile hoch... also -1 quasi)!
Wenn der Pointer in der letzten Zeile - Zeile 0 - angekommen ist, schieb das ganze im Array eine Zeile weiter, sodass Zeile 0 wieder leer ist - die letzte Zeile geht in dem Fall verloren - und dann is fein.

Anschließend muss ich das ganze Array dann im WinCC flex noch irgendwie auslesen, was mir jetzt schon leichte Kopfschmerzen bereitet, aber dazu dann, wenn es sowet ist...



Oder ist mein genereller Ansatz eher Unsinn und jemand hat ne bessere Idee???
 
Zuletzt bearbeitet:
Zurück
Oben