Ich reiß nun mal nen Thema von 2012 ausser Vesenkung, aber gut... habe bis dato keine vernünftige Lösung gefunden, also frag ich nun:
Ich hab nen Timer, dessen Wert ich im Flexible angeben kann - sagen wir als Beispiel 15 im E/A-Feld für 15 Minuten... das ganze wird dann in der SPS in Millisekunden gewandelt, danach zu ner S5Time und auf ne ausschaltverzögerung gelegt...
Alles auch wunderbar und klappt...
Nun hab ich ja die Möglichkeit, in ner VAT-Tabelle mir anzusehen, wie die Zeit runtergezählt wird... das ganze wird dann in Min:Sec angezeigt, da ich aktualisierung jede Sekunde habe...
Diesen 'Countdown' würde ich gerne ins Flexible bringen und anzeigen lassen, wenn der Timer aktiv ist... das mit dem Aus- und Einblenden is auch nciht das Ding, das mach ich über nen Merker und Ausblenden wenn Merker = 0...
Aaaaaaber...
ich kriege ums verrecken die dusselige Zeit nicht so ins Flexible, wie ich sie gerne dort hätte...
hier mal kurz mein bisheriges Script:
Code:
FUNCTION "Timer" : VOID
TITLE =
VERSION : 0.1
VAR_TEMP
AbschaltzeitSec : INT ;
AbschaltzeitS5 : S5TIME ;
Fehler : BOOL ;
END_VAR
BEGIN
NETWORK
TITLE =Teimerzeit aus HMI
L "SPS<->HMI".Timerzeit;
L L#60;
*D ;
T #AbschaltzeitSec;
NETWORK
TITLE =Zeit in S5T
CALL "INT_TO_S5T" (
Input_Time_in_sec := #AbschaltzeitSec,
Out_S5_Time := #AbschaltzeitS5,
Out_Fault := #Fehler);
NETWORK
TITLE =Timer
A "SPS<->HMI".TimerAN;
L #AbschaltzeitS5;
SF "TimerAnzeige";
AN "M_Timer_An";
R "TimerAnzeige";
NETWORK
TITLE =TimerAn_Merker
A "TimerAnzeige";
= "M_Timer_An";
END_FUNCTION
Das TimerAn-Signal vom HMi is ein SetzeBit beim drücken -- loslassen setzt es bit zurück...
Die HMI.Timerzeit wird wie gesagt als Int in MIN angegeben - daher x60 um auf sekunden zu kommen für die S5T...
Und das is mein TimerUmwandelCode:
Code:
FUNCTION FC 5 : VOID
TITLE =
VERSION : 0.1
BEGIN
NETWORK
TITLE =TimerRestzeit in MW
LC "TimerAnzeige";
T "TimerMW";
NETWORK
TITLE =Umwandlung WORD (T50_BDC) zu S5Time (BDC_S5Time)
L "TimerMW";
T "TimerMW_BDC";
NETWORK
TITLE =Umwandlung S5Time zu TIME
CALL "S5TI_TIME" (
IN := "TimerMW_BDC",
RET_VAL := "RestzeitTIME");
BE ;
NETWORK
TITLE =Time zu INT
L "RestzeitTIME";
T "RestzeitDINT";
NETWORK
TITLE =Ms zu Min
L "RestzeitDINT";
L L#60000;
/D ;
T "SPS<->HMI".TimerRestzeit;
END_FUNCTION
Blöderweise setzt mir bei dem Script nun immer die SPS aus, weil iwas nciht verarbeitbart ist

BTW: Wieviele Merker hat die
S7-300 6ES7-314-1AG14-0AB0 ... mein letztes MW ist MW272 - mag das daran liegen?!?... wobei das Programm auch schon nen Merker M444.4 hatte, bevor ich da meinen Timer zugescriptet habe?!?!?!