Этот пример моделирует домашнюю систему климат-контроля с помощью блока Truth Table. Дома редко поддерживают постоянный климат без системы климат-контроля на месте, и жители обычно полагаются на автоматизированные системы, чтобы поддерживать желаемый климат. Поскольку температура и влажность являются динамическими, поддержание желаемых условий требует последовательного мониторинга и регулировки. Чтобы смоделировать, как дом активирует различные подсистемы, которые поддерживают желаемый климат, эта модель использует блок Truth Table, чтобы управлять принятием логических решений.
В этом примере блок Таблица, помеченный как ClimateController, управляет всеми выходами физической подсистемы. Блок использует четыре входов: необходимую температуру T_thresh
, фактическая домашняя температура t
желаемая влажность H_thresh
и фактическая домашняя влажность h
. Дважды кликните блок, чтобы увидеть, как блок использует входы для создания выходов. Блок ClimateController включает две таблицы: Таблицу условий и Таблицу действий.
Таблица условий показывает, как логически оцениваются входы, и иллюстрирует два сравнения, сделанные блоком, и четыре действия, которые могут быть предприняты. Чтобы выполнить первое действие, два условия должны быть True
. Если оба условия не True
блок проверяет условия, изложенные в следующем столбце решений, который требует, чтобы было True
только первое условие. Эта оценка продолжается слева направо, пока не будет принято решение или не будет достигнут последний столбец решений, который затем выполняется. В этом примере
-
функции ввода, такие как False
условия. В результате блок будет вести себя так же, если -
условия были явно определены как False
. Однако автоматически сгенерированный код использует только True
и False
условия могут привести к неоптимальному покрытию кода. Чтобы избежать этой проблемы, этот пример использует -
условия.
В первой строке блок сравнивает домашнюю температуру с желаемой температурой, и домашний охладитель и нагреватель управляются с помощью CoolOn
и HeatOn
действия, соответственно. Когда t > T_thresh
блок активирует CoolOn
действие. Если это условие не True
блок активирует HeatOn
действие. Во второй строке блок сравнивает домашнюю влажность с желаемой влажностью, и увлажнителем управляют с помощью HumidOn
действие. Когда h < H_thresh
блок активирует HumidOn
действие.
Таблица действий определяет выходы блоков, сопоставленные с каждым логическим действием. В первой строке CoolOn
устанавливает значение cooler
на 1
и значение heater
на 0
. Во второй строке HeatOn
устанавливает значение heater
на 1
и значение cooler
на 0
. По умолчанию увлажнитель воздуха 0
если блок не включен HumidOn
.
В модели зеленые блоки с маркировкой Humidifier, Cooler и Heater представляют физические подсистемы, которые регулируют климат дома. Подсистема Увлажнителя включает блок Switch, который взаимодействует с выходом блока ClimateController. Если вход Подсистемы Увлажнителя 1
подсистема выводит 1.5
. В противном случае подсистема выводит значение 0
.
Подсистемы Нагреватель и Охладитель работают по аналогичным принципам. Каждый из них включает два блока Switch. Один из Блока switch выводит значение, которое влияет на температуру, которая является выходом в портах dt и dt1 для Охладителя и Нагревателя, соответственно. Другой блок Switch выводит значение, которое влияет на влажность, которое выводится в портах dh и dh1 для Охладителя и Нагревателя, соответственно. Если cooler = 1
, активируется Подсистема Охладителя, и если heater = 1
Активируется Подсистема Нагревателя. При подключении Подсистема нагревателя выводит 1
на dt1 и выходах Охладителя -1
при дт. Обе подсистемы выводят -0.5
в dh и dh1 при помолвке.
Из-за настройки блока ClimateController подсистемы Cooler и Heater не активируются одновременно.
Внешняя жара и влажность также влияют на климат дома. Модель представляет эффект этих условий как поток тепла и влажности. Подсистема externalHeatFlow моделирует внешний тепловой поток, а подсистема externalHumidityFlow моделирует внешний влажный поток. Подсистема externalHeatFlow принимает различие между внешней и внутренней температурами и умножает различие на коэффициент.
Более высокие значения коэффициента представляют большие тепловые потоки, которые происходят в менее изолированных домах. Несмотря на то, что подсистема externalHumidityFlow представляет другое физическое поведение, чем externalHeatFlow, подсистема externalHumidityFlow использует то же расположение блоков и соединений. Подсистема externalHumidityFlow принимает различие между внешней и внутренней влажностью и умножает различие на коэффициент.
Выполнение модели заполняет два блока Floating Scope. Блок Scope с меткой temperatureScope отображает внешнюю температуру (ET
) и домашней температуры (temperature
).
Блок Scope, маркированный humidityScope, строит графики внешней влажности (EH
) и домашней влажности (humidity
).
Симуляция сконфигурирована так, чтобы она выполнялась бесконечно. Чтобы остановить симуляцию, можно остановить ее вручную, нажав кнопку Stop или настроив время остановки перед запуском симуляции.
Можно настроить внешнюю температуру при помощи другого внешнего сигнала температуры или путем изменения амплитуды сигнала. Попробуйте настроить амплитуду блоков Sine Wave, externalTemp и externalHumid, и наблюдайте, как модель реагирует.
Другие дома могут быть не такими изолированными или могут иметь более эффективные подсистемы климат-контроля. Эти физические различия влияют на выходы подсистем. Попробуйте настроить выходы подсистемы нагревателя или охладителя путем изменения значений блоков Constant.