Новые возможности вариантных подсистем (variant subsystems) в R2013a

Михаил
29.03.2013 14:15:54

Новые возможности вариантных подсистем (variant subsystems) в R2013a

Насколько я могу судить, вариантные подсистемы впервые появились в релизе Simulink R2009b. С тех пор эта возможность для компонентного моделирования постоянно развивается, и теперь уже предлагается как полноценная замена для configurable subsystem, которая является более старой технологией.

В MATLAB R2013a появились новые возможности для вариантных подсистем.

  • Прямой выбор активного варианта подсистемы через логическое выражение.

Выбор варианта теперь может осуществляться либо через объект Simulink.Variant , либо через любое условное выражение. Раньше обязательно требовалось создавать объект Simulink.Variant для каждого варианта - таким образом, требовалось хранить и поддерживать эти варианты отдельно от модели. Использование непосредственных логических выражений упрощает работу с вариантами.

load_system('sldemo_variant_subsystems');
open_system('sldemo_variant_subsystems/Controller');

VSS_NONLINEAR_CONTROLLER
VSS_SECOND_ORDER_CONTROLLER
VSS_MODE
 
VSS_NONLINEAR_CONTROLLER =
 
Simulink.Variant
    Condition: 'VSS_MODE==1'

 
VSS_SECOND_ORDER_CONTROLLER =
 
Simulink.Variant
    Condition: 'VSS_MODE==2'


VSS_MODE =

     2

Как видите, у нас два варианта, которые описываются объектами VSS_NONLINEAR_CONTROLLER и VSS_SECOND_ORDER_CONTROLLER, а при помощи переменной VSS_MODE мы переключаемся между ними (обратите внимание на свойство Condition у Simulink.Variant).

Если мы откроем Block Parameters для подсистемы Controller, то в графическом интерфейсе мы можем увидеть, как определены варианты:

Введем непосредственное условие вместо Simulink.Variant (конечно, условие может быть композитным):

  • Мгновенное обновление вариантных подсистем и закомментированных блоков

Теперь, при изменении активного варианта, он будет подсвечен в модели автоматически. Вам не требуется вручную обновлять диаграмму (Ctrl-D). То же самое справедливо и для закомментированных блоков.

Выбираем другой вариант:

VSS_MODE = 2;

Видим, что в модели активировался контроллер второго порядка, а нелинейный контроллер теперь обозначен серым цветом.

А как вы используете вариантные подсистемы в своих моделях?


Просмотров: 1902
Комментариев: 2
Добавить комментарий
  • DeZh
    04.04.2013 17:29:56

    при генерации кода

    Как будет реализована генерация кода для такой подсистемы? Будет ли это #ifdef иль как?
Добавить комментарий