31
Ankündigungen / Announcements / Re: Downloadmanager: "down"
« am: 13. April 2015, 04:36:32 »
DANKE
Diese Sektion erlaubt es ihnen alle Beiträge dieses Mitglieds zu sehen. Beachten sie, dass sie nur solche Beiträge sehen können, zu denen sie auch Zugriffsrechte haben.
Hallo Psyche "IDB_STIME"();
#tx := "IDB_STIME".tx;
IF #Q OR "IDB_STIME".init_happened THEN #last := #tx; END_IF;
(* // START -------------------------------- DAS IST MEINER MEINUNG FALSCH (mg 5.8.2014) --------------------------------------------
(* read actual startup info *)
(* OB1_SCAN_1 BYTE - B#16#01: Abschluss des Neustarts (Warmstarts)
- B#16#02: Abschluss des Wiederanlaufs
- B#16#03: Abschluss des freien Zyklus
- B#16#04: Abschluss des Kaltstarts
- B#16#05: Erster OB 1-Zyklus der neuen Master-CPU nach
Master-Reserve-Umschaltung und STOP des
bisherigen Masters *)
#ERR := RD_SINFO (TOP_SI => #TOP_SI, START_UP_SI => #START_UP_SI);
(* read system time *)
#tx := DINT_TO_TIME(DWORD_TO_DINT("T_PLC_MS"()));
(* reset last_time on system startup *)
IF #TOP_SI.EV_NUM = 1 OR #TOP_SI.EV_NUM = 2 OR #TOP_SI.EV_NUM = 4 THEN
#init := false;
END_IF;
(* initialize on startup *)
IF NOT #init THEN
#init := TRUE;
#last := #tx - #PT;
END_IF;
*)
// ENDE -------------------------------- DAS IST MEINER MEINUNG FALSCH (mg 5.8.2014) --------------------------------------------
// und wird ersetzt durchf die folgenden 2 Zeilen *)
"IDB_STIME"();
#tx := "IDB_STIME".tx;
(* hier muss die korrektur für step7 stattfinden
plctime muss den vollen wertebereich von time ausnutzen:
wenn bei step7 time -24tage bis plus 24 tage ist dann muss der timer auch beim überlauf auf -24tage springen
und auf keinen fall auf 0 !!!!
für siemens muss ein weiterer fb im main eingebunden werden der sicherstellt das alle 32 bits durchgezählt werden.
es kann nur ein fb sein den er muss sich das oberste (32te) bit merken.
oder etwa spring s7 bei überlauf auf -24 tage????? dann wäre keine korrektur nötig.
*)
(* generate output pulse when next_pulse is reached *)
#Q := #tx - #last >= #PT;
IF #Q OR NOT "IDB_STIME".init THEN #last := #tx; END_IF;
(* revision hiostory
hm 25 feb 2007 rev 1.1
rewritten code for higher performance
pt can now be changed during runtime
hm 17. sep 2007 rev 1.2
replaced time() with t_plc_ms() for compatibility reasons
hm 25. oct. 2008 rev 1.3
optimized code
mg 5. aug. 2014 rev 1.4
problem with the internal-time variable after the overflow
mg 18. aug. 2014 rev 1.4a
INIT after download/restart
*)
(* // START -------------------------------- DAS IST MEINER MEINUNG FALSCH (mg 5.8.2014) --------------------------------------------
(* read actual startup info *)
(* OB1_SCAN_1 BYTE - B#16#01: Abschluss des Neustarts (Warmstarts)
- B#16#02: Abschluss des Wiederanlaufs
- B#16#03: Abschluss des freien Zyklus
- B#16#04: Abschluss des Kaltstarts
- B#16#05: Erster OB 1-Zyklus der neuen Master-CPU nach
Master-Reserve-Umschaltung und STOP des
bisherigen Masters *)
#ERR := RD_SINFO (TOP_SI => #TOP_SI, START_UP_SI => #START_UP_SI);
(* read system time *)
#tx := DINT_TO_TIME(DWORD_TO_DINT("T_PLC_MS"()));
(* reset last_time on system startup *)
IF #TOP_SI.EV_NUM = 1 OR #TOP_SI.EV_NUM = 2 OR #TOP_SI.EV_NUM = 4 THEN
#init := false;
END_IF;
(* initialize on startup *)
IF NOT #init THEN
#init := TRUE;
#last := #tx - #PT;
END_IF;
*)
// ENDE -------------------------------- DAS IST MEINER MEINUNG FALSCH (mg 5.8.2014) --------------------------------------------
// und wird ersetzt durchf die folgenden 2 Zeilen *)
"IDB_STIME"();
#tx := "IDB_STIME".tx;
(* hier muss die korrektur für step7 stattfinden
plctime muss den vollen wertebereich von time ausnutzen:
wenn bei step7 time -24tage bis plus 24 tage ist dann muss der timer auch beim überlauf auf -24tage springen
und auf keinen fall auf 0 !!!!
für siemens muss ein weiterer fb im main eingebunden werden der sicherstellt das alle 32 bits durchgezählt werden.
es kann nur ein fb sein den er muss sich das oberste (32te) bit merken.
oder etwa spring s7 bei überlauf auf -24 tage????? dann wäre keine korrektur nötig.
*)
(* generate output pulse when next_pulse is reached *)
#Q := #tx - #last >= #PT;
IF #Q THEN #last := #tx; END_IF;
(* revision hiostory
hm 25 feb 2007 rev 1.1
rewritten code for higher performance
pt can now be changed during runtime
hm 17. sep 2007 rev 1.2
replaced time() with t_plc_ms() for compatibility reasons
hm 25. oct. 2008 rev 1.3
optimized code
mg 5. aug. 2014 rev 1.4
problem with the internal-time variable after the overflow
*)