Das Vergleichen von Werten funktioniert einfach nicht?!

Zuviel Werbung?
-> Hier kostenlos registrieren
Tja ... wenn man mal davon absieht, dass ich nicht auf die Idee käme so etwas so zu programmieren, sieht es erstmal nicht verkehrt aus.
Wenn ich mich nun auf die Generierung der Uhrzeit, wie von dir beschrieben, stütze dann kann es aus dem von HaDi genannten Grund nur dann zu einer passenden Übereinstimmung kommen wenn du in der Minuten und/oder Stunden-Stelle unter dem Wert von 10 bleibst. Bei größer 10 kommt der von HaDi beschriebene Effekt zum tragen, wo eben aus 13:15 Uhrt nicht Hex1315 sondern Hex0D0F wird. Das klappt dann mit dem Vergleichen natürlich nicht. Hier wäre dann Anpassungs-Arbeit gefragt und wahrscheinlich ist daaaas auch schon der Grund warum es nicht wie gewünscht funktioniert. Mit FB vs. FC hat das jedenfalls nichts zu tun ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Tja ... wenn man mal davon absieht, dass ich nicht auf die Idee käme so etwas so zu programmieren, sieht es erstmal nicht verkehrt aus.
Wenn ich mich nun auf die Generierung der Uhrzeit, wie von dir beschrieben, stütze dann kann es aus dem von HaDi genannten Grund nur dann zu einer passenden Übereinstimmung kommen wenn du in der Minuten und/oder Stunden-Stelle unter dem Wert von 10 bleibst. Bei größer 10 kommt der von HaDi beschriebene Effekt zum tragen, wo eben aus 13:15 Uhrt nicht Hex1315 sondern Hex0D0F wird. Das klappt dann mit dem Vergleichen natürlich nicht. Hier wäre dann Anpassungs-Arbeit gefragt und wahrscheinlich ist daaaas auch schon der Grund warum es nicht wie gewünscht funktioniert. Mit FB vs. FC hat das jedenfalls nichts zu tun ...

Gruß
Larry


diese "Art" der Uhrzeitdarstellung hat sich so ergeben, da beim Auslesen der Systemzeit es so realisiert wurde das über Arbeitsregister der Wert ToD (glaube ich) aufgesplittet wurde und dann steht das Jahr in einem Byte der Monat in einem Byte die Stunde usw..
Idealerweise hätte es eine S5T oder Time sein können :sad:

Zum Format:
Ja, es ist kaum zu glauben. ABER in der Onlineansicht steht im DB200.DBW28 dann tatsächlich für 18:38Uhr der Wert w#16#1838 drin. das ist doch kein Hexcode oder? Ich werd es mal mit der Variablentabelle ausprobieren, das habe ich noch nicht versucht.
Was aber sehr verdächtig ist, beim Umschalten der Darstellung (in der Onlineansicht) auf Dezimal ändert sich der Hexcode in Dez UND der Wert aus der #Uhrzeit Variable in Hex?! Das hab ich so auch noch nicht gesehen.

Evtl bringt es was wenn ich den Code hochlade wie die Uhrzeit ausgelesen wird, vielleicht klemmt es schon an dieser Stelle?

mfg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
sorry, Fehlinformation!
es steht nicht W#16#1240 sondern B#16#1240 in Onlinestatus, handelt es sich trotzdem um BCD?

Tatsächlich werden die Werte in der VAT (DB200.DBW28) mit Anzeigeformat HEX so angezeigt: W#16#936 für 9:36Uhr angezeigt, was in DEZ was ganz anderes ist.....
Wie kann ich die Werte so formatieren das Sie für mich verwertbar sind?
z.Z. wird die Stunde im DB200.DBB28 abelegt hex B#16#11 für 11Uhr
die Minute im DB200.DBB29 hex B#16#34 für 34min

wie lässt sich aus diesen beiden Bytes ein sinnvolles Zeitformat erstellen damit 11:34 in einem WORD steht?

Hier mal die AWL-Quelle wie es realisiert wurde, die Uhrzeit auszulesen:


FUNCTION "Sys_Time" : VOID
TITLE =Datum und Uhrzeit
AUTHOR :
VERSION : 0.1

