Description: "Package with models for source signals that are used with controllers"

- Home > Modelica

## Buildings.Controls.Sources

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

## Buildings.Controls.Sources.DayType

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;