exponenta event banner

Управление данными модели для упрощения анализа

Упрощение типов данных

Одним из способов упрощения модели является использование для назначенного типа данных сигнала типа данных, требующего наименьшего объема пространства для ожидаемых данных. Например, не используйте int тип данных для булевых данных, поскольку для булевых данных требуется только один бит.

В другом примере предположим, что у вас есть блок Sum с двумя входами, которые всегда являются целыми числами от -10 до 10. Задайте для параметра Output data type значение int8, а не int32 или double.

Для отображения типов данных сигнала на вкладке «Отладка» выберите Information Overlays (Информационные наложения) > Port Data Type (Тип данных порта).

Ограничить данные

Другим эффективным способом уменьшения сложности является ограничение входных данных набором репрезентативных значений или, в идеале, одним постоянным значением. Этот процесс, называемый дискретизацией, рассматривает входные данные как перечисление. Дискретизация позволяет обрабатывать нелинейную арифметику от умножения и деления максимально простым способом.

Следующая модель имеет блок Product, питающий блок Saturation. Исходные данные x и y имеют определенные проектные диапазоны, как показано, и блок насыщения ограничивает входной сигнал верхним и нижним значениями насыщения, которые составляют 8000 и 0 об/мин.

Программное обеспечение Simulink ® Design Verifier™ генерирует ошибки при попытке удовлетворить верхнему и нижнему пределам блока «Насыщенность», поскольку программное обеспечение не поддерживает нелинейную арифметику. Чтобы обойти эти ошибки, ограничьте один из входов набором дискретных значений .

Определите дискретные значения, необходимые для удовлетворения ваших потребностей в тестировании. Например, у вас может быть вход для скорости модели, и ваша конструкция содержит пути выполнения, которые зависят от скорости выше или ниже пороговых значений 80, 150, 600 и 8000 об/мин. Для эффективного анализа ограничьте значения скорости 50, 100, 200, 1000, 5000 или 10000 об/мин, чтобы каждое пороговое значение могло быть активным или неактивным.

Если требуется использовать более двух или трех значений, попробуйте задать ограниченные значения с помощью выражения, например

num2cell(minval:increment:maxval)

Используя предыдущую примерную модель, ограничьте второй вход (y) одним из следующих: 1, 2, 5, или 10 с использованием блока Test Condition, как показано в следующей модели. Программное обеспечение Simulink Design Verifier создает тестовые примеры для всех входов.

Можно также ограничить сигналы, которые являются промежуточными или выходными значениями модели. Ограничение таких сигналов облегчает работу вокруг умножения или деления внутри подсистем более низкого уровня, которые не зависят от входных данных модели.

Примечание

Дискретизация лучше всего ограничивается небольшим количеством входов (менее 10). Если модель требует дискретизации множества входных данных, попытайтесь обеспечить охват модели с помощью последовательного моделирования, как описано в разделе «Входные данные модели секционирования для инкрементной генерации тестов».

Блоки тестовых условий не обязательно размещать точно на входах. При принятии решения о размещении ограничений в модели необходимо учитывать следующие рекомендации.

  • Предпочтите ограничения на входные значения, так как программное обеспечение может проще обрабатывать входные данные.

  • Если необходимо наложить ограничения как на вход, так и на выход, например, чтобы избежать нелинейной арифметики, одним из ограничений должен быть диапазон, такой как [minval maxval]. Программа сначала проверяет значения на обоих концах диапазона и может вернуть тестовый случай, даже если лежащие в его основе вычисления нелинейны.

  • Убедитесь, что ограничения в соответствующих точках ввода и вывода не противоречат друг другу. Не ограничивайте выходные сигналы значениями, которые не могут быть достигнуты из-за ограничений на входные значения.

  • Избегайте создания зависимостей, противоречащих модели. Такие противоречия возникают, когда ограничение никогда не может быть удовлетворено, поскольку оно противоречит какому-либо аспекту модели или другому ограничению. Анализ противоречивых моделей может привести к зависанию Simulink Design Verifier.

    Следующая модель является простым примером противоречивой модели. Второй вход в блок умножения является константой 1, но блок «Тестовое условие» ограничивает его значением 2, 5, или 10. Анализ не может достичь всех целей теста в этой модели.

  • При работе с большими моделями, имеющими множество операций умножения и деления, может оказаться проще добавлять ограничения ко всем входам с плавающей запятой, чем определять точный набор входных данных, требующих ограничений.