Advertisement
Guest User

PLC

a guest
Sep 29th, 2016
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.44 KB | None | 0 0
  1. FUNCTION_BLOCK CtrlNetwork
  2.   VAR_INPUT
  3.     SigOut : BOOL;
  4.     FeedBack : BOOL;
  5.     CtrlTime : TIME := T#500ms;
  6.   END_VAR
  7.   VAR_OUTPUT
  8.     Out1 : BOOL;
  9.     Out2 : BOOL;
  10.   END_VAR
  11.   VAR
  12.     TOF0 : TOF;
  13.     TOF1 : TOF;
  14.     NOT10_OUT : BOOL;
  15.     OR7_OUT : BOOL;
  16.     NOT6_OUT : BOOL;
  17.     OR8_OUT : BOOL;
  18.   END_VAR
  19.  
  20.   TOF0(IN := SigOut, PT := CtrlTime);
  21.   NOT10_OUT := NOT(FeedBack);
  22.   OR7_OUT := OR(TOF0.Q, NOT10_OUT);
  23.   Out1 := OR7_OUT;
  24.   NOT6_OUT := NOT(SigOut);
  25.   TOF1(IN := NOT6_OUT, PT := CtrlTime);
  26.   OR8_OUT := OR(TOF1.Q, FeedBack);
  27.   Out2 := OR8_OUT;
  28. END_FUNCTION_BLOCK
  29.  
  30. FUNCTION_BLOCK VentCtrl
  31.   VAR_OUTPUT
  32.     pwrOUT : BOOL;
  33.     stOUT : BOOL;
  34.   END_VAR
  35.   VAR_INPUT
  36.     pwrIN : BOOL;
  37.     stIN : BOOL;
  38.     fbCnt : BOOL;
  39.     fbCur : BOOL;
  40.     OnTime : TIME := T#10s;
  41.     OffTime : TIME := T#20s;
  42.   END_VAR
  43.   VAR
  44.     CtrlTimeCnt : TIME := T#500ms;
  45.     CtrlTimeCur : TIME := T#1000ms;
  46.     TON0 : TON;
  47.     TOF0 : TOF;
  48.     CtrlNetwork0 : CtrlNetwork;
  49.     CtrlNetwork1 : CtrlNetwork;
  50.     NOT23_OUT : BOOL;
  51.     AND24_OUT : BOOL;
  52.   END_VAR
  53.  
  54.   TON0(IN := pwrIN, PT := OnTime);
  55.   TOF0(IN := TON0.Q, PT := OffTime);
  56.   pwrOUT := TOF0.Q;
  57.   NOT23_OUT := NOT(TOF0.Q);
  58.   CtrlNetwork0(SigOut := NOT23_OUT, FeedBack := fbCnt, CtrlTime := CtrlTimeCnt);
  59.   CtrlNetwork1(SigOut := TOF0.Q, FeedBack := fbCur, CtrlTime := CtrlTimeCur);
  60.   AND24_OUT := AND(CtrlNetwork0.Out1, CtrlNetwork0.Out2, CtrlNetwork1.Out1, CtrlNetwork1.Out2, stIN);
  61.   stOUT := AND24_OUT;
  62. END_FUNCTION_BLOCK
  63.  
  64. PROGRAM Main
  65.   VAR
  66.     OnOffTrig : BOOL := False;
  67.   END_VAR
  68.   VAR_EXTERNAL
  69.     BtnON : BOOL;
  70.     BtnOFF : BOOL;
  71.   END_VAR
  72.   VAR CONSTANT
  73.     OnTime1 : TIME := T#1s;
  74.     OnTime2 : TIME := T#31s;
  75.     OnTime3 : TIME := T#61s;
  76.     OffTime1 : TIME := T#61s;
  77.     OffTime2 : TIME := T#31s;
  78.     OffTime3 : TIME := T#1s;
  79.   END_VAR
  80.   VAR_EXTERNAL
  81.     Vent1 : BOOL;
  82.     Vent2 : BOOL;
  83.     Vent3 : BOOL;
  84.     LedGreen : BOOL;
  85.     LedRed : BOOL;
  86.     Cur1 : BOOL;
  87.     Cur2 : BOOL;
  88.     Ctrl1 : BOOL;
  89.     Ctrl2 : BOOL;
  90.     Ctrl3 : BOOL;
  91.   END_VAR
  92.   VAR
  93.     VentCtrl1 : VentCtrl;
  94.     VentCtrl2 : VentCtrl;
  95.     VentCtrl3 : VentCtrl;
  96.   END_VAR
  97.   VAR_EXTERNAL
  98.     NoErrors : BOOL;
  99.   END_VAR
  100.  
  101.   VentCtrl1(pwrIN := OnOffTrig, stIN := NoErrors, fbCnt := Ctrl1, fbCur := Cur1, OnTime := OnTime1, OffTime := OffTime1);
  102.   Vent1 := NoErrors AND VentCtrl1.pwrOUT;
  103.   OnOffTrig := NoErrors AND BtnOFF AND (BtnON OR OnOffTrig);
  104.   VentCtrl2(pwrIN := OnOffTrig, stIN := VentCtrl1.stOUT, fbCnt := Ctrl2, fbCur := Cur2, OnTime := OnTime2, OffTime := OffTime2);
  105.   Vent2 := NoErrors AND VentCtrl2.pwrOUT;
  106.   VentCtrl3(pwrIN := OnOffTrig, stIN := VentCtrl2.stOUT, fbCnt := Ctrl3, fbCur := VentCtrl3.pwrOUT, OnTime := OnTime3, OffTime := OffTime3);
  107.   Vent3 := NoErrors AND VentCtrl3.pwrOUT;
  108.   NoErrors := VentCtrl3.stOUT;
  109.   LedGreen := OnOffTrig;
  110.   LedRed := NOT(OnOffTrig);
  111. END_PROGRAM
  112.  
  113.  
  114. CONFIGURATION config
  115.   VAR_GLOBAL
  116.     LedGreen AT %QX4.0 : BOOL;
  117.     LedRed AT %QX4.1 : BOOL;
  118.     Cur1 AT %IX1.0 : BOOL;
  119.     Cur2 AT %IX1.1 : BOOL;
  120.     BtnOFF AT %IX1.2 : BOOL;
  121.     BtnON AT %IX1.3 : BOOL;
  122.     Ctrl1 AT %IX1.5 : BOOL;
  123.     Ctrl2 AT %IX1.6 : BOOL;
  124.     Ctrl3 AT %IX1.7 : BOOL;
  125.     Vent1 AT %QX1.1 : BOOL;
  126.     Vent2 AT %QX1.2 : BOOL;
  127.     Vent3 AT %QX1.3 : BOOL;
  128.     NoErrors AT %QX1.0 : BOOL := True;
  129.   END_VAR
  130.  
  131.   RESOURCE resource1 ON PLC
  132.     TASK TmrMain(INTERVAL := T#100ms,PRIORITY := 0);
  133.     PROGRAM InstMain WITH TmrMain : Main;
  134.   END_RESOURCE
  135. END_CONFIGURATION
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement