Você está na página 1de 3

(* Electrode Controller 1 *) (* Local / remote operation *) ITE_MODE1(InputVal := EC_PLC_1); S_EC_PLC_1 :=ITE_MODE1.

OutputVal; (* Mode Control *) (*EC_FMAN_1 := NOT FNC_ON OR EI_1_ERR OR (EC_RMODE_1 AND EP_1_ERR) OR HP_1_ERR OR NOT S_EC_PLC_1;*) EC_FMAN_1 := NOT FNC_ON OR EI_1_ERR OR (EC_RMODE_1 AND EP_1_ERR) OR NOT S_EC_PL C_1; (* Turn of if forced manual *) IF EC_FMAN_1 OR BLOCK_NIPLAGEM_ELT1 THEN EC_MODE_1 := 0; END_IF; (*Initiate local variables *) NormalLift := 0; NormalLower := 0; OverCurrent := 0; StopMove := 1; IF EC_SPRED_1 THEN WorkSP := EC_SPI_1 - EC_SPRED; ELSE WorkSP := EC_SPI_1; END_IF; (* Electrode movement block signals *) (*EC_BLKUP_1 := HP_1 > EC_HPMAX_1; EC_BLKDW_1 := HP_1 < EC_HPMIN_1;*) EC_BLKUP_1 := LIMIT_HI_ELT1; EC_BLKDW_1 := LIMIT_LO_ELT1; (* Check if overcurrent *) IF SC_FORC_1 THEN PresentLimit := EI_LIMFS; ELSE PresentLimit := EI_LIMIT; END_IF; IF EI_1 > PresentLimit THEN OverCurrent := 1; ELSE OverCurrent := 0; END_IF; EC_OVERCURR_1 := EI_1 > PresentLimit; IF EC_MODE_1 THEN (* Check normal lift *) IF EC_RMODE_1 THEN (*Resistance control *) (*IF ER_1 < EC_SPR_1 - EC_DBR_LO_1 AND HP_1 < EC_HPMAX_1 THEN*) IF ER_1 < EC_SPR_1 - EC_DBR_LO_1 AND NOT LIMIT_HI_ELT1 THEN NormalLift := 1; ELSE NormalLift := 0; END_IF; ELSE (* Curre nt control *) (*IF EI_1 > WorkSP + EC_DBI_HI_1 AND HP_1 < EC_HPMAX_1 THEN*)

IF EI_1 > WorkSP + EC_DBI_HI_1 AND NOT LIMIT_HI_ELT1 THEN NormalLift := 1; ELSE NormalLift := 0; END_IF; END_IF; (* Check normal lower *) IF EC_RMODE_1 THEN (*Resistance control *) (*IF ER_1 > EC_SPR_1 + EC_DBR_HI_1 AND HP_1 > EC_HPMIN_1 THEN*) IF ER_1 > EC_SPR_1 + EC_DBR_HI_1 AND NOT LIMIT_LO_ELT1 THEN NormalLower := 1; ELSE NormalLower := 0; END_IF; ELSE (* Curre nt control *) (*IF EI_1 < WorkSP - EC_DBI_LO_1 AND HP_1 > EC_HPMIN_1 THEN*) IF EI_1 < WorkSP - EC_DBI_LO_1 AND NOT LIMIT_LO_ELT1 THEN NormalLower := 1; ELSE NormalLower := 0; END_IF; END_IF; (* Check if within stop deadband *) IF EC_RMODE_1 THEN (*Resistance control *) IF ER_1 > EC_SPR_1 - (EC_DBR_LO_1 * EC_DBS_LIFT_1 / 100) AND ER_ 1 < EC_SPR_1 + (EC_DBR_HI_1 * EC_DBS_LOWR_1 / 100) THEN StopMove := 1; ELSE StopMove := 0; END_IF; ELSE (* Curre nt control *) IF EI_1 > WorkSP - (EC_DBI_LO_1 * EC_DBS_LOWR_1 / 100) AND EI_1 < WorkSP + (EC_DBI_HI_1 * EC_DBS_LIFT_1 / 100) THEN STopMove := 1; ELSE StopMove := 0; END_IF; END_IF; END_IF; (* Timer-functions for automatic electrode movements *) MaxLiftingTime:=REAL_TO_TIME(1000.0 * EC_LTMAX); LiftDelay := REAL_TO_TIME(1000.0 * EC_WUP_1); LowerDelay := REAL_TO_TIME(1000.0 * EC_WDW_1); OvercurrentDelay := REAL_TO_TIME(1000.0 * EC_WOC); TON1(IN := Overcurrent, PT:= MaxLiftingTime); TON2(IN := NormalLift, PT:= LiftDelay); TON3(IN := NormalLower, PT:= LowerDelay); TON4(IN := Overcurrent, PT := OvercurrentDelay); (* Electrode lift output *) StartLift :=EC_MODE_1 AND (TON2.Q OR TON4.Q); StartLower :=EC_MODE_1 AND TON3.Q AND NOT Overcurrent ; SR_LIFT(SET1 := StartLift, RESET := StopMove OR StartLower OR NORMALLOWER OR NOT EC_MODE_1);

SR_LOWER(SET1 := StartLower, RESET := StopMove OR NormalLift OR StartLift OR Ove rcurrent OR NOT EC_MODE_1); (*LOGICA PARA ACIONAMENTO E CONTROLE DO ELETRODO*) (*EC_LIFT_1 := ((EC_MODE_1 AND SR_LIFT.Q1 AND HP_1 < ec_hpmax_1) OR (NOT S_EC_PLC_1 AND NOT EC_MANUP_1)) AND NOT EC_LOWER_1 AND EM_STOP_OK AND NOT BLOCK _NIPLAGEM_ELT1 AND NOT LIMIT_HI_ELT1; EC_LOWER_1 := ((EC_MODE_1 AND SR_LOWER.Q1 AND HP_1 > ec_hpmin_1) OR (NOT S_EC_PL C_1 AND EC_MANDOWN_1)) AND NOT EC_LIFT_1 AND EM_STOP_OK AND NOT BLOCK_NIPLAGEM_ ELT1 AND NOT LIMIT_LO_ELT1;*) EC_LIFT_1 := ((EC_MODE_1 AND SR_LIFT.Q1 AND NOT LIMIT_HI_ELT1) OR (NOT S _EC_PLC_1 AND NOT EC_MANUP_1)) AND NOT EC_LOWER_1 AND EM_STOP_OK AND NOT BLOCK_ NIPLAGEM_ELT1 AND NOT LIMIT_HI_ELT1; EC_LOWER_1 := ((EC_MODE_1 AND SR_LOWER.Q1 AND NOT LIMIT_LO_ELT1) OR (NOT S_EC_P LC_1 AND EC_MANDOWN_1)) AND NOT EC_LIFT_1 AND EM_STOP_OK AND NOT BLOCK_NIPLAGEM _ELT1 AND NOT LIMIT_LO_ELT1; (* Set tap down flag if remaining overcurrent *) (*IF HP_1 < EC_HPMAX_1 THEN*) IF NOT LIMIT_HI_ELT1 THEN EC_OC_1 := TON1.Q; EC_SPRED_2 := FALSE; ELSE IF EC_SPRED > 0 THEN EC_SPRED_2 := EC_MODE_1 AND NOT EC_RMODE_1 AND (Overcurrent OR EC_SPRED_1); EC_OC_1 := TON1.Q; ELSE EC_SPRED_2 := FALSE; EC_OC_1 := Overcurrent; END_IF; END_IF;

Você também pode gostar