VAR_TEMP
Date_Time : DATE_AND_TIME ;
END_VAR
BEGIN
NETWORK
TITLE =
//Systemzeit und Datum im Format "date_and_Time" auslesen
CALL "SFC_READ_CLK" (
RET_VAL := "SYS_M 254",
CDT := #Date_Time);
NOP 0;

NETWORK
TITLE =
//Datum und Uhrzeit splitten und in Bytes ablegen
LAR1 P##Date_Time; // Adresse ins Arbeitsregister laden
L B [AR1,P#0.0]; // Jahr lesen und im
T "DB_Datum und Uhrzeit".Jahr; // Byte 25 ablegen
L B [AR1,P#1.0]; // Mont lesen und im
T "DB_Datum und Uhrzeit".Monat; // Byte 26 ablegen
L B [AR1,P#2.0]; // Tag lesen und im
T "DB_Datum und Uhrzeit".Tag; // Byte 27 ablegen
L B [AR1,P#3.0]; // Stunde lesen und im
T "DB_Datum und Uhrzeit".Stunde; // Byte 28 ablegen
L B [AR1,P#4.0]; // Minute lesen und im
T "DB_Datum und Uhrzeit".Minute; // Byte 29 ablegen
L B [AR1,P#5.0]; // Sekunde lesen und im
T "DB_Datum und Uhrzeit".Sekunde; // Byte 30 ablegen
L W#16#FFF0; // Überlagerung
L W [AR1,P#6.0]; // Jahr lesen und im
T "DB_Datum und Uhrzeit".Millisekunde; // Word 32 ablegen
L B#16#F; // Überlagerung
L B [AR1,P#7.0]; // Jahr lesen und im
UW ;
T "DB_Datum und Uhrzeit".Wochentag; // Byte 34 ablegen
CLR ;
END_FUNCTION

Danke schonmal im Voraus.

mfg
 
So, nun alles auf Anfang ;-)

Ich habe mit dem SFC1 die Systemzeit jetzt im TOD Format ausgelesen, die BCD Darstellungsvariante wie sie bislang realisiert wurde lasse ich unberücksichtigt.
Jetzt klappt auch der Vergleich, da ich TOD mit TOD vergleichen kann. Der Versuch war auch erfolgreich! :)

Dennnoch vielen Dank für Eure Unterstützung!

Jetzt muss ich nur noch sehen wie ich aus der WinCCflex einen Wert im TOD Format bekomme...

mfg
 
Vergleicher

Hallo

Probier mal folgendes aus

O(
L #Ein_Wert
L #Aktuellzeit
==D
)
O(
L #Ein_Wert
L #Aktuellzeit
==I
)
= #Ein

O(
L #Ein_Wert
L #Aktuellzeit
==D
)
O(
L #Ein_Wert
L #Aktuellzeit
==I
)
= #Aus

Was hast du für eine CPU? hast du den Instanz DB neu generiert und übertragen?
Wenn Du nur ein word mit ==D oder ==I vergleichts ist das normal format egal,oder nicht....

Probier einfach einmal einen freien Merker für Ein/Aus dann weist Du ob das bit vom Instanz DB nicht zweimal verwendet wird.

mach einfach einmal einen Anhang mit deinem FB vieleicht kann ich Dir helfen.

mfg
 

Anhänge

  • Test_fb_.zip
    576,3 KB · Aufrufe: 1
Zuviel Werbung?
-> Hier kostenlos registrieren
Was hast du für eine CPU? hast du den Instanz DB neu generiert und übertragen?
mach einfach einmal einen Anhang mit deinem FB vieleicht kann ich Dir helfen.

Hallo,

ich habe eine 3152DP (alte Bauform), ja den IDB habe ich immer neu generieren lassen und danach übertragen. Es lag ein Formatproblem vor, ich lese nun die Systemzeit separat aus und verwende jetzt das Format ToD, es funktioniert nun.
Zur Zeit bin ich gerade dabei den FB "umzubauen" damit es mit dem neuen Format klappt.
Wenn es dann immernoch "klemmt" komm ich gern auf dein Angebot zurück.
Vielen Dank.

mfg
 
Zurück
Oben