Преобразование подсистем на составные компоненты

Функция subsystem2ssc позволяет вам преобразовать подсистему, состоящую полностью из блоков Simscape™ в текстовый файл Simscape. Функция генерирует составной файл компонента на основе настройки подсистемы. Если преобразовываемая подсистема содержит вложенные подсистемы, то функция генерирует несколько файлов Simscape, один для каждой подсистемы.

Используйте эту функциональность для:

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

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

  • Совместно используйте свои модели с клиентами, не показывая базовую интеллектуальную собственность.

Предложенные рабочие процессы

Создать допускающий повторное использование составной компонент:

  1. Смоделируйте физический компонент (такой как двигатель, клапан, усилитель, и так далее) использующие блоки от библиотеки Simscape Foundation, библиотек продукта дополнения или авторских блоков. Подстройте параметры и диагностируйте модель по мере необходимости.

  2. Выберите блоки и строки связи, которые представляют ваш физический компонент и создают подсистему из выбора. Для получения дополнительной информации смотрите, Создают Подсистему из Выбора (Simulink).

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

  3. Используйте функцию subsystem2ssc, чтобы преобразовать вашу подсистему на текстовый составной компонент. Если преобразовываемая подсистема содержит вложенные подсистемы, то функция генерирует несколько файлов Simscape, один для каждой подсистемы.

Включить совместное использование модели, не показывая базовую интеллектуальную собственность:

  1. При преобразовании подсистемы используйте функцию subsystem2ssc с аргументом targetFolder, чтобы поместить файл или файлы, сгенерированные функцией в целевую папку.

    Например,

    subsystem2ssc('ssc_dcmotor/DC Motor','./MotorsLibrary')
    

    создает файл с именем DC_Motor.ssc и помещает его в папку под названием MotorsLibrary.

  2. Создайте и поместите другие модели электродвигателя в ту же целевую папку.

  3. Защитите исходные файлы в целевой папке при помощи функции ssc_protect.

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

Можно поместить сгенерированные файлы в папку пакета и создать библиотеку при помощи функций ssc_mirror или ssc_build. Однако, если ваша подсистема содержит вложенные подсистемы, необходимо отредактировать пути к субкомпоненту в сгенерированных файлах вручную, чтобы совпадать намеченной структурой пакета. Также можно использовать блоки Компонента Simscape, которые работают с плоской иерархией целевой папки без модификации.

Продвижение параметра

Можно отметить членский блок и параметры подсистемы для продвижения верхнему уровню с помощью маски подсистемы. Функция subsystem2ssc автоматически генерирует соответствующий код Simscape, подобный, чтобы составить компоненты. Для получения дополнительной информации смотрите Компоненты Составного объекта Параметризации.

Когда вы развертываете сгенерированный составной файл как авторский блок, диалоговое окно блока содержит эти продвинутые параметры только.

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

  1. Откройте Моторную модель Постоянного электромагнита в качестве примера путем ввода ssc_dcmotor в Командном окне MATLAB®.

  2. Щелкните правой кнопкой по подсистеме двигателя постоянного тока и, из контекстного меню, выберите Mask> Edit Mask.

  3. Кликните по вкладке Parameters & Dialog. Используйте опцию управления Promote, чтобы продвинуть параметр Inertia блока Inertia к маске подсистемы. Для получения дополнительной информации смотрите, Продвигают Базовые Параметры Маску Подсистемы (Simulink).

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

  4. Преобразуйте подсистему двигателя постоянного тока в файл компонента Simscape и поместите этот файл в свою текущую рабочую папку:

    subsystem2ssc('ssc_dcmotor/DC Motor')

    Функция создает файл с именем DC_Motor.ssc в текущей папке. Откройте файл в редакторе.

    component DC_Motor
      parameters
        inertia = {.01, 'cm^2*g'}; %Inertia
      end
      nodes
        C = foundation.mechanical.rotational.rotational;
        R = foundation.mechanical.rotational.rotational;
        V1 = foundation.electrical.electrical;
        V0 = foundation.electrical.electrical;
      end
      components(ExternalAccess = observe)
        Rotor_Resistance = foundation.electrical.elements.resistor(R = {3.9, 'Ohm'});
        Rotor_Inductance = foundation.electrical.elements.inductor(l = {1.2e-05, 'H'}, r = {0, 'Ohm'}, g = {1e-09, '1/Ohm'}, i_L = {value = {0, 'A'}, priority = priority.high});
        Rotational_Electromechanical_Converter = foundation.electrical.elements.rotational_converter(K = {.0006875493541569879, 's*V/rad'});
        Inertia = foundation.mechanical.rotational.inertia(inertia = inertia);
        Friction = foundation.mechanical.rotational.friction(brkwy_trq = {2e-05, 'm*N'}, brkwy_vel = {.03347, 'rad/s'}, Col_trq = {2e-05, 'm*N'}, visc_coef = {0, 'm*s*N/rad'});
      end
      connections
        connect(V0,Rotor_Resistance.p);
        connect(Rotational_Electromechanical_Converter.p,Rotor_Inductance.n);
        connect(V1,Rotational_Electromechanical_Converter.n);
        connect(Rotor_Inductance.p,Rotor_Resistance.n);
        connect(R,Friction.R);
        connect(R,Inertia.I);
        connect(R,Rotational_Electromechanical_Converter.R);
        connect(C,Friction.C);
        connect(C,Rotational_Electromechanical_Converter.C);
      end
    end

    Заметьте блок parameters верхнего уровня, содержащий параметр inertia.

  5. Если вы теперь указываете блок Simscape Component на исходный файл DC_Motor.ssc, диалоговое окно блока содержит параметр под названием Inertia.

Ограничения

Преобразовываемая подсистема должна состоять полностью из блоков, созданных на языке Simscape, таких как блоки от библиотеки Simscape Foundation, библиотек продукта дополнения или авторских блоков. Блоки от библиотеки Simscape Utilities не созданы на языке Simscape, поэтому:

  • Если подсистема содержит блок Simscape Component, то во время преобразования этот блок заменяется его исходным компонентом.

  • Блоки Порта подключения представлены операторами connect.

  • Другие блоки от библиотеки Utilities (Настройка решателя, Шина Simscape, и так далее) не позволены, потому что у них нет эквивалентного текстового представления.

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

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

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

Смотрите также

| | | | |

Похожие темы