⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sltank2.mdl

📁 最新模糊逻辑工具箱
💻 MDL
📖 第 1 页 / 共 2 页
字号:
	      MaskStyleString	      "edit,edit,edit"
	      MaskInitialization      "lb = @1; ub = @2; xi = @3;"
	      MaskDisplay	      "plot(-1,-0.2,3.5,1.2,[0.05,1,2,2.9],[0,0"
				      ",1,1]);disp(' 1/s    ')"
	      MaskIconFrame	      on
	      MaskIconOpaque	      on
	      MaskIconRotate	      off
	      MaskIconUnits	      autoscale
	      MaskValueString	      "0|1|InitialPosition"
	      System {
		Name			"Limited Integrator"
		Location		[0, 0, 791, 233]
		Open			off
		ScreenColor		white
		Block {
		  BlockType		  Inport
		  Name			  "In_1"
		  Position		  [20, 130, 40, 150]
		  Port			  "1"
		  PortWidth		  "-1"
		  SampleTime		  "-1"
		}
		Block {
		  BlockType		  Fcn
		  Name			  "Fcn"
		  Position		  [150, 116, 520, 154]
		  Expr			  "u[2]*((((u[1]>lb)+(u[2]>=0))>0) "
					  "* (((u[1]<ub)+(u[2]<=0))>0))"
		}
		Block {
		  BlockType		  Integrator
		  Name			  "Integrator"
		  Position		  [540, 126, 585, 144]
		  ExternalReset		  none
		  InitialConditionSource  internal
		  InitialCondition	  "xi"
		  LimitOutput		  off
		  UpperSaturationLimit	  "inf"
		  LowerSaturationLimit	  "-inf"
		  ShowSaturationPort	  off
		  ShowStatePort		  off
		  AbsoluteTolerance	  "auto"
		}
		Block {
		  BlockType		  Mux
		  Name			  "Mux"
		  Position		  [85, 116, 115, 149]
		  Inputs		  "2"
		}
		Block {
		  BlockType		  Saturate
		  Name			  "Saturation"
		  Position		  [630, 121, 675, 149]
		  UpperLimit		  "ub"
		  LowerLimit		  "lb"
		}
		Block {
		  BlockType		  Outport
		  Name			  "Out_1"
		  Position		  [720, 125, 740, 145]
		  Port			  "1"
		  OutputWhenDisabled	  held
		  InitialOutput		  "0"
		}
		Line {
		  SrcBlock		  "Integrator"
		  SrcPort		  1
		  Points		  [10, 0]
		  Branch {
		    Points		    [0, -100; -545, 0; 0, 90]
		    DstBlock		    "Mux"
		    DstPort		    1
		  }
		  Branch {
		    DstBlock		    "Saturation"
		    DstPort		    1
		  }
		}
		Line {
		  SrcBlock		  "Fcn"
		  SrcPort		  1
		  DstBlock		  "Integrator"
		  DstPort		  1
		}
		Line {
		  SrcBlock		  "Mux"
		  SrcPort		  1
		  DstBlock		  "Fcn"
		  DstPort		  1
		}
		Line {
		  SrcBlock		  "In_1"
		  SrcPort		  1
		  DstBlock		  "Mux"
		  DstPort		  2
		}
		Line {
		  SrcBlock		  "Saturation"
		  SrcPort		  1
		  DstBlock		  "Out_1"
		  DstPort		  1
		}
	      }
	    }
	    Block {
	      BlockType		      Product
	      Name		      "Product"
	      Position		      [180, 76, 215, 134]
	      Inputs		      "2"
	    }
	    Block {
	      BlockType		      Outport
	      Name		      "out flow"
	      Position		      [250, 95, 270, 115]
	      Port		      "1"
	      OutputWhenDisabled      held
	      InitialOutput	      "0"
	    }
	    Line {
	      SrcBlock		      "source flow"
	      SrcPort		      1
	      DstBlock		      "Product"
	      DstPort		      2
	    }
	    Line {
	      SrcBlock		      "Product"
	      SrcPort		      1
	      DstBlock		      "out flow"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "control"
	      SrcPort		      1
	      DstBlock		      "Limited Integrator"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Limited Integrator"
	      SrcPort		      1
	      Points		      [25, 0; 0, 60]
	      DstBlock		      "Product"
	      DstPort		      1
	    }
	  }
	}
	Block {
	  BlockType		  Terminator
	  Name			  "Terminator"
	  Position		  [265, 110, 285, 130]
	}
	Block {
	  BlockType		  Terminator
	  Name			  "Terminator1"
	  Position		  [265, 165, 285, 185]
	}
	Block {
	  BlockType		  SubSystem
	  Name			  "tank 2"
	  Position		  [175, 61, 235, 119]
	  ShowPortLabels	  off
	  MaskType		  "Water tank"
	  MaskDescription	  "Cylindrical water tank with overflow signal"
	  MaskPromptString	  "Height of tank (m):|Bottom area (m^2):|Out "
				  "pipe crossection (m^2):|Overflow sensor "
				  "distance from top (m):|Initial level "
				  "height (m):"
	  MaskStyleString	  "edit,edit,edit,edit,edit"
	  MaskInitialization	  "ht=@1;area=@2;outletArea=@3;overflowLimit=@4"
				  ";initialHt=@5;"
	  MaskDisplay		  "disp('WATER\\nTANK')"
	  MaskIconFrame		  on
	  MaskIconOpaque	  on
	  MaskIconRotate	  off
	  MaskIconUnits		  autoscale
	  MaskValueString	  "2|1|0.05|0|0.5"
	  System {
	    Name		    "tank 2"
	    Location		    [109, 460, 655, 768]
	    Open		    on
	    ScreenColor		    white
	    Block {
	      BlockType		      Inport
	      Name		      "flow\nin"
	      Position		      [25, 175, 45, 195]
	      Port		      "1"
	      PortWidth		      "-1"
	      SampleTime	      "-1"
	    }
	    Block {
	      BlockType		      Gain
	      Name		      "1/area"
	      Position		      [220, 167, 270, 223]
	      Gain		      "1/area"
	    }
	    Block {
	      BlockType		      Relay
	      Name		      "Overflow sensor"
	      Position		      [385, 18, 425, 62]
	      OnSwitchValue	      "ht - overflowLimit"
	      OffSwitchValue	      "ht - overflowLimit"
	      OnOutputValue	      "1"
	      OffOutputValue	      "0"
	    }
	    Block {
	      BlockType		      Gain
	      Name		      "outletArea"
	      Position		      [410, 167, 460, 223]
	      Gain		      "outletArea"
	    }
	    Block {
	      BlockType		      Fcn
	      Name		      "sqrt(2gh)"
	      Position		      [300, 171, 390, 219]
	      Expr		      "sqrt(2*9.8*u)"
	    }
	    Block {
	      BlockType		      Sum
	      Name		      "sum"
	      Position		      [105, 175, 125, 210]
	      Inputs		      "+-"
	    }
	    Block {
	      BlockType		      SubSystem
	      Name		      "tank\nvolume"
	      Position		      [150, 174, 200, 216]
	      ShowPortLabels	      off
	      MaskType		      "Limited integrator."
	      MaskDescription	      "Limited integrator"
	      MaskHelp		      "Implements a limited integrator with "
				      "\\nan expression of the form:\\n\\nif(x<"
				      "=lb and u<0) or (x>=ub and u>0)\\n\\txdo"
				      "t=0\\nelse\\n\\txdot=u."
	      MaskPromptString	      "Lower bound:|Upper bound:|Initial "
				      "condition"
	      MaskStyleString	      "edit,edit,edit"
	      MaskInitialization      "lb = @1; ub = @2; xi = @3;"
	      MaskDisplay	      "plot(-1,-0.2,3.5,1.2,[0.05,1,2,2.9],[0,0"
				      ",1,1]);disp(' 1/s    ')"
	      MaskIconFrame	      on
	      MaskIconOpaque	      on
	      MaskIconRotate	      off
	      MaskIconUnits	      autoscale
	      MaskValueString	      "0|ht * area|initialHt * area"
	      System {
		Name			"tank\nvolume"
		Location		[0, 0, 791, 233]
		Open			off
		ScreenColor		white
		Block {
		  BlockType		  Inport
		  Name			  "In_1"
		  Position		  [20, 130, 40, 150]
		  Port			  "1"
		  PortWidth		  "-1"
		  SampleTime		  "-1"
		}
		Block {
		  BlockType		  Fcn
		  Name			  "Fcn"
		  Position		  [150, 116, 520, 154]
		  Expr			  "u[2]*((((u[1]>lb)+(u[2]>=0))>0) "
					  "* (((u[1]<ub)+(u[2]<=0))>0))"
		}
		Block {
		  BlockType		  Integrator
		  Name			  "Integrator"
		  Position		  [540, 126, 585, 144]
		  ExternalReset		  none
		  InitialConditionSource  internal
		  InitialCondition	  "xi"
		  LimitOutput		  off
		  UpperSaturationLimit	  "inf"
		  LowerSaturationLimit	  "-inf"
		  ShowSaturationPort	  off
		  ShowStatePort		  off
		  AbsoluteTolerance	  "auto"
		}
		Block {
		  BlockType		  Mux
		  Name			  "Mux"
		  Position		  [85, 116, 115, 149]
		  Inputs		  "2"
		}
		Block {
		  BlockType		  Saturate
		  Name			  "Saturation"
		  Position		  [630, 121, 675, 149]
		  UpperLimit		  "ub"
		  LowerLimit		  "lb"
		}
		Block {
		  BlockType		  Outport
		  Name			  "Out_1"
		  Position		  [720, 125, 740, 145]
		  Port			  "1"
		  OutputWhenDisabled	  held
		  InitialOutput		  "0"
		}
		Line {
		  SrcBlock		  "Integrator"
		  SrcPort		  1
		  Points		  [10, 0]
		  Branch {
		    Points		    [0, -100; -545, 0; 0, 90]
		    DstBlock		    "Mux"
		    DstPort		    1
		  }
		  Branch {
		    DstBlock		    "Saturation"
		    DstPort		    1
		  }
		}
		Line {
		  SrcBlock		  "Fcn"
		  SrcPort		  1
		  DstBlock		  "Integrator"
		  DstPort		  1
		}
		Line {
		  SrcBlock		  "Mux"
		  SrcPort		  1
		  DstBlock		  "Fcn"
		  DstPort		  1
		}
		Line {
		  SrcBlock		  "In_1"
		  SrcPort		  1
		  DstBlock		  "Mux"
		  DstPort		  2
		}
		Line {
		  SrcBlock		  "Saturation"
		  SrcPort		  1
		  DstBlock		  "Out_1"
		  DstPort		  1
		}
	      }
	    }
	    Block {
	      BlockType		      Outport
	      Name		      "water\nlevel"
	      Position		      [495, 100, 515, 120]
	      Port		      "1"
	      OutputWhenDisabled      held
	      InitialOutput	      "0"
	    }
	    Block {
	      BlockType		      Outport
	      Name		      "flow\nout"
	      Position		      [495, 185, 515, 205]
	      Port		      "2"
	      OutputWhenDisabled      held
	      InitialOutput	      "0"
	    }
	    Block {
	      BlockType		      Outport
	      Name		      "overflow\nflag"
	      Position		      [495, 30, 515, 50]
	      Port		      "3"
	      OutputWhenDisabled      held
	      InitialOutput	      "0"
	    }
	    Line {
	      SrcBlock		      "1/area"
	      SrcPort		      1
	      Points		      [0, 0]
	      Branch {
		Points			[10, 0; 0, -85]
		Branch {
		  DstBlock		  "water\nlevel"
		  DstPort		  1
		}
		Branch {
		  Points		  [0, -70]
		  DstBlock		  "Overflow sensor"
		  DstPort		  1
		}
	      }
	      Branch {
		DstBlock		"sqrt(2gh)"
		DstPort			1
	      }
	    }
	    Line {
	      SrcBlock		      "outletArea"
	      SrcPort		      1
	      Points		      [10, 0]
	      Branch {
		Points			[0, 65; -390, 0; 0, -60]
		DstBlock		"sum"
		DstPort			2
	      }
	      Branch {
		DstBlock		"flow\nout"
		DstPort			1
	      }
	    }
	    Line {
	      SrcBlock		      "sqrt(2gh)"
	      SrcPort		      1
	      DstBlock		      "outletArea"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "tank\nvolume"
	      SrcPort		      1
	      DstBlock		      "1/area"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "Overflow sensor"
	      SrcPort		      1
	      DstBlock		      "overflow\nflag"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "flow\nin"
	      SrcPort		      1
	      DstBlock		      "sum"
	      DstPort		      1
	    }
	    Line {
	      SrcBlock		      "sum"
	      SrcPort		      1
	      DstBlock		      "tank\nvolume"
	      DstPort		      1
	    }
	  }
	}
	Block {
	  BlockType		  Constant
	  Name			  "tank max\ninflow"
	  Position		  [20, 109, 65, 141]
	  Value			  "0.5"
	}
	Block {
	  BlockType		  Outport
	  Name			  "out_1"
	  Position		  [265, 60, 285, 80]
	  Port			  "1"
	  OutputWhenDisabled	  held
	  InitialOutput		  "0"
	}
	Line {
	  SrcBlock		  "Subsystem"
	  SrcPort		  1
	  DstBlock		  "tank 2"
	  DstPort		  1
	}
	Line {
	  SrcBlock		  "tank max\ninflow"
	  SrcPort		  1
	  Points		  [5, 0; 0, -25]
	  DstBlock		  "Subsystem"
	  DstPort		  2
	}
	Line {
	  SrcBlock		  "tank 2"
	  SrcPort		  1
	  DstBlock		  "out_1"
	  DstPort		  1
	}
	Line {
	  SrcBlock		  "in_1"
	  SrcPort		  1
	  Points		  [15, 0; 0, 25]
	  DstBlock		  "Subsystem"
	  DstPort		  1
	}
	Line {
	  SrcBlock		  "tank 2"
	  SrcPort		  2
	  Points		  [10, 0]
	  DstBlock		  "Terminator"
	  DstPort		  1
	}
	Line {
	  SrcBlock		  "tank 2"
	  SrcPort		  3
	  Points		  [0, 65]
	  DstBlock		  "Terminator1"
	  DstPort		  1
	}
      }
    }
    Block {
      BlockType		      Sum
      Name		      "level\nerror1"
      Position		      [175, 43, 195, 87]
      Inputs		      "+-"
    }
    Block {
      BlockType		      Sum
      Name		      "level\nerror2"
      Position		      [175, 183, 195, 227]
      Inputs		      "+-"
    }
    Line {
      SrcBlock		      "Water\nTank"
      SrcPort		      1
      Points		      [15, 0; 0, 145; -410, 0; 0, -70]
      Branch {
	Points			[0, -80]
	Branch {
	  DstBlock		  "Derivative"
	  DstPort		  1
	}
	Branch {
	  Points		  [0, -60]
	  DstBlock		  "level\nerror1"
	  DstPort		  2
	}
      }
      Branch {
	DstBlock		"Animation"
	DstPort			2
      }
      Branch {
	DstBlock		"level\nerror2"
	DstPort			2
      }
    }
    Line {
      SrcBlock		      "level\nerror2"
      SrcPort		      1
      DstBlock		      "PID \nController"
      DstPort		      1
    }
    Line {
      SrcBlock		      "Derivative"
      SrcPort		      1
      Points		      [15, 0; 0, -55]
      DstBlock		      "Mux1"
      DstPort		      2
    }
    Line {
      SrcBlock		      "Set Point"
      SrcPort		      1
      Points		      [20, 0]
      Branch {
	Points			[0, 140]
	Branch {
	  DstBlock		  "level\nerror2"
	  DstPort		  1
	}
	Branch {
	  DstBlock		  "Animation"
	  DstPort		  1
	}
      }
      Branch {
	DstBlock		"level\nerror1"
	DstPort			1
      }
    }
    Line {
      SrcBlock		      "PID \nController"
      SrcPort		      1
      Points		      [15, 0; 0, -55]
      DstBlock		      "Switch"
      DstPort		      2
    }
    Line {
      SrcBlock		      "Fuzzy\nLogic\nController"
      SrcPort		      1
      Points		      [5, 0; 0, 50]
      DstBlock		      "Switch"
      DstPort		      1
    }
    Line {
      SrcBlock		      "Switch"
      SrcPort		      1
      DstBlock		      "Water\nTank"
      DstPort		      1
    }
    Line {
      SrcBlock		      "level\nerror1"
      SrcPort		      1
      DstBlock		      "Mux1"
      DstPort		      1
    }
    Line {
      SrcBlock		      "Mux1"
      SrcPort		      1
      DstBlock		      "Fuzzy\nLogic\nController"
      DstPort		      1
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -