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

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

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

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

Чтобы отобразить типы данных сигнала, на вкладке Debug, нажмите Information Overlays > Port Data Type.

Ограничение данных

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

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

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

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

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

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. Анализ не может достичь всех целей тестирования в этой модели.

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