FUNCTION_BLOCK FB 100
TITLE =Communicatie met tellerkaart 12 PEW + 6 PAW
//FB Voor ET200S Counter kaart
FAMILY : ET200S
VERSION : 0.1
VAR_INPUT
Peripheriewoord : INT ; //Anfang adresse von Zaehler
Storung_wissen : BOOL ; //Reset Storung
teller_laden : BOOL ; //Anstoss Zaelwert in Zaehler laden
First_Scan : BOOL ; //Bit hoog tijdens 1ste cyclus
Waarde_TellerLaden : DINT ; //Zahlwert welche geladen must wurde
END_VAR
VAR_OUTPUT
TellerLadenActief : BOOL ; //Laden Countwert ist aktief
TellerGeladen : BOOL ; //Zahlwert ist in Counter geladen
TellerNegatief : BOOL ; //Zaehleristwert kleiner Null
Fout_TellerKaart : BOOL ; //Fehler Counter karte
Tellerwaarde : DINT ; //Aktuele wert Counter
END_VAR
VAR
StuurInterface : STRUCT //Steuerschnittstelle
Func_DO1_1 : BOOL ;
Func_DO1_2 : BOOL ;
RES_1 : BOOL ;
RES_2 : BOOL ;
Func_DO2_1 : BOOL ;
Func_DO2_2 : BOOL ;
RES_3 : BOOL ;
RES_4 : BOOL ;
HYS_DO1_und_DO2 : BYTE ;
Impulsduur : BYTE ;
RES_5 : BYTE ;
SW_GATE : BOOL ;
CTRL_SYN : BOOL ;
RES_STS : BOOL ;
SET_DO1 : BOOL ;
CTRL_DO1 : BOOL ;
SET_DO2 : BOOL ;
CTRL_DO2 : BOOL ;
EXTF_ACK : BOOL ;
LOAD_VAL : BOOL ;
LOAD_PREPARE : BOOL ;
CMP_VAL1 : BOOL ;
CMP_VAL2 : BOOL ;
C_DOPARAM : BOOL ;
RES_6 : BOOL ;
RES_7 : BOOL ;
RES_8 : BOOL ;
END_STRUCT ;
TerugmeldInterface : STRUCT //Rückmeldeschnittstelle
Tellerwaarde_P_0_0 : DINT ; //Tellerwaarde uit adres + P#0.0
STS_LOAD : BOOL ;
ERR_LOAD : BOOL ;
RES_STS_A : BOOL ;
RES_1 : BOOL ;
RES_2 : BOOL ;
ERR_PARA : BOOL ;
ERR_DO : BOOL ;
ERR_24V : BOOL ;
STS_GATE : BOOL ;
STS_DI : BOOL ;
RES_3 : BOOL ;
STS_DO1 : BOOL ;
STS_DO2 : BOOL ;
RES_4 : BOOL ;
STS_C_UP : BOOL ;
STS_C_DN : BOOL ;
STS_SYN : BOOL ;
RES_5 : BOOL ;
RES_6 : BOOL ;
STS_CMP1 : BOOL ;
STS_CMP2 : BOOL ;
STS_OFLW : BOOL ;
STS_UFLW : BOOL ;
STS_ND : BOOL ;
RES : BYTE ;
TellerWaarde_P_8_0 : DINT ; //Tellerwaarde uit adres +P#8.0
END_STRUCT ;
Flank : BOOL ; //Hilf Merker
Tellerwaarde_laden : DINT ; //Wert womit Counter geladen wert
Negative_tellerwaarde : BOOL ; //Zaehlwert ist <0
FP_TellerwaardeLaden : BOOL ; //FP_Zaehlwert in Counter laden
END_VAR
VAR_TEMP
Adres_Telwaarde : DINT ; //Adresse Zahlwert (+P#0.0)
Adres_Stuur_Statusbits : DINT ; //Adresse Steuer und Ruckmelde bits
Adres_Telwaarde_8 : DINT ; //Adresse Zahlwert (+P#8.0)
END_VAR
BEGIN
NETWORK
TITLE =Geldigheid peripheriewoord testen
//Kontrole Periphieword
L #Peripheriewoord;
L 0;
<=I ;
BEB ;
NETWORK
TITLE =Aansturingen volgens handboek Hoofdstuk 13-33
//Wie in handbuch Karpitel 13-33
//
//
//
SET ;
R #StuurInterface.Func_DO1_1;
R #StuurInterface.Func_DO1_2;
R #StuurInterface.RES_1;
R #StuurInterface.RES_2;
R #StuurInterface.Func_DO2_1;
R #StuurInterface.Func_DO2_2;
R #StuurInterface.RES_3;
R #StuurInterface.RES_4;
L 0;
T #StuurInterface.HYS_DO1_und_DO2;
T #StuurInterface.Impulsduur;
T #StuurInterface.RES_5;
SET ;
S #StuurInterface.SW_GATE;
NETWORK
TITLE =Laden van de teller
//Laden von zaehler
U #TellerLadenActief;
U #StuurInterface.LOAD_VAL;
O #TerugmeldInterface.STS_LOAD;
S #TellerGeladen;
U #First_Scan;
R #TellerGeladen;
U #teller_laden;
FP #FP_TellerwaardeLaden;
S #StuurInterface.LOAD_VAL;
NETWORK
TITLE =Gewenste waarde in teller schrijven / Waarde
L #Peripheriewoord;
SLD 3;
T #Adres_Telwaarde;
L #Tellerwaarde_laden;
T PAD [#Adres_Telwaarde];
NETWORK
TITLE =Teller Adressen berekenen en stuurbits schrijven
LAR1 P##StuurInterface;
TAR2 ;
+AR1 ;
L #Adres_Telwaarde;
L P#4.0;
+D ;
T #Adres_Stuur_Statusbits;
L P#4.0;
+D ;
T #Adres_Telwaarde_8;
L D [AR1,P#4.0];
T PAW [#Adres_Stuur_Statusbits];
NETWORK
TITLE =Tellerwaarde uitlezen van tellerkaart
LAR1 P##TerugmeldInterface;
TAR2 ;
+AR1 ;
L PED [#Adres_Telwaarde];
T #TerugmeldInterface.Tellerwaarde_P_0_0;
L PED [#Adres_Stuur_Statusbits];
T D [AR1,P#4.0];
L PED [#Adres_Telwaarde_8];
T D [AR1,P#8.0];
NETWORK
TITLE =Tellerwaarde naar uitgang
U #StuurInterface.LOAD_VAL;
O #TerugmeldInterface.STS_LOAD;
SPB m001;
L #TerugmeldInterface.Tellerwaarde_P_0_0;
T #Tellerwaarde;
m001: NOP 0;
NETWORK
TITLE =Fehlerauswertung
U #TerugmeldInterface.ERR_24V;
O #TerugmeldInterface.ERR_DO;
O #TerugmeldInterface.ERR_PARA;
= #Fout_TellerKaart;
NETWORK
TITLE =Ruecksetzen Fehlermeldung
U #Storung_wissen;
= #StuurInterface.EXTF_ACK;
NETWORK
TITLE =Resetten tellerwaarde laden.
// 1 cyclus vertraagd waardoor tellerwaarde zeker geschreven wordt
U #Flank;
R #StuurInterface.LOAD_VAL;
U #TerugmeldInterface.STS_LOAD;
U #StuurInterface.LOAD_VAL;
S #Flank;
UN #TerugmeldInterface.STS_LOAD;
UN #StuurInterface.LOAD_VAL;
R #Flank;
NETWORK
TITLE =Teller laden actief
U #StuurInterface.LOAD_VAL;
O #TerugmeldInterface.STS_LOAD;
= #TellerLadenActief;
NETWORK
TITLE =Tellerwaarde is negatief
L #Tellerwaarde;
L L#0;
<D ;
= #Negative_tellerwaarde;
= #TellerNegatief;
END_FUNCTION_BLOCK