Laat een bericht achter
We bellen je snel terug!
Uw bericht moet tussen de 20-3.000 tekens bevatten!
Controleer uw e-mail!
Meer informatie zorgt voor een betere communicatie.
Succesvol ingediend!
2025-07-03
FUNCTION_BLOCK FB_MotorControl VAR_INPUT StartKnop: BOOL; StopKnop: BOOL; Overbelastingssignaal: BOOL; END_VAR VAR_OUTPUT DraaiStatus: BOOL; FoutIndicator: BOOL; END_VAR BEGIN // Start-Stop Logica IF StartKnop AND NOT StopKnop AND NOT Overbelastingssignaal THEN DraaiStatus := TRUE; ELSIF StopKnop OR Overbelastingssignaal THEN DraaiStatus := FALSE; END_IF; // Foutindicatie FoutIndicator := Overbelastingssignaal; END_FUNCTION_BLOCK
FUNCTION_BLOCK FB_DelayStart VAR_INPUT StartSignaal: BOOL; Vertragingstijd: TIME := T#5S; END_VAR VAR_OUTPUT Uitgangssignaal: BOOL; END_VAR VAR Vertragingstimer: TON; END_VAR BEGIN DelayTimer(IN := StartSignaal, PT := Vertragingstijd); Uitgangssignaal := DelayTimer.Q; END_FUNCTION_BLOCK
FUNCTION_BLOCK FB_TempControl VAR_INPUT Setpoint: REAL; Proceswaarde: REAL; END_VAR VAR_OUTPUT Besturingsuitgang: REAL; END_VAR VAR Kp: REAL := 2.0; Ki: REAL := 0.05; Kd: REAL := 0.5; IntegraalTerm: REAL := 0; VorigeFout: REAL := 0; Timer: TON; END_VAR BEGIN // Periodiek uitvoeren (100ms) Timer(IN := NOT Timer.Q, PT := T#100ms); IF Timer.Q THEN VAR Fout := Setpoint - Proceswaarde; IntegraalTerm := IntegraalTerm + Fout; VAR AfgeleideTerm := Fout - VorigeFout; VorigeFout := Fout; Besturingsuitgang := Kp * Fout + Ki * IntegraalTerm + Kd * AfgeleideTerm; Besturingsuitgang := LIMIT(0.0, Besturingsuitgang, 100.0); Timer(IN := FALSE); END_IF; END_FUNCTION_BLOCK
FUNCTION_BLOCK FB_SafetyGate VAR_INPUT Poort1Gesloten, Poort2Gesloten: BOOL; NoodstopKnop: BOOL; ResetKnop: BOOL; END_VAR VAR_OUTPUT Veiligheidsstatus: BOOL; END_VAR VAR BlokkeerStatus: BOOL := FALSE; BlokkeerTimer: TON; END_VAR BEGIN // Veiligheidsconditie VAR AllePoortenGesloten := Poort1Gesloten AND Poort2Gesloten; // Noodstop hoogste prioriteit IF NoodstopKnop THEN Veiligheidsstatus := FALSE; BlokkeerStatus := TRUE; BlokkeerTimer(IN := TRUE, PT := T#10S); RETURN; END_IF; // Ontgrendel logica IF ResetKnop AND BlokkeerStatus AND BlokkeerTimer.Q THEN BlokkeerStatus := FALSE; END_IF; // Normale werking IF NOT BlokkeerStatus THEN Veiligheidsstatus := AllePoortenGesloten; END_IF;