Es geht hier um diese Anweisungen (die DATE_AND_TIME-Variable beginnt bei LB2):
Code:
//Network 3: Split MSEC and Day of week
// Write ZERO to the reserved Byte
L 0
[COLOR="Red"]L LB 8[/COLOR] // MSEC
// Split MSEC and day of week
L LB 9 // MSEC + Day of week
L 7
UW
T LB 9 // Day of week
Die zweite Zeile "
L LB 8" muß natürlich "
T LB 8" heißen.
Der Fehler fällt aber nicht auf, weil die OP die Millisekunden offensichtlich nicht beachten.
Kostenlose Siemens-Beispiel-Programme müssen nicht fehlerlos, geschweige denn perfekt sein.

Die sind eigentlich nur als Anschauungsobjekte gedacht.
Weil der Siemens-Beispiel-FB101 "** SYS_CLK_WinCE_V2" noch weitere Unzulänglichkeiten besitzt,
habe ich mir den vor Jahren mal umgeschrieben und kommentiert, siehe AWL-Quelle im Anhang.
Mein FB101 wird nun so aufgerufen:
Code:
CALL "SYS_CLK_WinCE" , "DB SYS_CLK_WinCE" // FB101, DB101
Zyklus1 :="ZYKLUS1" // M0.2 - im 1. OB1-Zyklus true
T_Watchdog:="T_OP_SetTime" // T31
IO_SetTime:="OP->SPS".OP_SetTime // DB32.DBX30.0 - Flag von OP
IO_Job_No :="DB Job mailbox".AreaPointer.Job_No // DB31.DBW0
IO_Param_1:="DB Job mailbox".AreaPointer.Para_1 // DB31.DBW2
IO_Param_2:="DB Job mailbox".AreaPointer.Para_2 // DB31.DBW4
IO_Param_3:="DB Job mailbox".AreaPointer.Para_3 // DB31.DBW6
NOP 0
Der Baustein eignet sich aber nur, wenn nur 1 OP an der Steuerung angeschlossen ist bzw.
nur 1 OP auf den Steuerungsauftrag 40 reagiert (einen Bereichszeiger "Steuerungsauftrag"
auf Adresse DB31.DBW0 hat).
Wegen dieser Problematik mache ich die Uhrzeitsynchronisation nicht mehr über Steuerungs-
aufträge, sondern schreibe mit den OP direkt in eine DATE_AND_TIME-Variable in der CPU.
Gruß
Harald