При наличии модели, объединяющей код C с блоком вызывающего абонента C, можно протестировать код C с помощью диспетчера тестов и тестового кабеля.
Блок C Caller использует параметры конфигурации для определения пользовательского кода. При изменении параметров конфигурации синхронизируйте параметры между тестовым кабельным жгутом и моделью. Дополнительные сведения см. в разделах Синхронизация изменений между тестовым жгутом и моделью и Создание тестовых жгутов и Выбор свойств.
При изменении параметров конфигурации тестового кабеля можно переместить набор конфигурации в главную модель. Нажмите кнопку Push Changes или используйте sltest.harness.push.
Если вы изменяете параметры конфигурации главной модели в главной модели и хотите обновить параметры тестового электрического жгута, тестовый электрический жгут должен скопировать параметры конфигурации при перестроении. Это свойство можно задать двумя способами:
При создании тестового электрического жгута выберите Обновить параметры конфигурации и данные рабочей области модели при перестроении. Можно также выбрать «Перестроить электрический жгут при открытии», который перестраивается при каждом открытии электрического жгута.
Для существующих тестовых жгутов в окне предварительного просмотра кабельных трасс выберите один или несколько из следующих параметров: «Перестроить электрический жгут» > «Перестроить при открытии» или «Перестроить электрический жгут без компиляции модели», «Обновить параметры конфигурации электрического жгута» и «Рабочее пространство модели». Опции «Обновить параметры конфигурации кабелей» и «Рабочее пространство модели» обновляют эти параметры каждый раз при перестроении.
S-Functions - это описания компьютерного языка блоков Simulink ®, написанные на MATLAB ®, C, C++ или Fortran. Код, заключенный в S-функции, можно протестировать с помощью тестовых жгутов Simulink Test™. Тестирование кода в S-Functions может быть полезно для регрессионного тестирования унаследованного кода и для тестирования кода в системном контексте.
В этом примере выполняется тестирование кода в S-функциональном блоке с использованием тестового электрического жгута. Основная модель - это модель контроллера-установки установки кондиционирования/теплового насоса. Перед началом работы измените рабочую папку по умолчанию на папку с разрешениями на запись.
Примечание
Этот пример работает только на 64-разрядной платформе Windows ®.
Добавьте папку-пример к пути MATLAB и задайте имена файлов-примеров.
ep = fullfile(docroot,'toolbox','sltest','examples'); addpath(ep); md = 'sltestHeatpumpSfunExample.slx' cb = 'sltestHeatpumpBusPostLoadFcn.mat' dt = 'PumpDirection.m'
Откройте модель.
open_system(fullfile(ep,md))

В примере модели:
Контроллер представляет собой S-функцию, которая принимает значения температуры в помещении и заданные значения температуры.
Выход контроллера представляет собой шину с сигналами, которые управляют вентилятором, тепловым насосом и направлением теплового насоса (тепловым или холодным).
Установка принимает шину управления. Тепловой насос и сигналы вентилятора являются булевыми, а направление теплового насоса определяется +1 для охлаждения и -1 для обогрева.
Испытание охватывает четыре температурных режима. Каждое условие соответствует одному рабочему состоянию с выходами сигнала направления вентилятора, насоса и насоса.
| Температурные условия | Состояние системы | Команда «Вентилятор» | Команда насоса | Направление насоса |
|---|---|---|---|---|
|Troom_in - Tset| < DeltaT_fan | неработающий | 0 | 0 | 0 |
DeltaT_fan <= |Troom_in - Tset| < DeltaT_pump | только вентилятор | 1 | 0 | 0 |
|Troom_in - Tset| >= DeltaT_pump and Tset < Troom_in | охлаждение | 1 | 1 | -1 |
|Troom_in - Tset| >= DeltaT_pump and Tset > Troom_in | отопление | 1 | 1 | 1 |
На вкладке «Приложения» в разделе «Проверка модели», «Проверка» и «Тест» выберите «Тест Simulink», затем на вкладке «Тесты» выберите «Диспетчер тестов Simulink».
На панели инструментов Диспетчера тестов нажмите кнопку Создать, чтобы создать тестовый файл. Назовите и сохраните тестовый файл.
В тестовом случае в разделе Система в тесте нажмите
кнопку, чтобы загрузить текущую модель в тестовый случай.
В модели щелкните правой кнопкой мыши значок Controller_sfcn и выберите «Тестовый жгут» > «Создать» для «Controller_sfcn.»
Задайте свойства кабельных трасс.
На вкладке Основные свойства:
Задать для имени значение test_harness_1
Установить для источников и приемников значение «Нет» и область действия
Нажмите кнопку ОК, чтобы создать тестовый электрический жгут.
В тестовом случае в разделе «Тестируемая система» обновите список тестовых кабелей и выберите test_harness_1 для электрического жгута.
Создание входных данных в тестовом кабельном жгуте с константой Tset и изменяющийся во времени Troom_in.
Подключите блок константы к Tset введите и установите значение 75.
Добавьте блок синусоидальной волны в модель электрического жгута для моделирования температурного сигнала. Подключите блок синусоидальной волны к входу подсистемы преобразования Troom_in.
Дважды щелкните блок синусоидальной волны и задайте параметры:
| Параметр | Стоимость |
|---|---|
| Амплитуда | 15 |
| Уклон | 75 |
| Частота | 2 * пи/3600 |
| Фаза (рад) | 0 |
| Время выборки | 1 |
Выберите Интерпретировать векторные параметры как 1-D.

На панели «Решатель» панели инструментов Simulink установите для параметра «Время остановки» значение 3600.
В тестовом случае в окне Simulation Outputs (Выходные данные моделирования) щелкните Add. Выделите выходную шину контроллера S-Function.

В диалоговом окне Signal Selection (Выбор сигнала) нажмите кнопку Add (Добавить).
В разделе Критерии опорной структуры (Baseline Criteria) щелкните Захват (Capture), чтобы записать набор базовых данных из моделирования тестового электрического жгута. Сохраните набор базовых данных в рабочей папке. Базовые сигналы появляются в таблице.

Запустите тестовый случай. Результаты теста отображаются на панели «Результаты и артефакты».
Разверните результаты, чтобы просмотреть результат критериев опорной структуры. Тест базовой линии завершается успешно, поскольку выходные данные моделирования идентичны данным базовой линии.
