Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched.
Close
Ich möchte gern die Uhrzeit in meinem MFD angezeigt bekommen und verweise mit meinem Buttoneigenschaften %s auf die String Variable Echtzeit.
Nun Zeit mir der Button aber #DT 2008-09-27-19:58:23 an.
Ich hätte es aber gern 27-09-2008 19:58
Kann mir dabei jemand helfen. Wenn ich mit den Eigenschaften %t %d-%m-%Y dann nimmt er nur meine PC Zeit wenn ich Online verbunden mit dem Panel zeigt er es auf dem PC an aber im Panle zeigt er irgendwelche Hex Werte an. Vielleicht hat jemand ne Idee.
MFG Dennis
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
auf die Schnelle gebe ich dir nachfolgend den Code, mit dem du die Systemzeit liest, sie umwandelst in einen String, diesen in seine Bestandteile zerlegst und ihn dir wieder zusammenbaust. Im Ergebnis entsteht die Anzeige:
Montag, 29. Sept. 2008 21:57:05
Falls du Teile davon nicht benötigst, diese im Code einfach weglassen oder etwas bearbeiten. In dein Projekt musst du die Bibliothek SysLibRtc.lib einbeziehen.
Danke Denkes für deine Hilfe. Soweit hatte ich das ganze fast auch schon nur ist mir immer noch unverständlich wenn ich in der Visu ein Button habe wie ich dort die Uhrzeit in meinem Sinne reinbekomme.
Ich muss ja in den Eigenschaften von dem Button in dem Dialogfeld Text nur ein %s eingeben und unter dem Dialogfenster Variablen die Textausgabe mit der entsprechenden Echtzeit deklarieren. Nur zeit er dann auf dem Button immer #DT 2008-09-30-15:02:05 an. Und genau das wollte ich ja nicht. Darum ja meine Frage wie die im Dialogfenster deklariert werden muss damit er mir auf dem Button 30-09-2008 15:02:05 anzeigt.
MFG Dennis
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
soweit ich Dich richtig verstanden habe, möchtest Du auf dem Button die Systemzeit des Gerätes formatiert anzeigen.
Das geht sehr einfach und auch ohne eine Variable im Dialog "Textausgabe".
Wenn Du im Konfigurationsdialog in der Kategorie "Text" den Formatstring: %t %d-%m-%Y %H:%M:%S eingibst, erscheint die Systemzeit. Unter "Variable->Textausgabe" wird keine (!!) Variable mehr benötigt.
Gruß
Klaus
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Also ich habe es direkt auf meiner SPS ausprobiert und die zeit wird genau angezeigt. Habe Sie mit dem PLC überprüft. Du darfst keine Variable eintragen einfach nur %t damit weist du auf die Zeit hin und dann musst du sie dir zusammenbauen.
z.Bsp %t %d.%m.%Y - %H:%M:%S
Also wie gesagt funktioniert bei mir.
MFG Dennis
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Dieser Code den ich geschrieben habe den musst du in dem Dialogfeld Text eintragen und ansonsten für das Textfeld keine andere Variable eintragen da du sonst irgendwelchen kram angezeigt bekommst da die SPS nicht genau weiß was sie nun machen soll.
Wenn du eine Variable eintragen möchtest musst du sie dir wirklich zusammenbauen mit hilfe von dem Befehl Contact. Aber die andere Variante geht wesentlich einfacher.
MFG Dennis
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ja wenn du es nicht simulierst sondern dein Prog direkt auf der Anlage hast dann nimmt er die Systemzeit der Anlage. Da du jetzt ja simulierst nimmt er natürlich die Systemzeit deines Computers da du es ja darauf simulierst.
MFg Dennis
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Passt nicht so direkt hier rein, will aber kein neues Thema dafür aufmachen.
Ich will für jeden Tag im Jahr einen kleinen Button machen.
Jeder Monat hat ja eine unterschiedliche Anzahl Tage.
Gibt es eine Möglichkeit dies irgendwie von der Steuerung rauszukitzeln?
Ich habe eine Wago 750-841
Bisher bin ich bei dem Punkt das ich für jeden Monat eine Variable hinterlege welche der höchste Tag ist (bsp. Feb. 28) und dann immer mit GT (Greater Then) die nicht vorhandenen Tage abfange... gibt es eine elegantere Möglichkeit?
MfG
Marcel
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
dieser Teil deines Codes wird nicht verarbeitet, du hast ja auch nirgends die Variable Wochentag gebildet. Würde mich freuen wenn du den fehlenden Programmteil nachliefern könntest!
Oder habe ich etwas übersehen???
MfG
Marcel
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
(************************************************************************************************************)(* Wochentag aus Datum ermitteln *)(* Nach Formel "Zellers Kongruenz" (Gregorianischer Kalender) Wikipedia, *)(************************************************************************************************************)(* *)(* 0 = Sonntag *)(* 1 = Montag *)(* 2 = Dienstag *)(* 3 = Mittwoch *)(* 4 = Donnerstag *)(* 5 = Freitag *)(* 6 = Samstag *)(* *)IFMonat<3THEN(* der Januar und Februar wird als Monat des Vorjahres gezählt *)Monat:=Monat+12;(* dies vereinfacht die Schaltjahrproblematik *)Jahr:=Jahr-1;END_IFJahrHunderter:=Jahr/100;JahrEiner:=Jahr-100*JahrHunderter;Wochentag:=(70+Tag+((Monat+1)*26)/10+JahrEiner+JahrEiner/4+JahrHunderter/4-2*JahrHunderter-1)MOD7;(* die Minus 1 kurz vor MOD 7 verschiebt die Wochentage, aus Sonntage = 1 wird Sonntag = 0 *)(* die Plus 70 am Anfang der Formel verhindert negative Werte nach Abzug von 2 mal Jahrhunderter *)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo Liebe Forumgemeinde
Ich habe ein kleines Problem mit meiner Visu.
Ich möchte gern die Uhrzeit in meinem MFD angezeigt bekommen und verweise mit meinem Buttoneigenschaften %s auf die String Variable Echtzeit.
Nun Zeit mir der Button aber #DT 2008-09-27-19:58:23 an.
Ich hätte es aber gern 27-09-2008 19:58
Kann mir dabei jemand helfen. Wenn ich mit den Eigenschaften %t %d-%m-%Y dann nimmt er nur meine PC Zeit wenn ich Online verbunden mit dem Panel zeigt er es auf dem PC an aber im Panle zeigt er irgendwelche Hex Werte an. Vielleicht hat jemand ne Idee.
MFG Dennis
Hallo Dennish23,
auf die Schnelle gebe ich dir nachfolgend den Code, mit dem du die Systemzeit liest, sie umwandelst in einen String, diesen in seine Bestandteile zerlegst und ihn dir wieder zusammenbaust. Im Ergebnis entsteht die Anzeige:
Montag, 29. Sept. 2008 21:57:05
Falls du Teile davon nicht benötigst, diese im Code einfach weglassen oder etwas bearbeiten. In dein Projekt musst du die Bibliothek SysLibRtc.lib einbeziehen.
Viel Erfolg
Norbert
PS: Fahre morgen für 2 Wochen in Urlaub, falls es Fragen gibt.
Danke Denkes für deine Hilfe. Soweit hatte ich das ganze fast auch schon nur ist mir immer noch unverständlich wenn ich in der Visu ein Button habe wie ich dort die Uhrzeit in meinem Sinne reinbekomme.
Ich muss ja in den Eigenschaften von dem Button in dem Dialogfeld Text nur ein %s eingeben und unter dem Dialogfenster Variablen die Textausgabe mit der entsprechenden Echtzeit deklarieren. Nur zeit er dann auf dem Button immer #DT 2008-09-30-15:02:05 an. Und genau das wollte ich ja nicht. Darum ja meine Frage wie die im Dialogfenster deklariert werden muss damit er mir auf dem Button 30-09-2008 15:02:05 anzeigt.
MFG Dennis
Hallo Dennish23,
soweit ich Dich richtig verstanden habe, möchtest Du auf dem Button die Systemzeit des Gerätes formatiert anzeigen.
Das geht sehr einfach und auch ohne eine Variable im Dialog "Textausgabe".
Wenn Du im Konfigurationsdialog in der Kategorie "Text" den Formatstring: %t %d-%m-%Y %H:%M:%S eingibst, erscheint die Systemzeit. Unter "Variable->Textausgabe" wird keine (!!) Variable mehr benötigt.
Gruß
Klaus
Hallo Klaus,
bei deiner Variante bekommst du nicht die Systemzeit des Gerätes sondern
die Zeit des Systems auf dem die Visu angezeigt wird.
Wenn du nun eine Soft-SPS hast und auf diesem Gerät (z.B. PC) auch die Visu anzeigst,
dann passt es zufällig.
Wenn du aber eine separate SPS hast, dann bekommst du auf deinem Visualisierungs-PC
mit dem Formatstring nur die PC-Zeit angezeigt.
Ich denke der Ansatz von Norbert ist schon nicht schlecht.
Die Zeit in der SPS so in einen String formatieren wie man sie gerne hätte
und dann diesen String in der Visu anzeigen.
Also
Zeit auslesen.................................................. -> SysRtcGetTime
von DT in String wandeln................................. -> DT_TO_STRING
in Einzelkomponenten zerlegen........................ -> MID
....
und dann die Einzelkomponenten zusammenbauen -> CONCAT
....
Nun muss nur noch das Ergebnis in der Visu angezeigt werden.
Hallo Uwe,
ich habe das schon verstanden, aber das MFD ist eine SPS mit STN oder TFT Display auf dem die Targetvisu läuft.
Deshalb sollte das mit dem Formatstring eigentlich funktionieren, es sei denn, man hat zusätzlich eine Variable für die Textausgabe eingetragen.
Das führt dann nämlich zu den merkwürdigsten Ausgaben.
Gruß
Klaus
Vielen Dank Softwerker. Funktioniert super. Danke nochmal für deine Hilfe.
Habe den Code in der Simulation auch mal ausprobiert.
Das die Zeit nicht korrekt ist ist klar,...
Nur habe ich folgendes Problem: Die Werte werden vier bis fünfmal hintereinander geschrieben... also etwa so:
011970 00:00:00011970 00:00:00011970 00:00:00011970 00:00:00011970 00:00:00
Liegt es daran das ich die Simulation nutze? Habe leider grad keine 841 zum Testen da!
MfG
Marcel
Also ich habe es direkt auf meiner SPS ausprobiert und die zeit wird genau angezeigt. Habe Sie mit dem PLC überprüft. Du darfst keine Variable eintragen einfach nur %t damit weist du auf die Zeit hin und dann musst du sie dir zusammenbauen.
z.Bsp %t %d.%m.%Y - %H:%M:%S
Also wie gesagt funktioniert bei mir.
MFG Dennis
Ich bezog mich aber auf den Code von Denkes!
Den kann man nicht einfach so eintragen sondern die Variable in "Textvariable" oder sehe ich das falsch?
MfG
Marcel
Dieser Code den ich geschrieben habe den musst du in dem Dialogfeld Text eintragen und ansonsten für das Textfeld keine andere Variable eintragen da du sonst irgendwelchen kram angezeigt bekommst da die SPS nicht genau weiß was sie nun machen soll.
Wenn du eine Variable eintragen möchtest musst du sie dir wirklich zusammenbauen mit hilfe von dem Befehl Contact. Aber die andere Variante geht wesentlich einfacher.
MFG Dennis
Dann habe ich aber die Zeit von meinem PC, was ich vermeiden will.
Ich brauche die Zeit der Systemuhr, und das so das man sie auch anschauen kann... und kein DT# bla bla
MfG
Marcel
Ja wenn du es nicht simulierst sondern dein Prog direkt auf der Anlage hast dann nimmt er die Systemzeit der Anlage. Da du jetzt ja simulierst nimmt er natürlich die Systemzeit deines Computers da du es ja darauf simulierst.
MFg Dennis
... ich depp
Ich habe nichts gesagt... bitte vielmals um Entschuldigung
Danke für die schnelle Hilfe!
MfG
Marcel
Schon ok Marcel.
MFG Dennis
Passt nicht so direkt hier rein, will aber kein neues Thema dafür aufmachen.
Ich will für jeden Tag im Jahr einen kleinen Button machen.
Jeder Monat hat ja eine unterschiedliche Anzahl Tage.
Gibt es eine Möglichkeit dies irgendwie von der Steuerung rauszukitzeln?
Ich habe eine Wago 750-841
Bisher bin ich bei dem Punkt das ich für jeden Monat eine Variable hinterlege welche der höchste Tag ist (bsp. Feb. 28) und dann immer mit GT (Greater Then) die nicht vorhandenen Tage abfange... gibt es eine elegantere Möglichkeit?
MfG
Marcel
Hallo
Nach Adam Rise, ergibt das 365 Buttons in Schaltjahren etc noch mehr.
Wärst Du da nicht besser bedient, wenn Du das Ganze irgendwie in Form eines Kalenders Visualisieren würdest?
Monatsweise, wo Du das Datum in Form einer Rollbox oder Kombobox auswählen könntest.
Würde viel übersichtlicher.
Mit freundlichen Grüssen! Pitsch
so hab ich es auch gemacht... etwas umständlich habe ich es gelöst, aber bisher klappt es... muss nur noch die Logik dahinter programmieren...
MfG
Marcel
P.S: Bild kann folgen wenn ihr wollt...
Hallo,
dieser Teil deines Codes wird nicht verarbeitet, du hast ja auch nirgends die Variable Wochentag gebildet. Würde mich freuen wenn du den fehlenden Programmteil nachliefern könntest!
Oder habe ich etwas übersehen???
MfG
Marcel
Also meine Funktion Wochentag sieht so aus(Achtung: bei mir ist Sonntag =0):
Danke für den Code!
Ich habe noch einmal folgendes eingebracht:
Somit hat sich das Problem mit der 0 auch erledigt!
MfG
Marcel