1274 lines
51 KiB
C
Executable File
1274 lines
51 KiB
C
Executable File
/*
|
|
*----------------------------------------------------------
|
|
*
|
|
* statemate.c
|
|
*
|
|
* This code was automatically generated by
|
|
* the STAtechart Real-time-Code generator STARC
|
|
* which was developed at C-LAB.
|
|
*
|
|
* The original StateChart specifies an experimental
|
|
* car window lift control.
|
|
*
|
|
* Modified and maintained by
|
|
* Friedhelm Stappert
|
|
* C-LAB, Paderborn, Germany
|
|
* fst@c-lab.de
|
|
*
|
|
* Modifications:
|
|
* o '#define float int' so we don't need a
|
|
* floating point library.
|
|
*
|
|
* o modified the Bitlist functions.
|
|
* 'Bitlist is now just a array of char's
|
|
* so we don't need the BitList library.
|
|
*
|
|
*----------------------------------------------------------
|
|
*/
|
|
|
|
|
|
/*
|
|
** actually, we don't really need floating point here
|
|
*/
|
|
#define float int
|
|
|
|
static char Bitlist[64];
|
|
#define SYS_bit_get(a,b) (a)[(b)]
|
|
#define SYS_bit_clr(a,b) (a)[(b)] = 0
|
|
#define SYS_bit_set(a,b) (a)[(b)] = 1
|
|
#define SYS_bit_cpy(a1,i1,a2,i2) (a1)[(i1)] = (a2)[(i2)]
|
|
|
|
|
|
#define active_KINDERSICHERUNG_CTRL_IDX 10
|
|
#define active_KINDERSICHERUNG_CTRL_copy_IDX 11
|
|
#define active_KINDERSICHERUNG_CTRL_old_IDX 12
|
|
#define active_FH_TUERMODUL_CTRL_IDX 13
|
|
#define active_FH_TUERMODUL_CTRL_copy_IDX 14
|
|
#define active_FH_TUERMODUL_CTRL_old_IDX 15
|
|
#define active_EINKLEMMSCHUTZ_CTRL_IDX 16
|
|
#define active_EINKLEMMSCHUTZ_CTRL_copy_IDX 17
|
|
#define active_EINKLEMMSCHUTZ_CTRL_old_IDX 18
|
|
#define active_BLOCK_ERKENNUNG_CTRL_IDX 19
|
|
#define active_BLOCK_ERKENNUNG_CTRL_copy_IDX 20
|
|
#define active_BLOCK_ERKENNUNG_CTRL_old_IDX 21
|
|
#define entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX 0
|
|
#define entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_copy_IDX 1
|
|
unsigned long tm_entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRLch_BLOCK_ERKENNUNG_CTRL__N_copy;
|
|
#define entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_IDX 4
|
|
#define entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX 5
|
|
#define exited_BEREIT_FH_TUERMODUL_CTRL_IDX 6
|
|
#define exited_BEREIT_FH_TUERMODUL_CTRL_copy_IDX 7
|
|
unsigned long tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRLexited_BEREIT_FH_TUERMODUL_CTRL;
|
|
unsigned long tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL;
|
|
unsigned long sc_FH_TUERMODUL_CTRL_2375_2 ;
|
|
unsigned long sc_FH_TUERMODUL_CTRL_2352_1 ;
|
|
unsigned long sc_FH_TUERMODUL_CTRL_2329_1 ;
|
|
int FH_TUERMODUL_CTRL__N;
|
|
int FH_TUERMODUL_CTRL__N_copy;
|
|
int FH_TUERMODUL_CTRL__N_old;
|
|
unsigned long sc_FH_TUERMODUL_CTRL_1781_10 ;
|
|
unsigned long sc_FH_TUERMODUL_CTRL_1739_10 ;
|
|
float FH_TUERMODUL__POSITION ;
|
|
float FH_TUERMODUL__I_EIN ;
|
|
float FH_TUERMODUL__I_EIN_old;
|
|
int FH_DU__MFH;
|
|
int FH_DU__MFH_copy;
|
|
float FH_DU__POSITION ;
|
|
float FH_DU__I_EIN ;
|
|
float FH_DU__I_EIN_old;
|
|
float BLOCK_ERKENNUNG_CTRL__I_EIN_MAX;
|
|
float BLOCK_ERKENNUNG_CTRL__I_EIN_MAX_copy;
|
|
int BLOCK_ERKENNUNG_CTRL__N;
|
|
int BLOCK_ERKENNUNG_CTRL__N_copy;
|
|
int BLOCK_ERKENNUNG_CTRL__N_old;
|
|
char FH_TUERMODUL_CTRL__INREVERS2;
|
|
char FH_TUERMODUL_CTRL__INREVERS2_copy;
|
|
char FH_TUERMODUL_CTRL__INREVERS1;
|
|
char FH_TUERMODUL_CTRL__INREVERS1_copy;
|
|
char FH_TUERMODUL_CTRL__FT ;
|
|
char FH_TUERMODUL__SFHZ_ZENTRAL ;
|
|
char FH_TUERMODUL__SFHZ_ZENTRAL_old;
|
|
char FH_TUERMODUL__SFHZ_MEC ;
|
|
char FH_TUERMODUL__SFHZ_MEC_old;
|
|
char FH_TUERMODUL__SFHA_ZENTRAL ;
|
|
char FH_TUERMODUL__SFHA_ZENTRAL_old;
|
|
char FH_TUERMODUL__SFHA_MEC ;
|
|
char FH_TUERMODUL__SFHA_MEC_old;
|
|
char FH_TUERMODUL__KL_50 ;
|
|
char FH_TUERMODUL__BLOCK;
|
|
char FH_TUERMODUL__BLOCK_copy;
|
|
char FH_TUERMODUL__BLOCK_old;
|
|
char FH_TUERMODUL__FT ;
|
|
char FH_TUERMODUL__SFHZ;
|
|
char FH_TUERMODUL__SFHZ_copy;
|
|
char FH_TUERMODUL__SFHZ_old;
|
|
char FH_TUERMODUL__SFHA;
|
|
char FH_TUERMODUL__SFHA_copy;
|
|
char FH_TUERMODUL__SFHA_old;
|
|
char FH_TUERMODUL__MFHZ;
|
|
char FH_TUERMODUL__MFHZ_copy;
|
|
char FH_TUERMODUL__MFHZ_old;
|
|
char FH_TUERMODUL__MFHA;
|
|
char FH_TUERMODUL__MFHA_copy;
|
|
char FH_TUERMODUL__MFHA_old;
|
|
char FH_TUERMODUL__EKS_LEISTE_AKTIV ;
|
|
char FH_TUERMODUL__EKS_LEISTE_AKTIV_old;
|
|
char FH_TUERMODUL__COM_OPEN ;
|
|
char FH_TUERMODUL__COM_CLOSE ;
|
|
char FH_DU__KL_50 ;
|
|
char FH_DU__S_FH_FTZU;
|
|
char FH_DU__S_FH_FTAUF;
|
|
char FH_DU__FT ;
|
|
char FH_DU__EKS_LEISTE_AKTIV ;
|
|
char FH_DU__EKS_LEISTE_AKTIV_old;
|
|
char FH_DU__S_FH_TMBFAUFCAN;
|
|
char FH_DU__S_FH_TMBFAUFCAN_copy;
|
|
char FH_DU__S_FH_TMBFAUFCAN_old;
|
|
char FH_DU__S_FH_TMBFZUCAN;
|
|
char FH_DU__S_FH_TMBFZUCAN_copy;
|
|
char FH_DU__S_FH_TMBFZUCAN_old;
|
|
char FH_DU__S_FH_TMBFZUDISC ;
|
|
char FH_DU__S_FH_TMBFZUDISC_old;
|
|
char FH_DU__S_FH_TMBFAUFDISC ;
|
|
char FH_DU__S_FH_TMBFAUFDISC_old;
|
|
char FH_DU__S_FH_ZUDISC ;
|
|
char FH_DU__S_FH_AUFDISC ;
|
|
char FH_DU__DOOR_ID ;
|
|
char FH_DU__BLOCK;
|
|
char FH_DU__BLOCK_copy;
|
|
char FH_DU__BLOCK_old;
|
|
char FH_DU__MFHZ;
|
|
char FH_DU__MFHZ_copy;
|
|
char FH_DU__MFHZ_old;
|
|
char FH_DU__MFHA;
|
|
char FH_DU__MFHA_copy;
|
|
char FH_DU__MFHA_old;
|
|
#define FH_TUERMODUL_CTRL__END_REVERS_IDX 22
|
|
#define FH_TUERMODUL_CTRL__END_REVERS_copy_IDX 23
|
|
#define FH_TUERMODUL__EINKLEMMUNG_IDX 24
|
|
|
|
unsigned long time;
|
|
char stable;
|
|
char step;
|
|
|
|
char NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state; /** 2 bits **/
|
|
char ZENTRAL_KINDERSICHERUNG_CTRL_next_state; /** 1 bits **/
|
|
char MEC_KINDERSICHERUNG_CTRL_next_state; /** 1 bits **/
|
|
char KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state; /** 2 bits **/
|
|
char B_FH_TUERMODUL_CTRL_next_state; /** 2 bits **/
|
|
char A_FH_TUERMODUL_CTRL_next_state; /** 1 bits **/
|
|
char WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state; /** 1 bits **/
|
|
char INITIALISIERT_FH_TUERMODUL_CTRL_next_state; /** 2 bits **/
|
|
char TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state; /** 2 bits **/
|
|
char MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state; /** 2 bits **/
|
|
char OEFFNEN_FH_TUERMODUL_CTRL_next_state; /** 2 bits **/
|
|
char SCHLIESSEN_FH_TUERMODUL_CTRL_next_state; /** 2 bits **/
|
|
char FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state; /** 2 bits **/
|
|
char EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state; /** 2 bits **/
|
|
char BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state; /** 2 bits **/
|
|
char BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state; /** 2 bits **/
|
|
|
|
|
|
void interface(void)
|
|
{
|
|
if (SYS_bit_get(Bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_IDX))
|
|
tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL = time;
|
|
if (SYS_bit_get(Bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_IDX) || SYS_bit_get (Bitlist, exited_BEREIT_FH_TUERMODUL_CTRL_IDX))
|
|
tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRLexited_BEREIT_FH_TUERMODUL_CTRL = time;
|
|
if ((sc_FH_TUERMODUL_CTRL_2375_2 != 0) && (time - sc_FH_TUERMODUL_CTRL_2375_2 >= 0.5))
|
|
{
|
|
FH_TUERMODUL__MFHA_copy = 0;
|
|
sc_FH_TUERMODUL_CTRL_2375_2 = 0;
|
|
|
|
}
|
|
if ((sc_FH_TUERMODUL_CTRL_2352_1 != 0) && (time - sc_FH_TUERMODUL_CTRL_2352_1 >= 0.5))
|
|
{
|
|
FH_TUERMODUL__MFHZ_copy = 0;
|
|
sc_FH_TUERMODUL_CTRL_2352_1 = 0;
|
|
|
|
}
|
|
if ((sc_FH_TUERMODUL_CTRL_2329_1 != 0) && (time - sc_FH_TUERMODUL_CTRL_2329_1 >= 0.5))
|
|
{
|
|
FH_TUERMODUL__MFHZ_copy = 0;
|
|
sc_FH_TUERMODUL_CTRL_2329_1 = 0;
|
|
|
|
}
|
|
if ((sc_FH_TUERMODUL_CTRL_1781_10 != 0) && (time - sc_FH_TUERMODUL_CTRL_1781_10 >= 0.5))
|
|
{
|
|
sc_FH_TUERMODUL_CTRL_1781_10 = 0;
|
|
|
|
}
|
|
if ((sc_FH_TUERMODUL_CTRL_1739_10 != 0) && (time - sc_FH_TUERMODUL_CTRL_1739_10 >= 0.5))
|
|
{
|
|
sc_FH_TUERMODUL_CTRL_1739_10 = 0;
|
|
|
|
}
|
|
if ((SYS_bit_get(Bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX) || BLOCK_ERKENNUNG_CTRL__N != BLOCK_ERKENNUNG_CTRL__N_old))
|
|
tm_entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRLch_BLOCK_ERKENNUNG_CTRL__N_copy = time;
|
|
|
|
|
|
}/** interface **/
|
|
|
|
|
|
void init(void)
|
|
{
|
|
tm_entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRLch_BLOCK_ERKENNUNG_CTRL__N_copy = 0;
|
|
tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRLexited_BEREIT_FH_TUERMODUL_CTRL = 0;
|
|
tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL = 0;
|
|
NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 0;
|
|
ZENTRAL_KINDERSICHERUNG_CTRL_next_state = 0;
|
|
MEC_KINDERSICHERUNG_CTRL_next_state = 0;
|
|
KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 0;
|
|
B_FH_TUERMODUL_CTRL_next_state = 0;
|
|
A_FH_TUERMODUL_CTRL_next_state = 0;
|
|
WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state = 0;
|
|
INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 0;
|
|
TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 0;
|
|
MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 0;
|
|
OEFFNEN_FH_TUERMODUL_CTRL_next_state = 0;
|
|
SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 0;
|
|
FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state = 0;
|
|
EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state = 0;
|
|
BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state = 0;
|
|
BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state = 0;
|
|
|
|
|
|
}/** init **/
|
|
|
|
|
|
|
|
void generic_KINDERSICHERUNG_CTRL(void)
|
|
{
|
|
if (SYS_bit_get(Bitlist,active_KINDERSICHERUNG_CTRL_IDX))
|
|
{
|
|
switch (KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state)
|
|
{
|
|
case 1 : /** state ZENTRAL in chart KINDERSICHERUNG_CTRL **/
|
|
{
|
|
if (!(FH_TUERMODUL__SFHA_ZENTRAL || FH_TUERMODUL__SFHZ_ZENTRAL))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHZ_copy = 0;
|
|
FH_TUERMODUL__SFHA_copy = 0;
|
|
|
|
KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 3;
|
|
ZENTRAL_KINDERSICHERUNG_CTRL_next_state = 0;
|
|
break;
|
|
}
|
|
switch (ZENTRAL_KINDERSICHERUNG_CTRL_next_state)
|
|
{
|
|
case 1 : /** state IN_ZENTRAL in chart KINDERSICHERUNG_CTRL **/
|
|
{
|
|
if ((FH_TUERMODUL__SFHA_ZENTRAL && !(FH_TUERMODUL__SFHA_ZENTRAL_old)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHA_copy = 1;
|
|
|
|
ZENTRAL_KINDERSICHERUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
if ((FH_TUERMODUL__SFHZ_ZENTRAL && !(FH_TUERMODUL__SFHZ_ZENTRAL_old)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHZ_copy = 1;
|
|
|
|
ZENTRAL_KINDERSICHERUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
if ((!(FH_TUERMODUL__SFHA_ZENTRAL) && FH_TUERMODUL__SFHA_ZENTRAL_old))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHA_copy = 0;
|
|
|
|
ZENTRAL_KINDERSICHERUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
if ((!(FH_TUERMODUL__SFHZ_ZENTRAL) && FH_TUERMODUL__SFHZ_ZENTRAL_old))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHZ_copy = 0;
|
|
|
|
ZENTRAL_KINDERSICHERUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
break;
|
|
}
|
|
}/** switch ZENTRAL_KINDERSICHERUNG_CTRL_next_state **/
|
|
break;
|
|
}
|
|
case 2 : /** state MEC in chart KINDERSICHERUNG_CTRL **/
|
|
{
|
|
if (!(FH_TUERMODUL__SFHA_MEC || FH_TUERMODUL__SFHZ_MEC))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHZ_copy = 0;
|
|
FH_TUERMODUL__SFHA_copy = 0;
|
|
|
|
KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 3;
|
|
MEC_KINDERSICHERUNG_CTRL_next_state = 0;
|
|
break;
|
|
}
|
|
switch (MEC_KINDERSICHERUNG_CTRL_next_state)
|
|
{
|
|
case 1 : /** state INMEC in chart KINDERSICHERUNG_CTRL **/
|
|
{
|
|
if ((FH_TUERMODUL__SFHA_MEC && !(FH_TUERMODUL__SFHA_MEC_old)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHA_copy = 1;
|
|
|
|
MEC_KINDERSICHERUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
if ((FH_TUERMODUL__SFHZ_MEC && !(FH_TUERMODUL__SFHZ_MEC_old)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHZ_copy = 1;
|
|
|
|
MEC_KINDERSICHERUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
if ((!(FH_TUERMODUL__SFHA_MEC) && FH_TUERMODUL__SFHA_MEC_old))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHA_copy = 0;
|
|
|
|
MEC_KINDERSICHERUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
if ((!(FH_TUERMODUL__SFHZ_MEC) && FH_TUERMODUL__SFHZ_MEC_old))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHZ_copy = 0;
|
|
|
|
MEC_KINDERSICHERUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
break;
|
|
}
|
|
}/** switch MEC_KINDERSICHERUNG_CTRL_next_state **/
|
|
break;
|
|
}
|
|
case 3 : /** state WAITING in chart KINDERSICHERUNG_CTRL **/
|
|
{
|
|
if ((!FH_TUERMODUL__KL_50) && (FH_TUERMODUL__SFHZ_MEC && FH_TUERMODUL__SFHA_MEC))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHZ_copy = 1;
|
|
FH_TUERMODUL__SFHA_copy = 1;
|
|
|
|
KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 2;
|
|
break;
|
|
}
|
|
if ((!FH_TUERMODUL__KL_50) && (FH_TUERMODUL__SFHZ_MEC && !FH_TUERMODUL__SFHA_MEC))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHZ_copy = 1;
|
|
|
|
KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 2;
|
|
break;
|
|
}
|
|
if ((!FH_TUERMODUL__KL_50) && (!FH_TUERMODUL__SFHZ_MEC && FH_TUERMODUL__SFHA_MEC))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHA_copy = 1;
|
|
|
|
KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 2;
|
|
break;
|
|
}
|
|
if ((!FH_TUERMODUL__SFHZ_ZENTRAL && FH_TUERMODUL__SFHA_ZENTRAL && !FH_TUERMODUL__KL_50))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHA_copy = 1;
|
|
|
|
KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
if ((FH_TUERMODUL__SFHZ_ZENTRAL && FH_TUERMODUL__SFHA_ZENTRAL))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHA_copy = 1;
|
|
FH_TUERMODUL__SFHZ_copy = 1;
|
|
|
|
KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
if ((FH_TUERMODUL__SFHZ_ZENTRAL && !FH_TUERMODUL__SFHA_ZENTRAL && !FH_TUERMODUL__KL_50))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__SFHZ_copy = 1;
|
|
|
|
KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 3;
|
|
break;
|
|
}
|
|
}/** switch KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state **/
|
|
}
|
|
}
|
|
|
|
void generic_FH_TUERMODUL_CTRL(void)
|
|
{
|
|
if (!SYS_bit_get(Bitlist, active_FH_TUERMODUL_CTRL_IDX) && SYS_bit_get(Bitlist,active_FH_TUERMODUL_CTRL_old_IDX) && !SYS_bit_get(Bitlist,active_FH_TUERMODUL_CTRL_copy_IDX))
|
|
{
|
|
SYS_bit_clr (Bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_IDX);
|
|
SYS_bit_clr (Bitlist, exited_BEREIT_FH_TUERMODUL_CTRL_IDX);
|
|
}
|
|
if (SYS_bit_get(Bitlist,active_FH_TUERMODUL_CTRL_IDX))
|
|
{
|
|
if (!SYS_bit_get(Bitlist, active_KINDERSICHERUNG_CTRL_IDX))
|
|
{
|
|
KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 3;
|
|
}
|
|
SYS_bit_clr (Bitlist, active_KINDERSICHERUNG_CTRL_copy_IDX);
|
|
if (!SYS_bit_get(Bitlist, active_BLOCK_ERKENNUNG_CTRL_IDX))
|
|
{
|
|
SYS_bit_clr (Bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX);
|
|
BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state = 1;
|
|
}
|
|
SYS_bit_clr (Bitlist, active_BLOCK_ERKENNUNG_CTRL_copy_IDX);
|
|
SYS_bit_set (Bitlist, active_KINDERSICHERUNG_CTRL_copy_IDX);
|
|
SYS_bit_set (Bitlist, active_BLOCK_ERKENNUNG_CTRL_copy_IDX);
|
|
switch (B_FH_TUERMODUL_CTRL_next_state)
|
|
{
|
|
case 1 : /** state ZAEHLER_WHSP_ZU_HOCH in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if ((FH_TUERMODUL_CTRL__N == 59 && !(FH_TUERMODUL_CTRL__N_old == 59)))
|
|
{
|
|
stable = 0;
|
|
|
|
B_FH_TUERMODUL_CTRL_next_state = 3;
|
|
INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case 2 : /** state NICHT_INITIALISIERT in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if (((FH_TUERMODUL__BLOCK && !(FH_TUERMODUL__BLOCK_old))) && ((FH_TUERMODUL__MFHZ)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHZ_copy = 0;
|
|
sc_FH_TUERMODUL_CTRL_2329_1 = time;
|
|
|
|
B_FH_TUERMODUL_CTRL_next_state = 3;
|
|
INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3;
|
|
break;
|
|
}
|
|
switch (NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state)
|
|
{
|
|
case 1 : /** state SCHLIESSEN in chart NICHT_INITIALISIERT **/
|
|
{
|
|
if (!(FH_TUERMODUL__SFHZ))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHZ_copy = 0;
|
|
|
|
NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 3;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case 2 : /** state OEFFNEN in chart NICHT_INITIALISIERT **/
|
|
{
|
|
if (!(FH_TUERMODUL__SFHA))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHA_copy = 0;
|
|
|
|
NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 3;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case 3 : /** state BEREIT in chart NICHT_INITIALISIERT **/
|
|
{
|
|
if ((FH_TUERMODUL__SFHA))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHA_copy = 1;
|
|
|
|
NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 2;
|
|
break;
|
|
}
|
|
if ((FH_TUERMODUL__SFHZ))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHZ_copy = 1;
|
|
|
|
NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 3;
|
|
break;
|
|
}
|
|
}/** switch NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state **/
|
|
break;
|
|
}
|
|
case 3 : /** state INITIALISIERT in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if (((FH_TUERMODUL_CTRL__N > 60 && !(FH_TUERMODUL_CTRL__N_old > 60))) && ((!(FH_TUERMODUL_CTRL__INREVERS1 || FH_TUERMODUL_CTRL__INREVERS2))))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHZ_copy = 0;
|
|
FH_TUERMODUL__MFHA_copy = 0;
|
|
|
|
B_FH_TUERMODUL_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
if (((FH_TUERMODUL__BLOCK && !(FH_TUERMODUL__BLOCK_old))) && ((FH_TUERMODUL__MFHA)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHA_copy = 0;
|
|
sc_FH_TUERMODUL_CTRL_2375_2 = time;
|
|
|
|
B_FH_TUERMODUL_CTRL_next_state = 2;
|
|
NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 3;
|
|
break;
|
|
}
|
|
if (((FH_TUERMODUL__BLOCK && !(FH_TUERMODUL__BLOCK_old))) && ((FH_TUERMODUL__MFHZ)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHZ_copy = 0;
|
|
sc_FH_TUERMODUL_CTRL_2352_1 = time;
|
|
|
|
B_FH_TUERMODUL_CTRL_next_state = 2;
|
|
NICHT_INITIALISIERT_NICHT_INITIALISIERT_next_state = 3;
|
|
break;
|
|
}
|
|
switch (INITIALISIERT_FH_TUERMODUL_CTRL_next_state)
|
|
{
|
|
case 1 : /** state OEFFNEN in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if ((FH_TUERMODUL__POSITION >= 405))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHA_copy = 0;
|
|
|
|
INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3;
|
|
break;
|
|
}
|
|
switch (OEFFNEN_FH_TUERMODUL_CTRL_next_state)
|
|
{
|
|
case 1 : /** state TIPP_OEFFNEN in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if ((FH_TUERMODUL__SFHZ && !(FH_TUERMODUL__SFHZ_old)) || (FH_TUERMODUL__SFHA && !(FH_TUERMODUL__SFHA_old)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHA_copy = 0;
|
|
|
|
INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3;
|
|
OEFFNEN_FH_TUERMODUL_CTRL_next_state = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case 2 : /** state MAN_OEFFNEN in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if ((FH_TUERMODUL__SFHZ && !(FH_TUERMODUL__SFHZ_old)))
|
|
{
|
|
stable = 0;
|
|
|
|
OEFFNEN_FH_TUERMODUL_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
if ((!(FH_TUERMODUL__SFHA) && FH_TUERMODUL__SFHA_old))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHA_copy = 0;
|
|
|
|
INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3;
|
|
OEFFNEN_FH_TUERMODUL_CTRL_next_state = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
OEFFNEN_FH_TUERMODUL_CTRL_next_state = 2;
|
|
break;
|
|
}
|
|
}/** switch OEFFNEN_FH_TUERMODUL_CTRL_next_state **/
|
|
break;
|
|
}
|
|
case 2 : /** state SCHLIESSEN in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if ((FH_TUERMODUL__POSITION <= 0))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHZ_copy = 0;
|
|
|
|
INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3;
|
|
break;
|
|
}
|
|
switch (SCHLIESSEN_FH_TUERMODUL_CTRL_next_state)
|
|
{
|
|
case 1 : /** state TIPP_SCHLIESSEN in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if ((FH_TUERMODUL__SFHA && !(FH_TUERMODUL__SFHA_old)) || (FH_TUERMODUL__SFHZ && !(FH_TUERMODUL__SFHZ_old)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHZ_copy = 0;
|
|
|
|
INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3;
|
|
break;
|
|
}
|
|
switch (TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state)
|
|
{
|
|
case 1 : /** state REVERSIEREN2 in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
SYS_bit_clr (Bitlist, FH_TUERMODUL_CTRL__END_REVERS_copy_IDX);
|
|
if (SYS_bit_get (Bitlist, FH_TUERMODUL_CTRL__END_REVERS_IDX))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHZ_copy = 1;
|
|
FH_TUERMODUL_CTRL__INREVERS2_copy = 0;
|
|
|
|
TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2;
|
|
FH_TUERMODUL__MFHA_copy = 0;
|
|
|
|
SYS_bit_set(Bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case 2 : /** state TIPP_SCHLIESSEN1 in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if (SYS_bit_get (Bitlist, FH_TUERMODUL__EINKLEMMUNG_IDX))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL_CTRL__INREVERS2_copy = 1;
|
|
|
|
SYS_bit_set (Bitlist, FH_TUERMODUL_CTRL__END_REVERS_copy_IDX);
|
|
TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 1;
|
|
SYS_bit_clr(Bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX);
|
|
FH_TUERMODUL__MFHZ_copy = 0;
|
|
|
|
sc_FH_TUERMODUL_CTRL_1781_10 = time;
|
|
FH_TUERMODUL__MFHA_copy = 1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2;
|
|
SYS_bit_set(Bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX);
|
|
break;
|
|
}
|
|
}/** switch TIPP_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state **/
|
|
break;
|
|
}
|
|
case 2 : /** state MANUELL_SCHLIESSEN in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if ((!(FH_TUERMODUL__SFHZ) && FH_TUERMODUL__SFHZ_old))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHZ_copy = 0;
|
|
|
|
INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3;
|
|
break;
|
|
}
|
|
switch (MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state)
|
|
{
|
|
case 1 : /** state REVERSIEREN1 in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
SYS_bit_clr (Bitlist, FH_TUERMODUL_CTRL__END_REVERS_copy_IDX);
|
|
if (SYS_bit_get (Bitlist, FH_TUERMODUL_CTRL__END_REVERS_IDX))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL_CTRL__INREVERS1_copy = 0;
|
|
|
|
MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2;
|
|
FH_TUERMODUL__MFHA_copy = 0;
|
|
|
|
SYS_bit_set(Bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX);
|
|
FH_TUERMODUL__MFHZ_copy = 1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case 2 : /** state MAN_SCHLIESSEN in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if (SYS_bit_get (Bitlist, FH_TUERMODUL__EINKLEMMUNG_IDX))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHZ_copy = 0;
|
|
FH_TUERMODUL_CTRL__INREVERS1_copy = 1;
|
|
|
|
SYS_bit_set (Bitlist, FH_TUERMODUL_CTRL__END_REVERS_copy_IDX);
|
|
MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 1;
|
|
SYS_bit_clr(Bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX);
|
|
|
|
sc_FH_TUERMODUL_CTRL_1739_10 = time;
|
|
FH_TUERMODUL__MFHA_copy = 1;
|
|
break;
|
|
}
|
|
if ((FH_TUERMODUL__SFHA && !(FH_TUERMODUL__SFHA_old)))
|
|
{
|
|
stable = 0;
|
|
|
|
SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 1;
|
|
MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2;
|
|
SYS_bit_set(Bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX);
|
|
FH_TUERMODUL__MFHZ_copy = 1;
|
|
break;
|
|
}
|
|
}/** switch MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state **/
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2;
|
|
MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2;
|
|
SYS_bit_set(Bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX);
|
|
FH_TUERMODUL__MFHZ_copy = 1;
|
|
break;
|
|
}
|
|
}/** switch SCHLIESSEN_FH_TUERMODUL_CTRL_next_state **/
|
|
break;
|
|
}
|
|
case 3 : /** state BEREIT in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if (((FH_TUERMODUL__SFHZ && !(FH_TUERMODUL__SFHZ_old))) && ((FH_TUERMODUL__POSITION > 0)))
|
|
{
|
|
stable = 0;
|
|
|
|
INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 2;
|
|
SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2;
|
|
MANUELL_SCHLIESSEN_FH_TUERMODUL_CTRL_next_state = 2;
|
|
SYS_bit_set(Bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX);
|
|
FH_TUERMODUL__MFHZ_copy = 1;
|
|
break;
|
|
}
|
|
if (((FH_TUERMODUL__SFHA && !(FH_TUERMODUL__SFHA_old))) && ((FH_TUERMODUL__POSITION < 405)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__MFHA_copy = 1;
|
|
|
|
INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 1;
|
|
OEFFNEN_FH_TUERMODUL_CTRL_next_state = 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
INITIALISIERT_FH_TUERMODUL_CTRL_next_state = 3;
|
|
break;
|
|
}
|
|
}/** switch INITIALISIERT_FH_TUERMODUL_CTRL_next_state **/
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
B_FH_TUERMODUL_CTRL_next_state = 2;
|
|
break;
|
|
}
|
|
}/** switch B_FH_TUERMODUL_CTRL_next_state **/
|
|
switch (A_FH_TUERMODUL_CTRL_next_state)
|
|
{
|
|
case 1 : /** state WIEDERHOLSPERRE in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
SYS_bit_clr (Bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX);
|
|
if ((step == 1 && tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRLexited_BEREIT_FH_TUERMODUL_CTRL != 0 && (time - tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRLexited_BEREIT_FH_TUERMODUL_CTRL == 1)) && ((FH_TUERMODUL__MFHZ || FH_TUERMODUL__MFHA)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL_CTRL__N = FH_TUERMODUL_CTRL__N + 1;
|
|
|
|
A_FH_TUERMODUL_CTRL_next_state = 1;
|
|
SYS_bit_set (Bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX);
|
|
WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
switch (WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state)
|
|
{
|
|
case 1 : /** state WDHSP in chart FH_TUERMODUL_CTRL **/
|
|
{
|
|
if ((step == 1 && tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL != 0 && (time - tm_entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL == 3)) && (((!(FH_TUERMODUL__MFHZ || FH_TUERMODUL__MFHA)) && FH_TUERMODUL_CTRL__N > 0)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL_CTRL__N = FH_TUERMODUL_CTRL__N - 1;
|
|
|
|
WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
SYS_bit_set (Bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX);
|
|
WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
}/** switch WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state **/
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL_CTRL__N = 0;
|
|
A_FH_TUERMODUL_CTRL_next_state = 1;
|
|
SYS_bit_set (Bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX);
|
|
WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
}/** switch A_FH_TUERMODUL_CTRL_next_state **/
|
|
SYS_bit_cpy(Bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX, Bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_IDX);
|
|
SYS_bit_cpy (Bitlist, exited_BEREIT_FH_TUERMODUL_CTRL_copy_IDX, Bitlist, exited_BEREIT_FH_TUERMODUL_CTRL_IDX);
|
|
}
|
|
}
|
|
|
|
void generic_EINKLEMMSCHUTZ_CTRL(void)
|
|
{
|
|
if (SYS_bit_get(Bitlist,active_EINKLEMMSCHUTZ_CTRL_IDX))
|
|
{
|
|
switch (EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state)
|
|
{
|
|
case 1 : /** state NORMALBETRIEB in chart EINKLEMMSCHUTZ_CTRL **/
|
|
{
|
|
if (((FH_TUERMODUL__EKS_LEISTE_AKTIV && !(FH_TUERMODUL__EKS_LEISTE_AKTIV_old))) && ((!(FH_TUERMODUL__SFHZ && FH_TUERMODUL__SFHA))))
|
|
{
|
|
stable = 0;
|
|
|
|
SYS_bit_set (Bitlist, FH_TUERMODUL__EINKLEMMUNG_IDX);
|
|
EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state = 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case 2 : /** state EINKLEMMUNG in chart EINKLEMMSCHUTZ_CTRL **/
|
|
{
|
|
SYS_bit_clr (Bitlist, FH_TUERMODUL__EINKLEMMUNG_IDX);
|
|
if ((!(FH_TUERMODUL__EKS_LEISTE_AKTIV) && FH_TUERMODUL__EKS_LEISTE_AKTIV_old))
|
|
{
|
|
stable = 0;
|
|
|
|
EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
}/** switch EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state **/
|
|
}
|
|
}
|
|
|
|
void generic_BLOCK_ERKENNUNG_CTRL(void)
|
|
{
|
|
if (!SYS_bit_get(Bitlist, active_BLOCK_ERKENNUNG_CTRL_IDX) && SYS_bit_get(Bitlist,active_BLOCK_ERKENNUNG_CTRL_old_IDX) && !SYS_bit_get(Bitlist,active_BLOCK_ERKENNUNG_CTRL_copy_IDX))
|
|
{
|
|
SYS_bit_clr (Bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX);
|
|
}
|
|
if (SYS_bit_get(Bitlist,active_BLOCK_ERKENNUNG_CTRL_IDX))
|
|
{
|
|
switch (BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state)
|
|
{
|
|
case 1 : /** state KEINE_BEWEGUNG in chart BLOCK_ERKENNUNG_CTRL **/
|
|
{
|
|
if ((FH_TUERMODUL__I_EIN != FH_TUERMODUL__I_EIN_old) && ((FH_TUERMODUL__I_EIN > 0)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__BLOCK_copy = 0;
|
|
|
|
BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state = 2;
|
|
BLOCK_ERKENNUNG_CTRL__N = 0;
|
|
BLOCK_ERKENNUNG_CTRL__I_EIN_MAX = 2;
|
|
BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state = 3;
|
|
SYS_bit_set (Bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case 2 : /** state BEWEGUNG in chart BLOCK_ERKENNUNG_CTRL **/
|
|
{
|
|
if ((!(FH_TUERMODUL__MFHA) && FH_TUERMODUL__MFHA_old) || (!(FH_TUERMODUL__MFHZ) && FH_TUERMODUL__MFHZ_old))
|
|
{
|
|
stable = 0;
|
|
|
|
BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state = 1;
|
|
BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state = 0;
|
|
break;
|
|
}
|
|
switch (BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state)
|
|
{
|
|
case 1 : /** state FENSTER_BLOCKIERT in chart BLOCK_ERKENNUNG_CTRL **/
|
|
{
|
|
break;
|
|
}
|
|
case 2 : /** state FENSTER_BEWEGT_SICH in chart BLOCK_ERKENNUNG_CTRL **/
|
|
{
|
|
if ((FH_TUERMODUL__I_EIN > (BLOCK_ERKENNUNG_CTRL__I_EIN_MAX - 2)))
|
|
{
|
|
stable = 0;
|
|
FH_TUERMODUL__BLOCK_copy = 1;
|
|
|
|
BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case 3 : /** state EINSCHALTSTROM_MESSEN in chart BLOCK_ERKENNUNG_CTRL **/
|
|
{
|
|
SYS_bit_clr (Bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX);
|
|
if ((BLOCK_ERKENNUNG_CTRL__N == 11 && !(BLOCK_ERKENNUNG_CTRL__N_old == 11)))
|
|
{
|
|
stable = 0;
|
|
|
|
BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state = 2;
|
|
break;
|
|
}
|
|
/** static reactions: **/
|
|
if (BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state == 3)
|
|
{
|
|
if (step == 1 && tm_entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRLch_BLOCK_ERKENNUNG_CTRL__N_copy != 0 && (time - tm_entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRLch_BLOCK_ERKENNUNG_CTRL__N_copy == 0.002))
|
|
{
|
|
BLOCK_ERKENNUNG_CTRL__N = BLOCK_ERKENNUNG_CTRL__N + 1;
|
|
if ((FH_TUERMODUL__I_EIN > BLOCK_ERKENNUNG_CTRL__I_EIN_MAX))
|
|
{
|
|
BLOCK_ERKENNUNG_CTRL__I_EIN_MAX = FH_TUERMODUL__I_EIN;
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
/** end static reactions **/
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
BLOCK_ERKENNUNG_CTRL__N = 0;
|
|
BLOCK_ERKENNUNG_CTRL__I_EIN_MAX = 2;
|
|
BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state = 3;
|
|
SYS_bit_set (Bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX);
|
|
break;
|
|
}
|
|
}/** switch BEWEGUNG_BLOCK_ERKENNUNG_CTRL_next_state **/
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state = 1;
|
|
break;
|
|
}
|
|
}/** switch BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state **/
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void FH_DU(void)
|
|
{
|
|
time = 1; /**SYS_get_clock()**/
|
|
stable = 0;
|
|
step = 0;
|
|
while (!stable)
|
|
{
|
|
stable = 1;
|
|
step++;
|
|
{
|
|
switch (FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state)
|
|
{
|
|
case 1 : /** state SCHLIESSEN in chart FH_STEUERUNG_DUMMY **/
|
|
{
|
|
if ((!(FH_DU__MFHZ) && FH_DU__MFHZ_old))
|
|
{
|
|
stable = 0;
|
|
FH_DU__MFH = 0;
|
|
|
|
FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state = 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case 2 : /** state BEREIT in chart FH_STEUERUNG_DUMMY **/
|
|
{
|
|
if ((FH_DU__MFHZ && !(FH_DU__MFHZ_old)))
|
|
{
|
|
stable = 0;
|
|
FH_DU__MFH = -100;
|
|
|
|
FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state = 1;
|
|
break;
|
|
}
|
|
if ((FH_DU__MFHA && !(FH_DU__MFHA_old)))
|
|
{
|
|
stable = 0;
|
|
FH_DU__MFH = 100;
|
|
|
|
FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state = 3;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case 3 : /** state OEFFNEN in chart FH_STEUERUNG_DUMMY **/
|
|
{
|
|
if ((!(FH_DU__MFHA) && FH_DU__MFHA_old))
|
|
{
|
|
stable = 0;
|
|
FH_DU__MFH = 0;
|
|
|
|
FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state = 2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
stable = 0;
|
|
FH_DU__MFH = 0;
|
|
FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state = 2;
|
|
break;
|
|
}
|
|
}/** switch FH_STEUERUNG_DUMMY_FH_STEUERUNG_DUMMY_next_state **/
|
|
}
|
|
{
|
|
{
|
|
if (!SYS_bit_get(Bitlist, active_KINDERSICHERUNG_CTRL_IDX))
|
|
{
|
|
KINDERSICHERUNG_CTRL_KINDERSICHERUNG_CTRL_next_state = 3;
|
|
}
|
|
SYS_bit_clr(Bitlist, active_KINDERSICHERUNG_CTRL_copy_IDX);
|
|
if (!SYS_bit_get(Bitlist, active_EINKLEMMSCHUTZ_CTRL_IDX))
|
|
{
|
|
EINKLEMMSCHUTZ_CTRL_EINKLEMMSCHUTZ_CTRL_next_state = 1;
|
|
}
|
|
SYS_bit_clr(Bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX);
|
|
if (!SYS_bit_get(Bitlist, active_BLOCK_ERKENNUNG_CTRL_IDX))
|
|
{
|
|
SYS_bit_clr (Bitlist, entered_EINSCHALTSTROM_MESSEN_BLOCK_ERKENNUNG_CTRL_IDX);
|
|
BLOCK_ERKENNUNG_CTRL_BLOCK_ERKENNUNG_CTRL_next_state = 1;
|
|
}
|
|
SYS_bit_clr(Bitlist, active_BLOCK_ERKENNUNG_CTRL_copy_IDX);
|
|
if (!SYS_bit_get(Bitlist, active_FH_TUERMODUL_CTRL_IDX))
|
|
{
|
|
SYS_bit_clr (Bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_IDX);
|
|
SYS_bit_clr (Bitlist, exited_BEREIT_FH_TUERMODUL_CTRL_IDX);
|
|
B_FH_TUERMODUL_CTRL_next_state = 2;
|
|
FH_TUERMODUL_CTRL__N = 0;
|
|
A_FH_TUERMODUL_CTRL_next_state = 1;
|
|
SYS_bit_set (Bitlist, entered_WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_copy_IDX);
|
|
WIEDERHOLSPERRE_FH_TUERMODUL_CTRL_next_state = 1;
|
|
}
|
|
SYS_bit_clr(Bitlist, active_FH_TUERMODUL_CTRL_copy_IDX);
|
|
SYS_bit_set(Bitlist, active_KINDERSICHERUNG_CTRL_copy_IDX);
|
|
SYS_bit_set(Bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX);
|
|
SYS_bit_set(Bitlist, active_BLOCK_ERKENNUNG_CTRL_copy_IDX);
|
|
SYS_bit_set(Bitlist, active_FH_TUERMODUL_CTRL_copy_IDX);
|
|
/** static reactions: **/
|
|
if (FH_DU__S_FH_TMBFZUCAN != FH_DU__S_FH_TMBFZUCAN_old)
|
|
{
|
|
if ((!FH_DU__DOOR_ID))
|
|
{
|
|
FH_DU__S_FH_FTZU = FH_DU__S_FH_TMBFZUCAN;
|
|
|
|
}
|
|
|
|
}
|
|
if (FH_DU__S_FH_TMBFZUDISC != FH_DU__S_FH_TMBFZUDISC_old)
|
|
{
|
|
if (FH_DU__DOOR_ID)
|
|
{
|
|
FH_DU__S_FH_TMBFZUCAN = FH_DU__S_FH_TMBFZUDISC;
|
|
|
|
}
|
|
|
|
}
|
|
if (FH_DU__S_FH_TMBFAUFCAN != FH_DU__S_FH_TMBFAUFCAN_old)
|
|
{
|
|
if ((!FH_DU__DOOR_ID))
|
|
{
|
|
FH_DU__S_FH_FTAUF = FH_DU__S_FH_TMBFAUFCAN;
|
|
|
|
}
|
|
|
|
}
|
|
if (FH_DU__S_FH_TMBFAUFDISC != FH_DU__S_FH_TMBFAUFDISC_old)
|
|
{
|
|
if (FH_DU__DOOR_ID)
|
|
{
|
|
FH_DU__S_FH_TMBFAUFCAN = FH_DU__S_FH_TMBFAUFDISC;
|
|
|
|
}
|
|
|
|
}
|
|
/** end static reactions **/
|
|
}
|
|
}
|
|
SYS_bit_cpy(Bitlist, active_KINDERSICHERUNG_CTRL_IDX, Bitlist, active_KINDERSICHERUNG_CTRL_old_IDX);
|
|
SYS_bit_cpy(Bitlist, active_FH_TUERMODUL_CTRL_IDX, Bitlist, active_FH_TUERMODUL_CTRL_old_IDX);
|
|
SYS_bit_cpy(Bitlist, active_EINKLEMMSCHUTZ_CTRL_IDX, Bitlist, active_EINKLEMMSCHUTZ_CTRL_old_IDX);
|
|
SYS_bit_cpy(Bitlist, active_BLOCK_ERKENNUNG_CTRL_IDX, Bitlist, active_BLOCK_ERKENNUNG_CTRL_old_IDX);
|
|
FH_TUERMODUL__SFHA_MEC = FH_DU__S_FH_AUFDISC;
|
|
FH_TUERMODUL__SFHA_ZENTRAL = FH_DU__S_FH_FTAUF;
|
|
FH_TUERMODUL__SFHZ_MEC = FH_DU__S_FH_ZUDISC;
|
|
FH_TUERMODUL__SFHZ_ZENTRAL = FH_DU__S_FH_FTZU;
|
|
|
|
generic_KINDERSICHERUNG_CTRL();
|
|
|
|
FH_DU__MFHA = FH_TUERMODUL__MFHA;
|
|
FH_DU__MFHZ = FH_TUERMODUL__MFHZ;
|
|
FH_DU__I_EIN = FH_TUERMODUL__I_EIN;
|
|
FH_DU__EKS_LEISTE_AKTIV = FH_TUERMODUL__EKS_LEISTE_AKTIV;
|
|
FH_DU__POSITION = FH_TUERMODUL__POSITION;
|
|
FH_DU__FT = FH_TUERMODUL__FT;
|
|
FH_DU__S_FH_AUFDISC = FH_TUERMODUL__SFHA_MEC;
|
|
FH_DU__S_FH_FTAUF = FH_TUERMODUL__SFHA_ZENTRAL;
|
|
FH_DU__S_FH_ZUDISC = FH_TUERMODUL__SFHZ_MEC;
|
|
FH_DU__S_FH_FTZU = FH_TUERMODUL__SFHZ_ZENTRAL;
|
|
FH_DU__KL_50 = FH_TUERMODUL__KL_50;
|
|
FH_DU__BLOCK = FH_TUERMODUL__BLOCK;
|
|
|
|
FH_TUERMODUL__SFHA_MEC = FH_DU__S_FH_AUFDISC;
|
|
FH_TUERMODUL__SFHA_ZENTRAL = FH_DU__S_FH_FTAUF;
|
|
FH_TUERMODUL__SFHZ_MEC = FH_DU__S_FH_ZUDISC;
|
|
FH_TUERMODUL__SFHZ_ZENTRAL = FH_DU__S_FH_FTZU;
|
|
|
|
generic_FH_TUERMODUL_CTRL();
|
|
|
|
FH_DU__MFHA = FH_TUERMODUL__MFHA;
|
|
FH_DU__MFHZ = FH_TUERMODUL__MFHZ;
|
|
FH_DU__I_EIN = FH_TUERMODUL__I_EIN;
|
|
FH_DU__EKS_LEISTE_AKTIV = FH_TUERMODUL__EKS_LEISTE_AKTIV;
|
|
FH_DU__POSITION = FH_TUERMODUL__POSITION;
|
|
FH_DU__FT = FH_TUERMODUL__FT;
|
|
FH_DU__S_FH_AUFDISC = FH_TUERMODUL__SFHA_MEC;
|
|
FH_DU__S_FH_FTAUF = FH_TUERMODUL__SFHA_ZENTRAL;
|
|
FH_DU__S_FH_ZUDISC = FH_TUERMODUL__SFHZ_MEC;
|
|
FH_DU__S_FH_FTZU = FH_TUERMODUL__SFHZ_ZENTRAL;
|
|
FH_DU__KL_50 = FH_TUERMODUL__KL_50;
|
|
FH_DU__BLOCK = FH_TUERMODUL__BLOCK;
|
|
|
|
FH_TUERMODUL__SFHA_MEC = FH_DU__S_FH_AUFDISC;
|
|
FH_TUERMODUL__SFHA_ZENTRAL = FH_DU__S_FH_FTAUF;
|
|
FH_TUERMODUL__SFHZ_MEC = FH_DU__S_FH_ZUDISC;
|
|
FH_TUERMODUL__SFHZ_ZENTRAL = FH_DU__S_FH_FTZU;
|
|
|
|
generic_EINKLEMMSCHUTZ_CTRL();
|
|
|
|
FH_DU__MFHA = FH_TUERMODUL__MFHA;
|
|
FH_DU__MFHZ = FH_TUERMODUL__MFHZ;
|
|
FH_DU__I_EIN = FH_TUERMODUL__I_EIN;
|
|
FH_DU__EKS_LEISTE_AKTIV = FH_TUERMODUL__EKS_LEISTE_AKTIV;
|
|
FH_DU__POSITION = FH_TUERMODUL__POSITION;
|
|
FH_DU__FT = FH_TUERMODUL__FT;
|
|
FH_DU__S_FH_AUFDISC = FH_TUERMODUL__SFHA_MEC;
|
|
FH_DU__S_FH_FTAUF = FH_TUERMODUL__SFHA_ZENTRAL;
|
|
FH_DU__S_FH_ZUDISC = FH_TUERMODUL__SFHZ_MEC;
|
|
FH_DU__S_FH_FTZU = FH_TUERMODUL__SFHZ_ZENTRAL;
|
|
FH_DU__KL_50 = FH_TUERMODUL__KL_50;
|
|
FH_DU__BLOCK = FH_TUERMODUL__BLOCK;
|
|
|
|
FH_TUERMODUL__SFHA_MEC = FH_DU__S_FH_AUFDISC;
|
|
FH_TUERMODUL__SFHA_ZENTRAL = FH_DU__S_FH_FTAUF;
|
|
FH_TUERMODUL__SFHZ_MEC = FH_DU__S_FH_ZUDISC;
|
|
FH_TUERMODUL__SFHZ_ZENTRAL = FH_DU__S_FH_FTZU;
|
|
|
|
generic_BLOCK_ERKENNUNG_CTRL();
|
|
|
|
FH_DU__MFHA = FH_TUERMODUL__MFHA;
|
|
FH_DU__MFHZ = FH_TUERMODUL__MFHZ;
|
|
FH_DU__I_EIN = FH_TUERMODUL__I_EIN;
|
|
FH_DU__EKS_LEISTE_AKTIV = FH_TUERMODUL__EKS_LEISTE_AKTIV;
|
|
FH_DU__POSITION = FH_TUERMODUL__POSITION;
|
|
FH_DU__FT = FH_TUERMODUL__FT;
|
|
FH_DU__S_FH_AUFDISC = FH_TUERMODUL__SFHA_MEC;
|
|
FH_DU__S_FH_FTAUF = FH_TUERMODUL__SFHA_ZENTRAL;
|
|
FH_DU__S_FH_ZUDISC = FH_TUERMODUL__SFHZ_MEC;
|
|
FH_DU__S_FH_FTZU = FH_TUERMODUL__SFHZ_ZENTRAL;
|
|
FH_DU__KL_50 = FH_TUERMODUL__KL_50;
|
|
FH_DU__BLOCK = FH_TUERMODUL__BLOCK;
|
|
|
|
SYS_bit_cpy(Bitlist, active_KINDERSICHERUNG_CTRL_copy_IDX, Bitlist, active_KINDERSICHERUNG_CTRL_IDX);
|
|
SYS_bit_cpy(Bitlist, active_FH_TUERMODUL_CTRL_copy_IDX, Bitlist, active_FH_TUERMODUL_CTRL_IDX);
|
|
SYS_bit_cpy(Bitlist, active_EINKLEMMSCHUTZ_CTRL_copy_IDX, Bitlist, active_EINKLEMMSCHUTZ_CTRL_IDX);
|
|
SYS_bit_cpy(Bitlist, active_BLOCK_ERKENNUNG_CTRL_copy_IDX, Bitlist, active_BLOCK_ERKENNUNG_CTRL_IDX);
|
|
FH_TUERMODUL_CTRL__N_old = FH_TUERMODUL_CTRL__N;
|
|
FH_TUERMODUL__I_EIN_old = FH_TUERMODUL__I_EIN;
|
|
FH_DU__MFH = FH_DU__MFH_copy;
|
|
FH_DU__I_EIN_old = FH_DU__I_EIN;
|
|
BLOCK_ERKENNUNG_CTRL__N_old = BLOCK_ERKENNUNG_CTRL__N;
|
|
FH_TUERMODUL__SFHZ_ZENTRAL_old = FH_TUERMODUL__SFHZ_ZENTRAL;
|
|
FH_TUERMODUL__SFHZ_MEC_old = FH_TUERMODUL__SFHZ_MEC;
|
|
FH_TUERMODUL__SFHA_ZENTRAL_old = FH_TUERMODUL__SFHA_ZENTRAL;
|
|
FH_TUERMODUL__SFHA_MEC_old = FH_TUERMODUL__SFHA_MEC;
|
|
FH_TUERMODUL__BLOCK = FH_TUERMODUL__BLOCK_copy;
|
|
FH_TUERMODUL__BLOCK_old = FH_TUERMODUL__BLOCK;
|
|
FH_TUERMODUL__SFHZ = FH_TUERMODUL__SFHZ_copy;
|
|
FH_TUERMODUL__SFHZ_old = FH_TUERMODUL__SFHZ;
|
|
FH_TUERMODUL__SFHA = FH_TUERMODUL__SFHA_copy;
|
|
FH_TUERMODUL__SFHA_old = FH_TUERMODUL__SFHA;
|
|
FH_TUERMODUL__MFHZ = FH_TUERMODUL__MFHZ_copy;
|
|
FH_TUERMODUL__MFHZ_old = FH_TUERMODUL__MFHZ;
|
|
FH_TUERMODUL__MFHA = FH_TUERMODUL__MFHA_copy;
|
|
FH_TUERMODUL__MFHA_old = FH_TUERMODUL__MFHA;
|
|
FH_TUERMODUL__EKS_LEISTE_AKTIV_old = FH_TUERMODUL__EKS_LEISTE_AKTIV;
|
|
FH_DU__EKS_LEISTE_AKTIV_old = FH_DU__EKS_LEISTE_AKTIV;
|
|
FH_DU__S_FH_TMBFAUFCAN_old = FH_DU__S_FH_TMBFAUFCAN;
|
|
FH_DU__S_FH_TMBFZUCAN_old = FH_DU__S_FH_TMBFZUCAN;
|
|
FH_DU__S_FH_TMBFZUDISC_old = FH_DU__S_FH_TMBFZUDISC;
|
|
FH_DU__S_FH_TMBFAUFDISC_old = FH_DU__S_FH_TMBFAUFDISC;
|
|
FH_DU__BLOCK = FH_DU__BLOCK_copy;
|
|
FH_DU__BLOCK_old = FH_DU__BLOCK;
|
|
FH_DU__MFHZ = FH_DU__MFHZ_copy;
|
|
FH_DU__MFHZ_old = FH_DU__MFHZ;
|
|
FH_DU__MFHA = FH_DU__MFHA_copy;
|
|
FH_DU__MFHA_old = FH_DU__MFHA;
|
|
|
|
}/** while(!stable) **/
|
|
|
|
}/** FH_DU **/
|
|
|
|
|
|
|
|
int main(void)
|
|
{
|
|
init();
|
|
interface();
|
|
FH_DU();
|
|
|
|
return 0;
|
|
}
|