Könntest du vielleicht auch einfach den besagten FB (z.B. als AWL-Quelle) hier mal einstellen ...?
Wird der FB in einem anderem FB aufgerufen ?
der FB Aufruf wird in einem FC realisiert
Hier die AWL-Quelle (die ersten drei NW musste ich wegen Beitragslänge löschen, aber da gab es keine Probleme):
FUNCTION_BLOCK "FB_Schaltuhr"
TITLE =Dreikanal Wochen Zeitschaltuhr
AUTHOR :
VERSION : 0.1
VAR_INPUT
Uhrzeit : WORD ;
Wochentag : BYTE ;
Mo_bis_Fr : BOOL ;
Sa_bis_So : BOOL ;
Mo_bis_So : BOOL ;
Einschalten_1 : WORD ;
Ausschalten_1 : WORD ;
Einschalten_2 : WORD ;
Ausschalten_2 : WORD ;
Einschalten_3 : WORD ;
Ausschalten_3 : WORD ;
END_VAR
VAR_OUTPUT
Schaltuhr_aktiviert : BOOL ;
END_VAR
VAR
Funktion_MoFr_T1_Ein : BOOL ;
Funktion_MoFr_T1_Aus : BOOL ;
Funktion_MoFr_T2_Ein : BOOL ;
Funktion_MoFr_T2_Aus : BOOL ;
Funktion_MoFr_T3_Ein : BOOL ;
Funktion_MoFr_T3_Aus : BOOL ;
Funktion_SaSo_T1_Ein : BOOL ;
Funktion_SaSo_T1_Aus : BOOL ;
Funktion_SaSo_T2_Ein : BOOL ;
Funktion_SaSo_T2_Aus : BOOL ;
Funktion_SaSo_T3_Ein : BOOL ;
Funktion_SaSo_T3_Aus : BOOL ;
Funktion_MoSo_T1_Ein : BOOL ;
Funktion_MoSo_T1_Aus : BOOL ;
Funktion_MoSo_T2_Ein : BOOL ;
Funktion_MoSo_T2_Aus : BOOL ;
Funktion_MoSo_T3_Ein : BOOL ;
Funktion_MoSo_T3_Aus : BOOL ;
Schaltzeit1_aktiviert : BOOL ; //Schaltzeit 1 Zeiten eingestellt
Schaltzeit2_aktiviert : BOOL ; //Schaltzeit 2 Zeiten eingestellt
Schaltzeit3_aktiviert : BOOL ; //Schaltzeit 3 Zeiten eingestellt
Montag : BOOL ;
Dienstag : BOOL ;
Mittwoch : BOOL ;
Donnerstag : BOOL ;
Freitag : BOOL ;
Samstag : BOOL ;
Sonntag : BOOL ;
Woche : BOOL ; //Wochentag liegt zwischen Montag bis Freitag
Wochenende : BOOL ; //Wochentag liegt auf einem Samstag/Sonntag
END_VAR
BEGIN
NETWORK
TITLE =Schaltzeit nach gewählter Funktion
//Abfrage welche Funktion gewählt ist, danach die Istzeit mit der eingestellten
//Schaltzeit vergleichen und mit VKE=1 eine Variable auf "1" setzen.
//================================================Funktion 1
U( ;
U #Mo_bis_Fr; //Funktion Montag bis Freitag
UN #Sa_bis_So;
UN #Mo_bis_So;
U #Woche;
) ;
SPB MoFr;
SPA FKT2;
//--------------------------------------
MoFr: U( ;
U #Schaltzeit1_aktiviert;
SPB ON2;
SPA NXT3;
ON2: L #Uhrzeit;
L #Einschalten_1;
==I ;
) ;
= #Funktion_MoFr_T1_Ein;
U( ;
L #Uhrzeit;
L #Ausschalten_1;
==I ;
) ;
= #Funktion_MoFr_T1_Aus;
//--------------------------------------
NXT3: U( ;
U #Schaltzeit2_aktiviert;
SPB ON3;
SPA NXT4;
ON3: L #Uhrzeit;
L #Einschalten_2;
==I ;
) ;
= #Funktion_MoFr_T2_Ein;
U( ;
L #Uhrzeit;
L #Ausschalten_2;
==I ;
) ;
= #Funktion_MoFr_T2_Aus;
//--------------------------------------
NXT4: U( ;
U #Schaltzeit3_aktiviert;
SPB ON4;
SPA NXT5;
ON4: L #Uhrzeit;
L #Einschalten_3;
==I ;
) ;
= #Funktion_MoFr_T3_Ein;
U( ;
L #Uhrzeit;
L #Ausschalten_3;
==I ;
) ;
= #Funktion_MoFr_T3_Aus;
NXT5: NOP 0;
//================================================Funktion 2
FKT2: U( ;
U #Sa_bis_So;
UN #Mo_bis_Fr;
UN #Mo_bis_So;
U #Wochenende;
) ;
SPB SaSo;
SPA FKT3;
//--------------------------------------
SaSo: U( ;
U #Schaltzeit1_aktiviert;
SPB ON5;
SPA NXT6;
ON5: L #Uhrzeit;
L #Einschalten_1;
==I ;
) ;
= #Funktion_SaSo_T1_Ein;
U( ;
L #Uhrzeit;
L #Ausschalten_1;
==I ;
) ;
= #Funktion_SaSo_T1_Aus;
//--------------------------------------
NXT6: U( ;
U #Schaltzeit2_aktiviert;
SPB ON6;
SPA NXT7;
ON6: L #Uhrzeit;
L #Einschalten_2;
==I ;
) ;
= #Funktion_SaSo_T2_Ein;
U( ;
L #Uhrzeit;
L #Ausschalten_2;
==I ;
) ;
= #Funktion_SaSo_T2_Aus;
//--------------------------------------
NXT7: U( ;
U #Schaltzeit3_aktiviert;
SPB ON7;
SPA NXT8;
ON7: L #Uhrzeit;
L #Einschalten_3;
==I ;
) ;
= #Funktion_SaSo_T3_Ein;
U( ;
L #Uhrzeit;
L #Ausschalten_3;
==I ;
) ;
= #Funktion_SaSo_T3_Aus;
NXT8: NOP 0;
//================================================Funktion 3
FKT3: U #Mo_bis_So;
UN #Mo_bis_Fr;
UN #Sa_bis_So;
SPB MoSo;
SPA NX11;
//--------------------------------------
MoSo: U( ;
U #Schaltzeit1_aktiviert;
SPB ON8;
SPA NXT9;
ON8: L #Uhrzeit;
L #Einschalten_1;
==I ;
) ;
= #Funktion_MoSo_T1_Ein;
U( ;
L #Uhrzeit;
L #Ausschalten_1;
==I ; // gleich?
) ;
= #Funktion_MoSo_T1_Aus;
//--------------------------------------
NXT9: U( ;
U #Schaltzeit2_aktiviert;
SPB ON9;
SPA NX10;
ON9: L #Uhrzeit;
L #Einschalten_2;
==I ;
) ;
= #Funktion_MoSo_T2_Ein;
U( ;
L #Uhrzeit;
L #Ausschalten_2;
==I ;
) ;
= #Funktion_MoSo_T2_Aus;
//--------------------------------------
NX10: U( ;
U #Schaltzeit3_aktiviert;
SPB ON10;
SPA NX11;
ON10: L #Uhrzeit;
L #Einschalten_3;
==I ;
) ;
= #Funktion_MoSo_T3_Ein;
U( ;
L #Uhrzeit;
L #Ausschalten_3;
==I ;
) ;
= #Funktion_MoSo_T3_Aus;
NX11: NOP 0;
NETWORK
TITLE =Schaltuhrausgang Einschalten
U #Mo_bis_Fr;
U( ;
O #Funktion_MoFr_T1_Ein;
O #Funktion_MoFr_T2_Ein;
O #Funktion_MoFr_T3_Ein;
) ;
O ;
U #Sa_bis_So;
U( ;
O #Funktion_SaSo_T1_Ein;
O #Funktion_SaSo_T2_Ein;
O #Funktion_SaSo_T3_Ein;
) ;
O ;
U #Mo_bis_So;
U( ;
O #Funktion_MoSo_T1_Ein;
O #Funktion_MoSo_T2_Ein;
O #Funktion_MoSo_T3_Ein;
) ;
S #Schaltuhr_aktiviert;
NETWORK
TITLE =Schaltuhrausgang Ausschalten
U #Mo_bis_Fr;
U( ;
O #Funktion_MoFr_T1_Aus;
O #Funktion_MoFr_T2_Aus;
O #Funktion_MoFr_T3_Aus;
) ;
O ;
U #Sa_bis_So;
U( ;
O #Funktion_SaSo_T1_Aus;
O #Funktion_SaSo_T2_Aus;
O #Funktion_SaSo_T3_Aus;
) ;
O ;
U #Mo_bis_So;
U( ;
O #Funktion_MoSo_T1_Aus;
O #Funktion_MoSo_T2_Aus;
O #Funktion_MoSo_T3_Aus;
) ;
R #Schaltuhr_aktiviert;
END_FUNCTION_BLOCK