FUNCTION_BLOCK "Nagelfallkontrolle_FB"
VERSION : 0.1
VAR_INPUT
NFK_Ein : BOOL ;
NFK_Start : BOOL ;
NFK_Reset : BOOL ;
NFK_Lampentest : BOOL ;
NFK_Nagelmaske : DWORD ;
S5_Timer : TIMER ;
NFK_Kontrollzeit : S5TIME ; //In dieser Zeit müssen alle Nägel gefallen sein
INI1 : BOOL ;
INI2 : BOOL ;
INI3 : BOOL ;
INI4 : BOOL ;
INI5 : BOOL ;
INI6 : BOOL ;
INI7 : BOOL ;
INI8 : BOOL ;
INI9 : BOOL ;
INI10 : BOOL ;
FM1 : BOOL ;
FM2 : BOOL ;
END_VAR
VAR_OUTPUT
NFK_aktiv : BOOL ;
NFK_Nagelfehler : BOOL ;
LED1 : BOOL ;
LED2 : BOOL ;
LED3 : BOOL ;
LED4 : BOOL ;
LED5 : BOOL ;
LED6 : BOOL ;
LED7 : BOOL ;
LED8 : BOOL ;
LED9 : BOOL ;
LED10 : BOOL ;
END_VAR
VAR
tb_rc1 : BOOL ; //zeigt an dass die Nagelfallkontrolle 1 einen Fehler gefunden hat
tb_kontrolle_start : BOOL ;
td_auswertung : DWORD ;
SOLLMASKE : DWORD ;
ISTMASKE : DWORD ;
AUSWERTEMASKE : DWORD ;
Fehler : BOOL ;
Reset : BOOL ;
Start : BOOL ;
END_VAR
BEGIN
NETWORK
TITLE =Nagelfallkontrolle aus
U #NFK_Ein;
= #NFK_aktiv;
NETWORK
TITLE =Nagelfallkontrolle aus
UN #NFK_Ein;
R #Fehler;
NETWORK
TITLE =Nagelfallkontrolle Reset
U #Fehler;
U( ;
U #NFK_Reset;
FP #FM2;
) ;
= #Reset;
NETWORK
TITLE =Auszuwertende Nagelmaske Nägel Nur AWL Ansicht!!!
//Wird von TP177 vorgegeben
// U "high"
// = "Nagelfallkontrolle_".NK1
// = "Nagelfallkontrolle_".NK2
// = "Nagelfallkontrolle_".NK3
//= "Nagelfallkontrolle_".NK4
//= "Nagelfallkontrolle_".NK5
//= "Nagelfallkontrolle_".NK6
//= "Nagelfallkontrolle_".NK7
//= "Nagelfallkontrolle_".NK8
//= "Nagelfallkontrolle_".NK9
// = "Nagelfallkontrolle_".NK10
NETWORK
TITLE =Auszuwertende Nagelmaske einlesen
L #NFK_Nagelmaske;
T #SOLLMASKE;
NOP 0;
NETWORK
TITLE =Nagelfallkontrolle zurücksetzen
U #Reset;
U #NFK_Ein;
R #LED1;
R #LED2;
R #LED3;
R #LED4;
R #LED5;
R #LED6;
R #LED7;
R #LED8;
R #LED9;
R #LED10;
R #Fehler;
NETWORK
TITLE =Nagelfallkontrolle starten
//Alle LED Nagelkontrolle einschalten
U #NFK_Ein;
UN #Reset;
U( ;
U #NFK_Start;
FP #FM1;
) ;
UN #Start;
= L 19.0;
U L 19.0;
= #tb_kontrolle_start;
U #tb_kontrolle_start;
S #Start;
U L 19.0;
SPBNB _001;
L 0;
T #ISTMASKE;
_001: NOP 0;
NETWORK
TITLE =LEDs Nagelkontrolle Kanal 1-10 einschalten
U #tb_kontrolle_start;
SPBN NFK1;
SET ;
= #LED1;
= #LED2;
= #LED3;
= #LED4;
= #LED5;
= #LED6;
= #LED7;
= #LED8;
= #LED9;
= #LED10;
NFK1: NOP 0;
NETWORK
TITLE =Timer Nagelfallkontrolle
//Innerhalb 1sek. müssen alle Nägel gefallen sein
U #Start;
L #NFK_Kontrollzeit;
SE #S5_Timer;
NOP 0;
NOP 0;
NOP 0;
NOP 0;
NETWORK
TITLE =Ist-Maske einlesen
//Ist-Maske = MD84
//E8_ES_NK1 ist das rechte Bit
//E8_ES_NK24 ist das linke Bit
U #Start;
UN #S5_Timer;
UN #Reset;
U #NFK_Ein;
U( ;
L #SOLLMASKE;
L L#0;
<>D ;
) ;
U #Start;
SPBN NFK2;
U #INI1;
S L 13.0;
U #INI2;
S L 13.1;
U #INI3;
S L 13.2;
U #INI4;
S L 13.3;
U #INI5;
S L 13.4;
U #INI6;
S L 13.5;
U #INI7;
S L 13.6;
U #INI8;
S L 13.7;
U #INI9;
S L 12.0;
U #INI10;
S L 12.1;
L 0;
T LW 10; //mit 0 überschreiben da nicht verwendet
CLR ;
= L 12.2; // rücksetzen da nicht verwendet
= L 12.3; // rücksetzen da nicht verwendet
= L 12.4; // rücksetzen da nicht verwendet
= L 12.5; // rücksetzen da nicht verwendet
= L 12.6; // rücksetzen da nicht verwendet
= L 12.7; // rücksetzen da nicht verwendet
= #Fehler;
NFK2: NOP 0;
NETWORK
TITLE =Ausgänge wieder wegschalten und Ist-Maske auswerten
//isTimer am ende zurücksetzen
CLR ;
= #tb_rc1; //Null setzen für neuen Zyklus
U #Start;
U #S5_Timer;
UN #Reset;
U #NFK_Ein;
SPBN NFK3;
CLR ;
= #LED1;
= #LED2;
= #LED3;
= #LED4;
= #LED5;
= #LED6;
= #LED7;
= #LED8;
= #LED9;
= #LED10;
//Nagelkontrolle Kanal 10
L #ISTMASKE;
L #SOLLMASKE;
XOD ;
T #AUSWERTEMASKE;
L #SOLLMASKE;
L #AUSWERTEMASKE;
UD ;
T #AUSWERTEMASKE;
L L#0;
<>D ;
SPBN NFK4;
// Ausgabe bei Fehler
U L 17.0; //Bit aus Auwerte Maske
U L 9.0; // Bit aus Sollmaske
= #LED1;
U L 17.1;
U L 9.1;
= #LED2;
U L 17.2;
U L 9.2;
= #LED3;
U L 17.3;
U L 9.3;
= #LED4;
U L 17.4;
U L 9.4;
= #LED5;
U L 17.5;
U L 9.5;
= #LED6;
U L 17.6;
U L 9.6;
= #LED7;
U L 17.7;
U L 9.7;
= #LED8;
U L 16.0;
U L 8.0;
= #LED9;
U L 16.1;
U L 8.1;
= #LED10;
SET ;
= #tb_rc1;
NFK4: NOP 0;
NOP 0;
U #tb_rc1;
= #Fehler;
NFK3: NOP 0;
NETWORK
TITLE =fertig Nagelfallkontrolle
U #Start;
U #S5_Timer;
UN #Reset;
U #NFK_Ein;
R #Start;
NETWORK
TITLE =Störung Nagelfallkontrolle
U #Fehler;
= #NFK_Nagelfehler;
END_FUNCTION_BLOCK