Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- FUNCTION_BLOCK CtrlNetwork
- VAR_INPUT
- SigOut : BOOL;
- FeedBack : BOOL;
- CtrlTime : TIME := T#500ms;
- END_VAR
- VAR_OUTPUT
- Out1 : BOOL;
- Out2 : BOOL;
- END_VAR
- VAR
- TOF0 : TOF;
- TOF1 : TOF;
- NOT10_OUT : BOOL;
- OR7_OUT : BOOL;
- NOT6_OUT : BOOL;
- OR8_OUT : BOOL;
- END_VAR
- TOF0(IN := SigOut, PT := CtrlTime);
- NOT10_OUT := NOT(FeedBack);
- OR7_OUT := OR(TOF0.Q, NOT10_OUT);
- Out1 := OR7_OUT;
- NOT6_OUT := NOT(SigOut);
- TOF1(IN := NOT6_OUT, PT := CtrlTime);
- OR8_OUT := OR(TOF1.Q, FeedBack);
- Out2 := OR8_OUT;
- END_FUNCTION_BLOCK
- FUNCTION_BLOCK VentCtrl
- VAR_OUTPUT
- pwrOUT : BOOL;
- stOUT : BOOL;
- END_VAR
- VAR_INPUT
- pwrIN : BOOL;
- stIN : BOOL;
- fbCnt : BOOL;
- fbCur : BOOL;
- OnTime : TIME := T#10s;
- OffTime : TIME := T#20s;
- END_VAR
- VAR
- CtrlTimeCnt : TIME := T#500ms;
- CtrlTimeCur : TIME := T#1000ms;
- TON0 : TON;
- TOF0 : TOF;
- CtrlNetwork0 : CtrlNetwork;
- CtrlNetwork1 : CtrlNetwork;
- NOT23_OUT : BOOL;
- AND24_OUT : BOOL;
- END_VAR
- TON0(IN := pwrIN, PT := OnTime);
- TOF0(IN := TON0.Q, PT := OffTime);
- pwrOUT := TOF0.Q;
- NOT23_OUT := NOT(TOF0.Q);
- CtrlNetwork0(SigOut := NOT23_OUT, FeedBack := fbCnt, CtrlTime := CtrlTimeCnt);
- CtrlNetwork1(SigOut := TOF0.Q, FeedBack := fbCur, CtrlTime := CtrlTimeCur);
- AND24_OUT := AND(CtrlNetwork0.Out1, CtrlNetwork0.Out2, CtrlNetwork1.Out1, CtrlNetwork1.Out2, stIN);
- stOUT := AND24_OUT;
- END_FUNCTION_BLOCK
- PROGRAM Main
- VAR
- OnOffTrig : BOOL := False;
- END_VAR
- VAR_EXTERNAL
- BtnON : BOOL;
- BtnOFF : BOOL;
- END_VAR
- VAR CONSTANT
- OnTime1 : TIME := T#1s;
- OnTime2 : TIME := T#31s;
- OnTime3 : TIME := T#61s;
- OffTime1 : TIME := T#61s;
- OffTime2 : TIME := T#31s;
- OffTime3 : TIME := T#1s;
- END_VAR
- VAR_EXTERNAL
- Vent1 : BOOL;
- Vent2 : BOOL;
- Vent3 : BOOL;
- LedGreen : BOOL;
- LedRed : BOOL;
- Cur1 : BOOL;
- Cur2 : BOOL;
- Ctrl1 : BOOL;
- Ctrl2 : BOOL;
- Ctrl3 : BOOL;
- END_VAR
- VAR
- VentCtrl1 : VentCtrl;
- VentCtrl2 : VentCtrl;
- VentCtrl3 : VentCtrl;
- END_VAR
- VAR_EXTERNAL
- NoErrors : BOOL;
- END_VAR
- VentCtrl1(pwrIN := OnOffTrig, stIN := NoErrors, fbCnt := Ctrl1, fbCur := Cur1, OnTime := OnTime1, OffTime := OffTime1);
- Vent1 := NoErrors AND VentCtrl1.pwrOUT;
- OnOffTrig := NoErrors AND BtnOFF AND (BtnON OR OnOffTrig);
- VentCtrl2(pwrIN := OnOffTrig, stIN := VentCtrl1.stOUT, fbCnt := Ctrl2, fbCur := Cur2, OnTime := OnTime2, OffTime := OffTime2);
- Vent2 := NoErrors AND VentCtrl2.pwrOUT;
- VentCtrl3(pwrIN := OnOffTrig, stIN := VentCtrl2.stOUT, fbCnt := Ctrl3, fbCur := VentCtrl3.pwrOUT, OnTime := OnTime3, OffTime := OffTime3);
- Vent3 := NoErrors AND VentCtrl3.pwrOUT;
- NoErrors := VentCtrl3.stOUT;
- LedGreen := OnOffTrig;
- LedRed := NOT(OnOffTrig);
- END_PROGRAM
- CONFIGURATION config
- VAR_GLOBAL
- LedGreen AT %QX4.0 : BOOL;
- LedRed AT %QX4.1 : BOOL;
- Cur1 AT %IX1.0 : BOOL;
- Cur2 AT %IX1.1 : BOOL;
- BtnOFF AT %IX1.2 : BOOL;
- BtnON AT %IX1.3 : BOOL;
- Ctrl1 AT %IX1.5 : BOOL;
- Ctrl2 AT %IX1.6 : BOOL;
- Ctrl3 AT %IX1.7 : BOOL;
- Vent1 AT %QX1.1 : BOOL;
- Vent2 AT %QX1.2 : BOOL;
- Vent3 AT %QX1.3 : BOOL;
- NoErrors AT %QX1.0 : BOOL := True;
- END_VAR
- RESOURCE resource1 ON PLC
- TASK TmrMain(INTERVAL := T#100ms,PRIORITY := 0);
- PROGRAM InstMain WITH TmrMain : Main;
- END_RESOURCE
- END_CONFIGURATION
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement