model SimpleTriac "Simple triac, based on Semiconductors.Thyristor model"
parameter SI.Voltage VDRM(final min = 0) = 100 "Forward breakthrough voltage";
parameter SI.Voltage VRRM(final min = 0) = 100 "Reverse breakthrough voltage";
parameter SI.Current IDRM = 0.1 "Saturation current";
parameter SI.Voltage VTM = 1.7 "Conducting voltage";
parameter SI.Current IH = 0.006 "Holding current";
parameter SI.Current ITM = 25 "Conducting current";
parameter SI.Voltage VGT = 0.7 "Gate trigger voltage";
parameter SI.Current IGT = 0.005 "Gate trigger current";
parameter SI.Time TON = 1e-6 "Switch on time";
parameter SI.Time TOFF = 1.5e-5 "Switch off time";
parameter SI.Voltage Vt = 0.04 "Voltage equivalent of temperature (kT/qn)";
parameter Real Nbv = 0.74 "Reverse Breakthrough emission coefficient";
Modelica.Electrical.Analog.Interfaces.NegativePin n "Cathode"
annotation (Placement(transformation(extent = {
{-110, -10},
{-90, 10}})));
Modelica.Electrical.Analog.Interfaces.PositivePin p "Anode"
annotation (Placement(transformation(extent = {
{94, -10},
{114, 10}})));
Modelica.Electrical.Analog.Interfaces.PositivePin g "Gate"
annotation (Placement(
transformation(extent = {
{-110, -108},
{-90, -88}}),
iconTransformation(extent = {
{-110, -108},
{-90, -88}})));
Modelica.Electrical.Analog.Semiconductors.Thyristor thyristor(VDRM = VDRM, VRRM = VRRM, IDRM = IDRM, VTM = VTM, IH = IH, ITM = ITM, VGT = VGT, IGT = IGT, TON = TON, TOFF = TOFF, Vt = Vt, Nbv = Nbv, useHeatPort = useHeatPort, T = T) annotation (Placement(transformation(extent = {
{-20, 30},
{0, 50}})));
Modelica.Electrical.Analog.Semiconductors.Thyristor thyristor1(VDRM = VDRM, VRRM = VRRM, IDRM = IDRM, VTM = VTM, IH = IH, ITM = ITM, VGT = VGT, IGT = IGT, TON = TON, TOFF = TOFF, Vt = Vt, Nbv = Nbv, useHeatPort = useHeatPort, T = T) annotation (Placement(transformation(
extent = {
{-10, -10},
{10, 10}},
rotation = 180,
origin = {-12, -40})));
Modelica.Electrical.Analog.Ideal.IdealDiode idealDiode(Vknee = 0) annotation (Placement(transformation(extent = {
{-40, 58},
{-20, 78}})));
Modelica.Electrical.Analog.Ideal.IdealDiode idealDiode1(Vknee = 0) annotation (Placement(transformation(
extent = {
{-10, -10},
{10, 10}},
rotation = 90,
origin = {-20, -72})));
parameter Boolean useHeatPort = false "=true, if HeatPort is enabled"
annotation (
Evaluate = true,
HideResult = true,
choices(checkBox = true));
parameter SI.Temperature T = 293.15 "Fixed device temperature if useHeatPort = false"
annotation (Dialog(enable = not useHeatPort));
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a heatPort if useHeatPort annotation (Placement(
transformation(extent = {
{-10, -110},
{10, -90}}),
iconTransformation(extent = {
{-10, -110},
{10, -90}})));
equation
if useHeatPort then
connect(heatPort,thyristor.heatPort);
connect(heatPort,thyristor1.heatPort);
end if;
connect(thyristor.Anode,n) annotation (Line(
points = {
{-19, 40},
{-18, 40},
{-18, 48},
{-70, 48},
{-70, 0},
{-100, 0}},
color = {0, 0, 255}));
connect(thyristor.Gate,idealDiode.n) annotation (Line(
points = {
{0, 50},
{0, 59.5},
{-20, 59.5},
{-20, 68}},
color = {0, 0, 255}));
connect(idealDiode.p,g) annotation (Line(
points = {
{-40, 68},
{-82, 68},
{-82, -98},
{-100, -98}},
color = {0, 0, 255}));
connect(idealDiode1.n,thyristor1.Gate) annotation (Line(
points = {
{-20, -62},
{-20, -50},
{-22, -50}},
color = {0, 0, 255}));
connect(idealDiode1.p,g) annotation (Line(
points = {
{-20, -82},
{-42, -82},
{-42, -98},
{-100, -98}},
color = {0, 0, 255}));
connect(thyristor1.Anode,p) annotation (Line(
points = {
{-3, -40},
{-2, -40},
{-2, -60},
{80, -60},
{80, 0},
{104, 0}},
color = {0, 0, 255}));
connect(thyristor1.Anode,thyristor.Cathode) annotation (Line(
points = {
{-3, -40},
{-2, -40},
{-2, 40},
{-1, 40}},
color = {0, 0, 255}));
connect(thyristor1.Cathode,thyristor.Anode) annotation (Line(
points = {
{-21, -40},
{-22, -40},
{-22, 40},
{-19, 40}},
color = {0, 0, 255}));
annotation (
defaultComponentName = "triac",
Icon(
coordinateSystem(
preserveAspectRatio = true,
extent = {
{-100, -100},
{100, 100}}),
graphics = {
Polygon(
points = {
{-30, 0},
{-30, -100},
{70, -50},
{-30, 0}},
lineColor = {0, 0, 255}),
Polygon(
points = {
{70, 100},
{70, 0},
{-30, 50},
{70, 100}},
lineColor = {0, 0, 255}),
Line(
points = {
{70, 0},
{70, -100}},
color = {0, 0, 255}),
Line(
points = {
{-30, 0},
{-30, 100}},
color = {0, 0, 255}),
Line(
points = {
{-30, 0},
{-90, 0}},
color = {0, 0, 255}),
Line(
points = {
{70, 0},
{110, 0}},
color = {0, 0, 255}),
Line(
points = {
{-100, -88},
{-100, -80},
{-30, -50}},
color = {0, 0, 255}),
Text(
extent = {
{-150, 150},
{150, 110}},
textString = "%name",
lineColor = {0, 0, 255})}),
Documentation(
info = "<html>\n<p>This is a simple TRIAC model based on the extended thyristor model Modelica.Electrical.Analog.Semiconductors.Thyristor.\n<br>Two thyristors are contrarily connected in parallel, whereas each transistor is connected with a diode.\n<br>Further information regarding the electrical component TRIAC can be detected in documentation of the ideal TRIAC model.\n<br>As an additional information: this model is based on the Modelica.Electrical.Analog.Semiconductors.Thyristor.</p>\n<p><strong>Attention:</strong> The model seems to be very sensitive with respect to the choice of some parameters (e.g., VDRM, VRRM). This is caused by the thyristor model. Further investigations are necessary.</p>\n</html>",
revisions = "<html>\n<ul>\n<li><em>November 25, 2009 </em><br>\n\n by Susann Wolf<br><br>\n </li>\n</ul>\n</html>"));
end SimpleTriac;