Blame | Last modification | View Log | Download
CP_VRS AI: 17.2.1 DBGEN: 16.0 Conv expand INI:0 DATE: Fri Feb 16 10:47:07 2007 CONCEPT_2.6 SR1////CL_DFB GloDFB C:\CONCEPT\DFB\ WR_SPL "01/10/07 14:35:43" TEXT:CP_DFB "WR_SPL" HEIGHT/WIDTH: 10 10 FBTK_DFB "01/10/07 14:35:43" TEXT:...TXF Wachtrij Filter Spoelen...TXT...TXT Functie:...TXT -Nieuwe_Spoelaanvraag: 'spoelnummer' opbouw xyy waarbij x=prioriteit(tip,troebelheid,auto) yy=filternummer...TXT de spoelaanvragen worden gesorteerd op prioriteit en volgorde van aanvraag....TXT -Spoelvoorwaarden_en_aanvragen: in deze sectie wordt uit de wachtrij de...TXT aanvragen omgezet in een spoelcommando....TXT...TXT Input/output:...TXT SplAanvr - aanvraag spoelen filters...TXT Vrijgave - vrijgave voor de wachtrij...TXT StatSpl - status spoelen van de filters...TXT Wachttyd - wachttijd tussen 2 filters...TXT Cmd_Spl - spoelcommando array...TXT Wachtrij - de wachtrij van alle aanvragen...TXT Spoel_nr - het nummer van het spoelende filter (xyy x=prio, yy=filter nummer)...TXT Filt_nr - filter nummer van het spoelende filter...TXT Resttyd - wachttijd resttijd tussen 2 filters...TXT...TXT...TXTCP_STR local CRC: 2527521148 "04/25/02 11:32:03"...STR TYPE...STR...STR BoolArr2: ARRAY [1..2] OF BOOL;...STR BoolArr4: ARRAY [1..4] OF BOOL;...STR BoolArr5: ARRAY [1..5] OF BOOL;...STR BoolArr8: ARRAY [1..8] OF BOOL;...STR BoolArr9: ARRAY [1..9] OF BOOL;...STR BoolArr12: ARRAY [1..12] OF BOOL;...STR BoolArr16: ARRAY [1..16] OF BOOL;...STR BoolArr36: ARRAY [1..36] OF BOOL;...STR...STR IntArr2: ARRAY [1..2] OF INT;...STR IntArr3: ARRAY [1..3] OF INT;...STR IntArr4: ARRAY [1..4] OF INT;...STR IntArr5: ARRAY [1..5] OF INT;...STR IntArr6: ARRAY [1..6] OF INT;...STR IntArr7: ARRAY [1..7] OF INT;...STR IntArr8: ARRAY [1..8] OF INT;...STR IntArr9: ARRAY [1..9] OF INT;...STR IntArr10: ARRAY [1..10] OF INT;...STR IntArr15: ARRAY [1..15] OF INT;...STR IntArr16: ARRAY [1..16] OF INT;...STR IntArr20: ARRAY [1..20] OF INT;...STR IntArr30: ARRAY [1..30] OF INT;...STR IntArr32: ARRAY [1..32] OF INT;...STR IntArr36: ARRAY [1..36] OF INT;...STR...STR WordArr6: ARRAY [1..6] OF WORD;...STR WordArr8: ARRAY [1..8] OF WORD;...STR WordArr16: ARRAY [1..16] OF WORD;...STR WordArr32: ARRAY [1..32] OF WORD;...STR WordArr36: ARRAY [1..36] OF WORD;...STR...STR DintArr16: ARRAY [1..16] OF DINT;...STR...STR RealArr16: ARRAY [1..16] OF REAL;...STR...STR...STR (* ------------------ data structuren ----------------------- *)...STR...STR KLOK_struc: (* tijd structuur klok *)...STR STRUCT...STR weekdag: INT; (* dag van de week 1..7 1=zondag *)...STR maand: INT; (* maand 1..12 *)...STR dag: INT; (* Dag van de maand 1..31 *)...STR jaar: INT; (* jaartal 00..99 *)...STR uur: INT; (* uur 0..23 *)...STR minuut: INT; (* minuut 0..59 *)...STR seconde: INT; (* seconde 0..59 *)...STR END_STRUCT;...STR...STR END_TYPE...STRCP_STR global CRC: 3719627535 "01/10/03 09:24:12"...STR TYPE...STR...STR TODDTY: (*Klok informatie*)...STR STRUCT...STR DagVanWeek : BYTE ;...STR Maand : BYTE ;...STR Dag : BYTE ;...STR Jaar : BYTE ;...STR Uur : BYTE ;...STR Minuut : BYTE ;...STR Sec : BYTE ;...STR END_STRUCT;...STR...STR...STR...STR Mot_reg: (* Motor uren registratie *)...STR STRUCT...STR Draaitijd_HD : INT ;...STR Draaitijd_VD : INT ;...STR Draaitijd_Tot : DINT ;...STR Aantal_Starts : DINT ;...STR END_STRUCT;...STR...STR Registratie_MOT:...STR ARRAY [0..3] OF Mot_reg;...STR...STR DWA_Inst: (* DWA Instellingen *)...STR STRUCT...STR TM_tijd : TIME ;...STR Klep_TM_tijd : TIME ;...STR Looptijd : TIME ;...STR Blokeer_tijd : TIME ;...STR Max_freq_tijd : TIME ;...STR Max_toeren_DWA : REAL ;...STR Min_toeren_DWA : REAL ;...STR END_STRUCT;...STR...STR Instellingen_DWA:...STR ARRAY [0..0] OF DWA_Inst;...STR...STR RWA1_Inst: (* RWA1 Instellingen *)...STR STRUCT...STR TM_tijd : TIME ;...STR Klep_TM_tijd : TIME ;...STR Looptijd : TIME ;...STR Blokeer_tijd : TIME ;...STR Max_freq_tijd : TIME ;...STR Max_toeren_RWA1 : REAL ;...STR Min_toeren_RWA1 : REAL ;...STR END_STRUCT;...STR...STR Instellingen_RWA1:...STR ARRAY [0..0] OF RWA1_Inst;...STR...STR RWA2_Inst: (* RWA2 Instellingen *)...STR STRUCT...STR TM_tijd : TIME ;...STR Klep_TM_tijd : TIME ;...STR Looptijd : TIME ;...STR Blokeer_tijd : TIME ;...STR Max_freq_tijd : TIME ;...STR Max_toeren_RWA2 : REAL ;...STR Min_toeren_RWA2 : REAL ;...STR END_STRUCT;...STR...STR Instellingen_RWA2:...STR ARRAY [0..0] OF RWA2_Inst;...STR...STR Toevoerschuif_Inst: (* Toevoerschuif Instellingen *)...STR STRUCT...STR TM_tijd : TIME;...STR Looptijd : TIME;...STR END_STRUCT;...STR...STR Inst_Toevoerschuif:...STR ARRAY [0..0] OF Toevoerschuif_Inst;...STR...STR Debiet_Inst: (* Debiet Instellingen *)...STR STRUCT...STR Minimaal_Deb_DWA : REAL ;...STR Minimaal_Deb_RWA : REAL ;...STR Hoog_Debiet : REAL ;...STR Min_Deb_tijd_DWA : TIME ;...STR Min_Deb_tijd_RWA : TIME ;...STR Hoog_Debiet_tijd : TIME ;...STR Lage_scaling : REAL ;...STR Hoge_scaling : REAL ;...STR END_STRUCT;...STR...STR Instellingen_Debiet:...STR ARRAY [0..0] OF Debiet_Inst;...STR...STR Vlotter_Inst: (* Hoogwater vlotter Instellingen *)...STR STRUCT...STR Hoogwater_tijd : TIME ;...STR END_STRUCT;...STR...STR Instellingen_Vlotter:...STR ARRAY [0..0] OF Vlotter_Inst;...STR...STR WOV_Inst: (* Water op de vloer detectie Instellingen *)...STR STRUCT...STR WOV_tijd : TIME ;...STR END_STRUCT;...STR...STR Instellingen_WOV:...STR ARRAY [0..0] OF WOV_Inst;...STR...STR Inst_Nivo: (* Instellingen niveau meting *)...STR STRUCT...STR Start_DWA : REAL ;...STR Start_RWA : REAL ;...STR Max_toeren_RWA : REAL ;...STR Max_toeren_Hyst : REAL ;...STR Stop_Pompen : REAL ;...STR Hoogwater_nivo : REAL ;...STR Laagwater_nivo : REAL ;...STR Hoogwater_tijd : TIME ;...STR L_H_water_Hyst : REAL ;...STR Lage_scaling : REAL ;...STR Hoge_scaling : REAL ;...STR Overstort_NAP : REAL ;...STR Overstort_Hyst : REAL ;...STR BOK_AANVOERBUIS : REAL ;...STR BBK_AANVOERBUIS : REAL ;...STR END_STRUCT;...STR...STR Inst_Nivometing:...STR ARRAY [0..0] OF Inst_Nivo;...STR...STR Reg_Debiet: (* Registratie debietmeting *)...STR STRUCT...STR Debiet_HD : INT ;...STR Debiet_VD : INT ;...STR Debiet_HM : DINT ;...STR Debiet_VM : DINT ;...STR Debiet_Tot : DINT ;...STR END_STRUCT;...STR...STR Registratie_Debiet:...STR ARRAY [0..1] OF Reg_debiet;...STR...STR Reg_Nivo: (* Registratie Niveaumeting *)...STR STRUCT...STR Aantal_Overstorten : INT ;...STR Overstort_tijd_min : DINT ;...STR END_STRUCT;...STR...STR Registratie_Nivo:...STR ARRAY [0..0] OF Reg_Nivo;...STR...STR END_TYPE...STRCP_OPT 25 100 INI:0 IEC NotAs LPCL_FRM "Vrijgave" ID_15 SHOW POSL 4 FP_IO_INPUT FP_INP_NORMAL FP_LOC_OUTSIDE BOOL TEXT: Vrijgave om te mogen spoelenCL_FRM "StatSpl" ID_16 SHOW POSL 5 FP_IO_INPUT FP_INP_NORMAL FP_LOC_OUTSIDE BOOL TEXT: Spoelprogramma aan het spoelenCL_FRM "Wachttyd" ID_22 SHOW POSL 8 FP_IO_INPUT FP_INP_NORMAL FP_LOC_OUTSIDE INT TEXT: BlokkeertijdCL_FRM "Resttyd" ID_27 SHOW POSR 8 FP_IO_OUTPUT FP_OUTP_NORMAL FP_LOC_OUTSIDE INT TEXT: Wachttijd resttijdCL_FRM "Cmd_Spl" ID_38 SHOW POSR 2 FP_IO_OUTPUT FP_OUTP_CARRY_STATE FP_LOC_OUTSIDE BoolArr32 TEXT: Commando spoelen arrayCL_FRM "Spoel_nr" ID_42 SHOW POSR 5 FP_IO_OUTPUT FP_OUTP_CARRY_STATE FP_LOC_OUTSIDE INT TEXT: Spoel nummerCL_FRM "Filt_nr" ID_45 SHOW POSR 6 FP_IO_OUTPUT FP_OUTP_NORMAL FP_LOC_OUTSIDE INT TEXT: Het nummer van het spoelende filterVS_FFB "TP" ANYPIN_NO FBTK_EFB HEIGHT/WIDTH: 5 5 "03/24/97 14:20:55" NR_FORMP: 5VS_FRM "IN" SHOW POSL 2 FP_IO_INPUT FP_INP_NORMAL FP_LOC_OUTSIDE BOOL TEXT:VS_FRM "PT" SHOW POSL 3 FP_IO_INPUT FP_INP_NORMAL FP_LOC_OUTSIDE TIME TEXT:VS_FRM "Istate" SHOW POSR 1 FP_IO_OUTPUT FP_OUTP_INTERN_STATE FP_LOC_HIDDEN INTSTATE VAL: 5 TEXT:VS_FRM "Q" SHOW POSR 2 FP_IO_OUTPUT FP_OUTP_CARRY_STATE FP_LOC_OUTSIDE BOOL TEXT:VS_FRM "ET" SHOW POSR 3 FP_IO_OUTPUT FP_OUTP_CARRY_STATE FP_LOC_OUTSIDE TIME TEXT:VS_FFB "F_TRIG" ANYPIN_NO FBTK_EFB HEIGHT/WIDTH: 4 5 "03/24/97 14:20:55" NR_FORMP: 3VS_FRM "CLK" SHOW POSL 2 FP_IO_INPUT FP_INP_NORMAL FP_LOC_OUTSIDE BOOL TEXT:VS_FRM "Istate" SHOW POSR 1 FP_IO_OUTPUT FP_OUTP_INTERN_STATE FP_LOC_HIDDEN INTSTATE VAL: 1 TEXT:VS_FRM "Q" SHOW POSR 2 FP_IO_OUTPUT FP_OUTP_NORMAL FP_LOC_OUTSIDE BOOL TEXT:VS_FFB "TIME_MUL_INT" ANYPIN_NO FBTK_EFB_FUNCT HEIGHT/WIDTH: 5 8 "03/24/97 14:20:55" NR_FORMP: 3VS_FRM "IN1" HIDE POSL 2 FP_IO_INPUT FP_INP_NORMAL FP_LOC_OUTSIDE TIME TEXT:VS_FRM "IN2" HIDE POSL 3 FP_IO_INPUT FP_INP_NORMAL FP_LOC_OUTSIDE INT TEXT:VS_FRM "OUT" HIDE POSR 2 FP_IO_OUTPUT FP_OUTP_NORMAL FP_LOC_OUTSIDE TIME TEXT:VS_FFB "TIME_TO_REAL" ANYPIN_NO FBTK_EFB_FUNCT HEIGHT/WIDTH: 4 8 "03/24/97 14:20:55" NR_FORMP: 2VS_FRM "IN" HIDE POSL 2 FP_IO_INPUT FP_INP_NORMAL FP_LOC_OUTSIDE TIME TEXT:VS_FRM "OUT" HIDE POSR 2 FP_IO_OUTPUT FP_OUTP_NORMAL FP_LOC_OUTSIDE REAL TEXT:VS_FFB "REAL_TO_INT" ANYPIN_NO FBTK_EFB_FUNCT HEIGHT/WIDTH: 4 8 "03/24/97 14:20:55" NR_FORMP: 2VS_FRM "IN" HIDE POSL 2 FP_IO_INPUT FP_INP_NORMAL FP_LOC_OUTSIDE REAL TEXT:VS_FRM "OUT" HIDE POSR 2 FP_IO_OUTPUT FP_OUTP_NORMAL FP_LOC_OUTSIDE INT TEXT:CP_GVS "Nieuwe_Spoelaanvraag" SECT_CTRL INIT: FALSE 0 EXP: FALSE RET: TRUE READONLY: FALSE MAS: FALSE TEXT:CP_GVS "Spoelvoorwaarden_en_aanvragen" SECT_CTRL INIT: FALSE 0 EXP: FALSE RET: TRUE READONLY: FALSE MAS: FALSE TEXT:CP_SEC "Nieuwe_Spoelaanvraag" SECTK_F_SECTION LANG_ST SVB: FALSE ID: 3 EXEC: 1 TEXT:CP__ST (* bepalen van een spoelnummer van een filter.*)CP__ST IF(index_aanvraag<32 OR index_aanvraag=0)THENCP__ST prioriteit := SplAanvr[index_aanvraag];CP__ST spoelnummer := (prioriteit * 100) + index_aanvraag;CP__ST (* spoelnummer =xyy waarbij x=prioriteit yy=filter nummer*)CP__ST index_aanvraag := index_aanvraag + 1;CP__ST ELSECP__ST index_aanvraag := 1;CP__ST END_IF;CP__STCP__ST (* het plaatsen van een nieuwe spoelaanvraag op de eerste vrije plaats van het array, of wijzigen van het prioriteitsnummer*)CP__ST IF((spoelnummer/100)<>0)THENCP__ST vulin := 1;CP__ST FOR pointer := 1 TO 32 DOCP__ST IF((rij[pointer] MOD 100)=(spoelnummer MOD 100))THENCP__ST IF((rij[pointer]<>spoelnummer) AND vulin)THEN (*wijzigen van het prioriteitsnummer*)CP__ST rij[pointer] := spoelnummer;CP__ST vulin := 0;CP__ST sorteer := 1;CP__ST ELSECP__ST vulin := 0;CP__ST END_IF;CP__ST ELSECP__ST IF(rij[pointer]=0 AND vulin)THEN (*nieuwe spoelaanvraag op de eerste vrije plaats van het array*)CP__ST rij[pointer] := spoelnummer;CP__ST vulin := 0;CP__ST sorteer := 1;CP__ST END_IF;CP__ST END_IF;CP__ST END_FOR;CP__ST END_IF;CP__STCP__ST (*het annuleren/verwijderen van een spoelaanvraag*)CP__ST IF((spoelnummer/100)=0)THENCP__ST schuifop := 0;CP__ST FOR pointer := 1 TO 32 DOCP__ST filteraanwezig := (rij[pointer] MOD 100)=(spoelnummer MOD 100); (*wijzigen/annuleren van het prioriteitsnummer*)CP__ST IF(filteraanwezig)THENCP__ST rij[pointer] := 0;CP__ST schuifop := 1;CP__ST sorteer := 1;CP__ST END_IF;CP__ST IF(schuifop AND pointer<32)THENCP__ST rij[pointer] := rij[pointer+1];CP__ST END_IF;CP__ST END_FOR;CP__ST END_IF;CP__STCP__ST (*sorteren van de wachtrij*)CP__ST pointer_1 := 1;CP__ST pointer_2 := 1;CP__ST pointer_3 := 1;CP__ST pointer_4 := 1;CP__ST pointer_5 := 1;CP__ST pointer_6 := 1;CP__ST IF(sorteer)THENCP__ST FOR pointer := 1 TO 32 DOCP__ST array_1[pointer] := 0;CP__ST array_2[pointer] := 0;CP__ST array_3[pointer] := 0;CP__ST array_4[pointer] := 0;CP__ST array_5[pointer] := 0;CP__ST array_6[pointer] := 0;CP__ST END_FOR;CP__ST sorteer := 0;CP__ST FOR pointer := 1 TO 32 DOCP__ST IF((rij[pointer]/100)=1)THEN (* filteren van alle aanvragen met prioriteit 1 *)CP__ST array_1[pointer_1] := rij[pointer];CP__ST pointer_1 := pointer_1 + 1;CP__ST END_IF;CP__ST IF((rij[pointer]/100)=2)THEN (* filteren van alle aanvragen met prioriteit 2 *)CP__ST array_2[pointer_2] := rij[pointer];CP__ST pointer_2 := pointer_2 + 1;CP__ST END_IF;CP__ST IF((rij[pointer]/100)=3)THEN (* filteren van alle aanvragen met prioriteit 3 *)CP__ST array_3[pointer_3] := rij[pointer];CP__ST pointer_3 := pointer_3 + 1;CP__ST END_IF;CP__ST IF((rij[pointer]/100)=4)THEN (* filteren van alle aanvragen met prioriteit 4 *)CP__ST array_4[pointer_4] := rij[pointer];CP__ST pointer_4 := pointer_4 + 1;CP__ST END_IF;CP__ST IF((rij[pointer]/100)=5)THEN (* filteren van alle aanvragen met prioriteit 5 *)CP__ST array_5[pointer_5] := rij[pointer];CP__ST pointer_5 := pointer_5 + 1;CP__ST END_IF;CP__ST IF((rij[pointer]/100)=6)THEN (* filteren van alle aanvragen met prioriteit 6 *)CP__ST array_6[pointer_6] := rij[pointer];CP__ST pointer_6 := pointer_6 + 1;CP__ST END_IF;CP__ST END_FOR;CP__ST pointer_c := 1;CP__ST einde := pointer_1 - 1;CP__ST FOR pointer := 1 TO einde DOCP__ST Wachtrij[pointer] := array_1[pointer_c];CP__ST pointer_c := pointer_c + 1;CP__ST END_FOR;CP__ST pointer_c := 1;CP__ST einde := pointer + pointer_2 - 2;CP__ST FOR pointer := pointer TO einde DOCP__ST Wachtrij[pointer] := array_2[pointer_c];CP__ST pointer_c := pointer_c + 1;CP__ST END_FOR;CP__ST pointer_c := 1;CP__ST einde := pointer + pointer_3 - 2;CP__ST FOR pointer := pointer TO einde DOCP__ST Wachtrij[pointer] := array_3[pointer_c];CP__ST pointer_c := pointer_c + 1;CP__ST END_FOR;CP__ST pointer_c := 1;CP__ST einde := pointer + pointer_4 - 2;CP__ST FOR pointer := pointer TO einde DOCP__ST Wachtrij[pointer] := array_4[pointer_c];CP__ST pointer_c := pointer_c + 1;CP__ST END_FOR;CP__ST pointer_c := 1;CP__ST einde := pointer + pointer_5 - 2;CP__ST FOR pointer := pointer TO einde DOCP__ST Wachtrij[pointer] := array_5[pointer_c];CP__ST pointer_c := pointer_c + 1;CP__ST END_FOR;CP__ST pointer_c := 1;CP__ST einde := pointer + pointer_6 - 2;CP__ST FOR pointer := pointer TO einde DOCP__ST Wachtrij[pointer] := array_6[pointer_c];CP__ST pointer_c := pointer_c + 1;CP__ST END_FOR;CP__ST FOR pointer := pointer TO 32 DOCP__ST Wachtrij[pointer] := 0;CP__ST END_FOR;CP__ST END_IF;CP_SEC "Spoelvoorwaarden_en_aanvragen" SECTK_F_SECTION LANG_ST SVB: FALSE ID: 4 EXEC: 2 TEXT:CP__ST VARCP__ST wacht_timer : TP;CP__ST trig_wacht : F_TRIG;CP__ST eind_spoel_trig : F_TRIG;CP__ST END_VAR;CP__STCP__ST (* wachttijd tussen het spoelen van filters *)CP__ST blokkeer_req := 0;CP__ST FOR pointer := 1 TO 32 DOCP__ST blokkeer_req := blokkeer_req OR Cmd_Spl[pointer];CP__ST END_FOR;CP__ST trig_wacht (CLK := blokkeer_req);CP__ST wacht_time := TIME_MUL_INT(IN1 := t#1m,CP__ST IN2 := Wachttyd);CP__ST wacht_timer ( IN := trig_wacht.Q,CP__ST PT := wacht_time);CP__ST stat_blokkeer := wacht_timer.Q;CP__ST IF(stat_blokkeer)THENCP__ST Resttyd := Wachttyd - REAL_TO_INT((TIME_TO_REAL(wacht_timer.ET))/60000.0); (*resttijd*)CP__ST ELSECP__ST Resttyd := 0;CP__ST END_IF;CP__STCP__STCP__ST IF(Vrijgave=1 AND StatSpl=0)THENCP__ST FOR pointer := 1 TO 32 DOCP__ST nummer_filter := Wachtrij[pointer] MOD 100;CP__ST spoel_prio := Wachtrij[pointer] / 100;CP__ST IF(stat_blokkeer=0 AND Spoel_nr=0 AND nummer_filter>0)THENCP__ST Spoel_nr := (spoel_prio * 100) + nummer_filter;CP__ST Filt_nr := nummer_filter;CP__ST Cmd_Spl[nummer_filter] := 1;CP__ST END_IF;CP__ST END_FOR;CP__ST END_IF;CP__STCP__ST eind_spoel_trig (CLK := StatSpl);CP__ST IF(eind_spoel_trig.Q=1)THENCP__ST Spoel_nr := 0;CP__ST Filt_nr := 0;CP__ST FOR pointer := 1 TO 32 DOCP__ST Cmd_Spl[pointer] := 0;CP__ST END_FOR;CP__ST END_IF;////CP_APPCP_PRG "AW_WPR" AREA: 4096 "02/16/07 10