Управляйте данными модели, чтобы упростить анализ

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

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

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

Чтобы отобразить типы данных сигнала в окне модели, выберите Display> Signals & Ports> Port Data Types.

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

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

Следующая модель имеет блок продукта, питающий блок Saturation.

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

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

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

num2cell(minval:increment:maxval)

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

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

Примечание

Дискретизация лучше всего ограничивается небольшим количеством входных параметров (меньше чем 10). Если ваша модель требует дискретизации многих входных параметров, попытайтесь достигнуть покрытия модели посредством последовательных симуляций, как описано во Входных параметрах Модели Раздела для Инкрементной Генерации тестов.

Блоки Условия испытания не должны быть помещены точно на входных параметрах. В решении, куда поместить ограничения в вашу модель, рассмотрите следующие инструкции:

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

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

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

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

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

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