主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을영문으로보려면여기를클릭하십시오。

不同的子系统

이모델에서는仿真万博1manbetx软件子系统®变体을보여줍니다。变体子系统을사용하면시뮬레이션중에하나의구현만활성상태인서브시스템을대상으로여러구현을제공할수있습니다。모델을수정하지않고도활성구현을프로그래밍방식으로교체하여다른구현중하나로대체할수있습니다。

变体子系统개요

变体子系统블록은둘이상의자식서브시스템을포함하며,포함된자식서브시스템중하나만모델실행중에활성상태에있습니다。활성자식서브시스템을활성变体라고합니다。전역작업공간에서변수의값을변경하거나变体子系统블록대화상자를사용하여变体선택지를수동으로재정의함으로써变体子系统블록의활성变体를프로그래밍방식으로전환할수있습니다。활성变体는모델컴파일중에仿真软件万博1manbetx에의의해变体子系统尺寸및外港블록에프로그래밍방식으로연결됩니다。

变体선택지를프로그래밍방식으로제어하기위해,变体子系统블록대화상자에서万博1manbetx仿真软件。变体객체가각자식서브시스템에연결됩니다。万博1manbetx仿真软件。变体객체는MATLAB®전역작업공간에만들어집니다。이들객체는표현식인条件속성을갖습니다。이속성은부울값으로평가되며활성变体자식서브시스템을결정하는데사용됩니다。

참고:MATLAB®전역작업공간,모델작업공간,마스크작업공간또는데이터사전에서变体제어를지정할수있습니다。

예를들어,전역작업공간에서VSS_LINEAR_CONTROLLER 万博1manbetx= Simulink.Variant(“VSS_MODE = = 1”);을정의하면

해당变体의활성화시점이생성자인수(“VSS_MODE = = 1”)에의해정의되는万博1manbetx仿真软件。变体객체가만들어집니다。이제变体子系统대화상자에서VSS_LINEAR_CONTROLLER를变体子系统내의자식서브시스템중하나에연결하면됩니다。기본작업공간에서다음과같이정의하면

VSS_MODE = 1

전역작업공간에서VSS_LINEAR_CONTROLLER变体가활성화됩니다。이러한조건인수는스칼라변수,열거형,등식,부등식,& &및~로구성된단순표현식일수있습니다。우선순위를나타내기위해괄호()를사용할수있습니다。

变体子系统사용하기

이예제의모델은MATLAB전역작업공간에정의된다음과같은变体객체제와变体어변수를사용합니다。

VSS_LINEAR_CONTROLLER 万博1manbetx= Simulink.Variant(“VSS_MODE = = 1”);

VSS_NONLINEAR_CONTROLLER 万博1manbetx= Simulink.Variant(“VSS_MODE = = 2”);

VSS_MODE = 2;

예제모델sldemo_variant_subsystems를열면文件-> ModelProperties ->回调에정의된PreLoadFcn이실행됩니다。그러면전역작업공간이控制器라는变体子系统블록의변수로채워집니다。

