Package with models for source signals that are used with controllers
Information
This package contains components models for sources
that are used with controllers.
For additional models, see also
Modelica.Blocks.Sources.
Extends from Modelica.Icons.SourcesPackage (Icon for packages containing sources).
Package Content
Name |
Description |
DayType
|
Block that outputs a signal that indicates week-day or week-end |
Examples
|
Collection of models that illustrate model use and test models |
Block that outputs a signal that indicates week-day or week-end
Information
This block outputs a periodic signal that indicates the type of the day.
It can for example be used to generate a signal that indicates whether
the current time is a work day or a non-working day.
The output signal is of type
Buildings.Controls.Types.Day.
The parameter nout
determines how many days should be
sent to the output. For applications in which only the current day
is of interest, set nout=1
.
For applications in which the load is predicted for the next 24 hours,
set nout=2
in order to output the type of day for today and for
tomorrow.
The transition from one day type to another always happens when the simulation time
is a multiple of 1 day. Hence, if the simulation starts for example
at t=-3600 seconds, then the first transition to another day will be
at t=0.
Extends from Modelica.Blocks.Icons.DiscreteBlock (Graphical layout of discrete block component icon).
Parameters
Type | Name | Default | Description |
Integer | nout | 2 | Number of days to output. Set to two for one day predictions |
Day | days[:] | {Buildings.Controls.Types.Da... | Array where each element is a day indicator |
Integer | iStart | 1 | Index of element in days at simulation start |
Connectors
Type | Name | Description |
output DayTypeOutput | y[nout] | Type of the day for the current and the next (nout-1) days |
Modelica definition
model DayType
"Block that outputs a signal that indicates week-day or week-end"
extends Modelica.Blocks.Icons.DiscreteBlock;
parameter Integer nout = 2
"Number of days to output. Set to two for one day predictions";
parameter Buildings.Controls.Types.Day[:] days={
Buildings.Controls.Types.Day.WorkingDay,
Buildings.Controls.Types.Day.WorkingDay,
Buildings.Controls.Types.Day.WorkingDay,
Buildings.Controls.Types.Day.WorkingDay,
Buildings.Controls.Types.Day.WorkingDay,
Buildings.Controls.Types.Day.NonWorkingDay,
Buildings.Controls.Types.Day.NonWorkingDay}
"Array where each element is a day indicator";
parameter Integer iStart(min=1, max=
size(days, 1)) = 1
"Index of element in days at simulation start";
Interfaces.DayTypeOutput y[nout]
"Type of the day for the current and the next (nout-1) days";
protected
parameter Modelica.SIunits.Time samplePeriod=86400
"Sample period of the component";
output Integer iDay(min=1, max=
size(days, 1))
"Pointer to days that determines what day type is sent to the output";
parameter Modelica.SIunits.Time firstSample(fixed=false)
"Time when the sampling starts";
output Boolean sampleTrigger
"True, if sample time instant";
output Boolean skipIDayIncrement
"If true, don't increment iDay in first sample";
initial equation
iDay = iStart;
firstSample =
ceil(time/86400)*86400;
// skipIDayIncrement is true if the simulation starts at midnight.
skipIDayIncrement =
abs(firstSample-time) < 1E-8;
equation
for i
in 1:nout
loop
y[i] = days[
mod(iDay+i-2,
size(days, 1))+1];
end for;
sampleTrigger =
sample(firstSample, samplePeriod);
when sampleTrigger
then
skipIDayIncrement = false;
if pre(skipIDayIncrement)
then
iDay =
pre(iDay);
else
iDay =
mod(
pre(iDay),
size(days, 1))+1;
end if;
end when;
end DayType;
Automatically generated Mon Jul 13 14:22:35 2015.