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

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

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

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

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

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

Предлагаемые рабочие процессы

Чтобы создать переиспользуемый составной компонент:

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

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

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

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

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

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

    Для примера,

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

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

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

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

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

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

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

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

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

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

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

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

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

    Кроме того, можно использовать опцию управления 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, поэтому:

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

  • Connection Port блоки представлены connect операторы.

  • Другие блоки из библиотеки Utilities (Solver Configuration, Simscape Bus и так далее) не разрешены, поскольку они не имеют эквивалентного текстового представления.

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

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

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

См. также

| | | | |

Похожие темы