open_system (“sldemo_variant_subsystems”

그림1:예제모델sldemo_variant_subsystems

控制器서브시스템의万博1manbetx仿真软件。变体객체연결을지정하려면控制器서브시스템을마우스오른쪽버튼으로클릭하고子系统参数를선택하십시오。이렇게하면控制器서브시스템블록대화상자가열립니다。

控制器서브시스템블록대화상자는2개의잠재적变体를지정합니다。2개의变体는차례로전역작업공간에있는2개의万博1manbetx仿真软件。变体객체VSS_LINEAR_CONTROLLERVSS_NONLINEAR_CONTROLLER에연결됩니다。이들객체는条件이라는속성을갖습니다。이속성은부울로평가되는표현식으로,어느变体가활성상태인지결정합니다。이조건은变体子系统블록대화상자에도나와있습니다。이예제에서VSS_LINEAR_CONTROLLERVSS_NONLINEAR_CONTROLLER의조건속성은각각VSS_MODE = = 1VSS_MODE = = 2입니다。변수VSS_MODE는전역작업공간에있으며,표준MATLAB변수이거나万博1manbetx仿真软件。参数일수있습니다。

연결된变体객체가없거나变体子系统파라미터대화상자에서变体객체앞에‘%’(주석)문자가있는경우자식서브시스템은주석처리된것으로간주되어모델실행중에사용되지않습니다。

open_system (“sldemo_variant_subsystems /控制器”);

그림2:控制器서브시스템블록의내용

变体子系统블록내에轮廓尺寸、外港、子系统블록을배치할수있습니다。이예제에서线性控制器서브시스템블록은变体객체VSS_LINEAR_CONTROLLER에연결되어있고非线性控制器서브시스템블록은变体객체VSS_NONLINEAR_CONTROLLER에연결되어있습니다。

变体子系统내에서는신호연결이허용되지않습니다。万博1manbetx仿真软件는모델을시뮬레이션할때尺寸및外港블록을활성变体에프로그래밍방식으로연결합니다。

활성变体전환하기

线性控制器变体를사용하여시뮬레이션하려면

VSS_MODE = 1

위와같이전역작업공간에정의하고모델을시뮬레이션합니다。

open_system (“sldemo_variant_subsystems /控制器”“参数”);close_system (“sldemo_variant_subsystems /控制器”) VSS_MODE = 1;%#ok(由sldemo_variant_子系统使用)sim卡sldemo_variant_subsystems

그림3:线性控制器变体를사용한시뮬레이션

非线性控制器를사용하여시뮬레이션하려면

VSS_MODE = 2

위와같이전역작업공간에정의하고모델을시뮬레이션합니다。

VSS_MODE = 2;%(由sldemo_variant_子系统使用)sim卡sldemo_variant_subsystems

그림4:非线性控制器变体를사용한시뮬레이션

열거형및재사용

sldemo_variant_subsystems_enum모델은다음과같은万博1manbetx仿真软件。变体기능을보여줍니다。

1.열거형:MATLAB열거형클래스는变体객체의조건의가독성을개선하는용도로사용할수있습니다。

2.재사용:万博1manbetx仿真软件。变体객체는여러变体子系统블록에서재사용할수있습니다。

이예제에서는MATLAB전역작업공간에정의된다음과같은변수를사용합니다。

VSSE_LINEAR_CONTROLLER 万博1manbetx=仿真软件。变体(…“VSSE_MODE = = sldemo_vss_CONTROLLER_TYPE.LINEAR”)

VSSE_NONLINEAR_CONTROLLER 万博1manbetx=仿真软件。变体(…“VSSE_MODE = = sldemo_vss_CONTROLLER_TYPE.NONLINEAR”)

VSSE_MODE = sldemo_vss_CONTROLLER_TYPE。线性

VSSE_PROTOTYPE 万博1manbetx=仿真软件。变体(…“VSSE_MODE_BUILD = = sldemo_vss_BUILD_TYPE.PROTOTYPE”)

VSSE_PRODUCTION 万博1manbetx=仿真软件。变体(…“VSSE_MODE_BUILD = = sldemo_vss_BUILD_TYPE.PRODUCTION”)

VSSE_MODE_BUILD = sldemo_vss_BUILD_TYPE。生产

이들万博1manbetx仿真软件。变体객체에서열거형클래스sldemo_vss_BUILD_TYPE.msldemo_vss_CONTROLLER_TYPE.m을사용하여万博1manbetx仿真软件。变体조건파라미터를정의합니다。이렇게하면가독성이개선됩니다。

3개의필터变体子系统블록인Filter1, Filter2, Filter3은모두VSSE_PROTOTYPEVSSE_PRODUCTION万博1manbetx仿真软件。变体객체를사용합니다。

참고:열거형클래스의이름은데이터형이름과전역작업공간변수이름사이에서고유해야하며대소문자를구분합니다。

예제모델sldemo_variant_subsystems_enum을열면文件-> ModelProperties ->回调에정의된PreLoadFcn이실행됩니다。그러면전역작업공간이变体子系统블록의변수로채워집니다。

open_system (“sldemo_variant_subsystems_enum”

그림5:예제모델sldemo_variant_subsystems_enum

열거형을变体제어변수로사용하는코드생성

열거형을사용하여变体제어값으로사용되는정수에의미있는이름을지정할수있습니다。

rtwdemo_preprocessor_subsys모델을고려하겠습니다。

MATLAB편집기에서열거형값을의미있는이름에매핑하는클래스를정의합니다。

열거형이올바르게정의되지않은경우오류가표시됩니다。다음은오류가발생하는몇가지시나리오입니다。

잘못된정의1:이경우,万博1manbetx仿真软件。IntEnumType은정의되어있지않습니다。

잘못된정의2:이경우,변수는초기화되지않습니다。

다음예와같이变体제어표현식을입력합니다。

그림6:블록파라미터

전역작업공간에서V값을정의합니다。예를들면V = 2를지정합니다。값은일반MATLAB변수또는万博1manbetx仿真软件。参数객체일수있습니다。그러나값은열거형이될수없습니다。

이제变体활성화시점을코드컴파일(代码编译)로설정하여코드를생성합니다。샘플코드는아래와같습니다。

그림7:생성된코드

万博1manbetx仿真软件。变体객체나万博1manbetx仿真软件。参数객체,MATLAB변수를变体제어변수로사용하는방법에대한자세한내용은变型控制简介指定变型控件的方法섹션을참조하십시오。

变体子系统의코드생성에대한자세한내용은嵌入式编码器문서를참조하십시오。

추가정보

变体系统设计