Hallo an alle!
Mir passte der Umgang mit den Timern (als Taktgeber) im TIA nicht so recht und wahrscheinlich habe ich die, obwohl schon erfolgreich unter FUP eingesetzt, auch nicht wirklich verstanden. Gelesen zum Timer-Thema habe ich viel im I-Net und natürlich hier, aber wie gesagt, gefiel mir das alles nicht.
Darum habe ich mir im MAIN-Baustein einfach per SCL welche mit eingebastelt. Sie funktionieren sehr gut und unabhängig voneinander, sind einstellbar, geben bei Ablauf ein periodisches Signal in eine Variable und machen also, was ich will.
Aber!! Ist das, wie soll ich sagen, "richtig", bloß weil es praktisch funktioniert? Was sagt Ihr dazu als Fachleute?
Viele Grüße von Björn
Hier der Code in SCL dazu, wie gesagt, läuft der im MAIN einfach so mit (EDIT: KommentareGrün gefärbt):
Mir passte der Umgang mit den Timern (als Taktgeber) im TIA nicht so recht und wahrscheinlich habe ich die, obwohl schon erfolgreich unter FUP eingesetzt, auch nicht wirklich verstanden. Gelesen zum Timer-Thema habe ich viel im I-Net und natürlich hier, aber wie gesagt, gefiel mir das alles nicht.
Darum habe ich mir im MAIN-Baustein einfach per SCL welche mit eingebastelt. Sie funktionieren sehr gut und unabhängig voneinander, sind einstellbar, geben bei Ablauf ein periodisches Signal in eine Variable und machen also, was ich will.
Aber!! Ist das, wie soll ich sagen, "richtig", bloß weil es praktisch funktioniert? Was sagt Ihr dazu als Fachleute?
Viele Grüße von Björn
Hier der Code in SCL dazu, wie gesagt, läuft der im MAIN einfach so mit (EDIT: KommentareGrün gefärbt):
Code:
"Alle_Maschinen".Systemzeitwert1_2 := "Alle_Maschinen".Systemzeitwert2_2 := "Alle_Maschinen".Systemzeitwert3_2 := TIME_TCK() ; // Zeiten 1_2, 2_2, 3_2 usw. werden ständig synchronisiert
// Die "_1er Zeiten" (1_1, 2_1 usw.) bleiben "stehen" auf dem Synchr.-Wert aus (zu Anfang OB100) und danach wegen IF-Bedingung
IF "Alle_Maschinen".Systemzeitwert1_2 - "Alle_Maschinen".Systemzeitwert1_1 >= "Alle_Maschinen".Taktzeit_Maschinen THEN // Taktzeit_Masch.wird in OB100 vorgegeben und später ggf. verändert
"Alle_Maschinen".Systemzeitwert1_1 := TIME_TCK(); // jetzt, wenn Vorgabezeit abgelaufen ist, wird die "_1er Zeit" neu gesetzt
"Alle_Maschinen".Zeitablauf1 := TRUE; // Variable, die als Takt-Signal in anderen Bausteinen verwendet werden kann
END_IF;
IF "Alle_Maschinen".Systemzeitwert2_2 - "Alle_Maschinen".Systemzeitwert2_1 >= "Alle_Maschinen".Taktzeit_Lieferer THEN
"Alle_Maschinen".Systemzeitwert2_1 := TIME_TCK() ;
"Alle_Maschinen".Zeitablauf2 := TRUE;
END_IF;
IF "Alle_Maschinen".Systemzeitwert3_2 - "Alle_Maschinen".Systemzeitwert3_1 >= "Alle_Maschinen".Taktzeit_Lief_Foe THEN
"Alle_Maschinen".Systemzeitwert3_1 := TIME_TCK() ;
"Alle_Maschinen".Zeitablauf3 := TRUE;
END_IF;
(* für den nächsten Zähler
IF "Alle_Maschinen".Systemzeitwert4_2 - "Alle_Maschinen".Systemzeitwert4_1 >= "Alle_Maschinen".Taktzeit_XXXX THEN
"Alle_Maschinen".Systemzeitwert4_1 := TIME_TCK() ;
"Alle_Maschinen".Zeitablauf4 := TRUE;
END_IF;
*)