Sein Basic-Panel wird keine Scripte können :???:
Vorhanden sind ein TP_700 Basic Color, TIA 13.1, S7 312 und Step7 V5.5.
Oh sh*?x#§!, habe das Wort "Basic" übersehen, habe nur TP700 gelesen.
Was für ein Basic Panel ist es - KTP700 ? - es gibt meines Wissens gar kein "TP700 Basic"...
Andererseits drückt sich Superb vor jeder konkreten Beantwortung konkreter Nachfragen...
Tu' ich jetzt mal so, als ob er die Uhr der S7-312 synchronisieren will.
Hmm, bei Basic Panels bekommt man die Panel-Systemzeit nur per Steuerungsauftrag (40) in eine Variable geschrieben.
Dafür gibt es bei Siemens Beispielprojekte mit Programmcode für die S7-300 (die HMI-Panel-Projektierung braucht man nicht außer dem Einrichten der Bereichszeiger):
- TimeSyn_Project_04 der "FB110_TimeSyn_HMI_to_PLC"
Das ist ein TIA-Projekt, ich weiß nicht ob man da problemlos den AWL(SCL?)-Quellcode in Step7 V5.5 kopieren/exportieren kann und wie gut der Baustein programmiert ist.
(In den Siemens-Beispielen sind viele Fehler drin. U.A. merkt bei Siemens anscheinend niemand (noch nichtmal bei "kompletter Überarbeitung"), daß seit Jahren die Beschreibung des Bereichszeigers "Datum/Uhrzeit" Kapitel 3.2.2 falsch ist.)
- Time_WinCE_flexible_A2 der FB102 "** SYS_CLK_WinCE_V1" ist für Step7 V5.x
In der 2007er-Version war der Baustein ziemlich unsauber programmiert und hatte glaub ich auch kleine Bugs. In der jetzigen Version von 2008 sieht der Baustein immer noch sehr unsauber aus, Bugs weiß ich jetzt nicht.
Ich hatte mir 2007 für so ein Uhrzeit-stellen HMI-->PLC
einen eigenen kurzen Programmcode programmiert.
Den könntest Du nehmen und zusätzlich im ersten OB1-Zyklus und dann z.B. jede Stunde den Wert 40 ins erste Word des Bereichszeigers "Steuerungsauftrag" schreiben - fertig ist die simple Uhrzeit-Synchronisation, die nicht schlechter funktioniert als die Siemens-Beispiele (vorausgesetzt, Du nutzt nicht noch weitere Steuerungsaufträge).
Ich habe meine simple Uhrzeit-Sync mal um den Steuerungsauftrag 40 erweitert und hier angehängt. So funktioniert es dann auch mit Basic Panels.
Bereichszeiger in WinCC flexible/TIA WinCC Basic/Comfort/Adv einrichten:
Code:
Datum/Uhrzeit | DB 101 DBW 0 | 6 Worte
Steuerungsauftrag | DB 102 DBW 12 | 4 Worte | Zyklisch fortlaufend | 1s
In der SPS:
Code:
//Network*** Get a Date_and_Time from HMI and set PLC-clock
U "CYCLE1" //M0.2 first cycle of OB1
SPB ISCL //initialize receive-date/time!
L DW#16#90010100 //DT#90-1-1-0(:0:0.000)
L DB101.DBD 0 //"OP->PLC".AreaPointerDT.DateTimeSET Byte 0-3
==D
SPB ESCL //no date received
L 0
==D
SPB ISCL //date not valid!
L DB101.DBD 4 //"OP->PLC".AreaPointerDT.DateTimeSET Byte 4-7
==D
SPB ISCL //time not valid!
L B#16#2 // :0:0.000 + Monday
==D
SPB ESCL //no time received
//a date and time is received from HMI, use it for something
//("OP->PLC".AreaPointerDT.DateTimeSET is available/valid for 1 cycle)
//e.g. set the PLC-clock
CALL "SET_CLK" //SFC0
PDT :="OP->PLC".AreaPointerDT.DateTimeSET
RET_VAL:=#tmpINT //TEMP: INT
//initialize receive-date/time with DT#90-1-1-0:0:0.000
ISCL: L DW#16#90010100 //DT#90-1-1-0(:0:0.000)
T DB101.DBD 0 //"OP->PLC".AreaPointerDT.DateTimeSET Byte 0-3
L B#16#2 // :0:0.000 + Monday
T DB101.DBD 4 //"OP->PLC".AreaPointerDT.DateTimeSET Byte 4-7
ESCL: SET
//Network*** request the system time of the HMI by controller job 40
//generate the sync interval
UN M 1.0
L S5T#1H //every 1 hour
SE T 1
U T 1
= M 1.0
//start the controller job 40 - request system date/time from HMI
//(the HMI write 0 in JobMailbox.Job_No when it recognizes the job)
O M 1.0
O "CYCLE1"
SPBN EJ40
L 0
T "PLC->OP".AreaPointerJobMailbox.Parameter_1
T "PLC->OP".AreaPointerJobMailbox.Parameter_2
T "PLC->OP".AreaPointerJobMailbox.Parameter_3
L 40 //Job_No controller job 40
T "PLC->OP".AreaPointerJobMailbox.Job_No
EJ40: SET
Im Anhang der OB1, DB101 und DB102 als Step7-V5.x-Projekt.
Achtung: Es dürfen nicht mehrere HMI die Bereichszeiger "Steuerungsauftrag" und "Datum/Uhrzeit" auf den selben PLC-Adressen haben (also 2 Panele mit identischer Projektierung darf nicht). Sonst wird es lustig.
Harald