FUNCTION_BLOCK FB 300
TITLE =SSI_Encoders
{ S7_language := '19(1) Niederländisch (Niederlande) 10.05.2005 00:03:02' }
VERSION : 0.2
VAR_INPUT
Nulstellen : BOOL ; //Aanstoten nulstellen
Adres : INT ; //Adres SSI moduul
END_VAR
VAR_OUTPUT
AktPlaats : DINT ;
END_VAR
VAR
AantalBits : INT := 25; //Aantal bits geldig encoder
Puls_Omw : INT := 8192; //Aantal pulsen per omwenteling encoder
MM_Omw : REAL := 1.000000e+000; //MM per omwenteling van encoder
AktWaarde : DINT ; //AktueleWaarde encoder
RefWaarde : DINT ; //Referentiewaarde nulstellen
StatusUP : BOOL ; //Status UP STS_UP
StatusDN : BOOL ; //Status DN STS_DN
StatusDI : BOOL ; //Status DI STS_DI
ERR_24V : BOOL ; //Kortsluiting opnemerstroomverzorging 24V
ERR_SSI : BOOL ; //Fout absoluut encoder
ERR_PARA : BOOL ; //Parameter fout
RDY : BOOL ; //Bedrijfsgereed
Res47 : BOOL ; //gereserveert
STS_LOAD : BOOL ; //Laadfunctie loopt
ERR_LOAD : BOOL ; //Fout bij laadfunctie
CMP : BOOL ; //Vergelijkingswaarde 1 bereikt
CMP2 : BOOL ; //Vergelijkingswaarde 2 bereikt
Res54 : BOOL ; //gereserveert
Res55 : BOOL ; //gereserveert
Res56 : BOOL ; //gereserveert
Res57 : BOOL ; //gereserveert
CMP_VAL1 : BOOL ; //Vergelijkingswaarde 1 laden
CMP_VAL2 : BOOL ; //Vergelijkingswaarde 2 laden
ResQ42 : BOOL ;
ResQ43 : BOOL ;
ResQ44 : BOOL ;
ResQ45 : BOOL ;
LATCH_ACK : BOOL ; //Bevestigen Latch functie
EXTF_ACK : BOOL ; //Bevestiging foutmelding
Fout : BOOL ; //Fout in SSI
Reset_Fout : BOOL ; //Aansturen reset fout
MetSnelheid : BOOL ; //Snelheid berekenen = 1
NulstellenKlaar : BOOL ;
CMP_VAL : DINT ; //Vergelijkingswaarde naar SSI moduul
WaardeNulstellen : DINT ; //Waarde die gewenst wordt bij nulstellen
Copy_Plaats : DINT ;
Snelheid : DINT ; //Snelheid in uitgangseenh/sec
SampleTime : REAL ;
END_VAR
VAR_TEMP
Schuiven : INT ;
Tussengeheugen : DINT ;
Pulsen : DINT ;
bits13 : BOOL ;
R_fout : BOOL ;
END_VAR
BEGIN
NETWORK
TITLE =
U #Reset_Fout;
U #Fout;
= #EXTF_ACK;
// reset fout
L 32;
L #AantalBits;
-I ;
T #Schuiven;
L #AantalBits;
L 13;
==I ;
= #bits13;
L #Adres;
SLW 3;
LAR1 ;
L PEW [AR1,P#4.0];
//status meldingen uit SSI moduul
T DIW 24;
O #ERR_PARA;
O #ERR_SSI;
O #ERR_24V;
UN #Fout;
= #R_fout;
O #ERR_PARA;
O #ERR_SSI;
O #ERR_24V;
= #Fout;
U #Reset_Fout;
U #Fout;
O #R_fout;
= #EXTF_ACK;
UN #CMP_VAL1;
UN #CMP_VAL2;
O #ERR_LOAD;
O #STS_LOAD;
SPB m2;
L #CMP_VAL;
//vergelijkings waarde naar SSI moduul
T PAD [AR1,P#0.0];
m2: L DIB 26;
//Stuurbits naar SSI moduul
T PAB [AR1,P#4.0];
UN #RDY;
U #Fout;
SPB eind;
// als er een fout is dan oude waarde uitgeven
L PED [AR1,P#0.0];
T #AktWaarde;
//Waarde encoder
L #Schuiven;
TAK ;
SLD ;
T #Tussengeheugen;
UN #Nulstellen;
O #NulstellenKlaar;
SPB m001;
// nulstellen
L #WaardeNulstellen;
DTR ;
L #Puls_Omw;
DTR ;
*R ;
L #MM_Omw;
/R ;
RND ;
L #Schuiven;
TAK ;
SLD ;
NEGD ;
L #Tussengeheugen;
+D ;
NEGD ;
T #RefWaarde;
L #Tussengeheugen;
m001: L #RefWaarde;
+D ;
L #Schuiven;
TAK ;
SSD ;
T #Pulsen;
UN #bits13;
SPB z1;
L L#-1250;
>=D ;
TAK ;
SPB z1;
L L#8192;
+D ;
// bij 13 bit bereik tussen -1250 tot 6942
z1: DTR ;
L #MM_Omw;
*R ;
L #Puls_Omw;
DTR ;
/R ;
RND ;
T #AktPlaats;
U #Nulstellen;
= #NulstellenKlaar;
eind: UN #MetSnelheid;
O #Fout;
SPB end;
U #Nulstellen;
UN #NulstellenKlaar;
SPB end;
L #Copy_Plaats;
L #Pulsen;
T #Copy_Plaats;
-D ;
NEGD ;
DTR ;
L #MM_Omw;
*R ;
L #Puls_Omw;
ITD ;
DTR ;
/R ;
L #SampleTime;
/R ;
RND ;
T #Snelheid;
SPA EIND;
end: L 0;
T #Snelheid;
EIND: U #Nulstellen;
= #NulstellenKlaar;
END_FUNCTION_BLOCK