Hi,
Я использую MATLAB/SimulinkR2019b и его новую функцию: Справочник по подсистемам.
Во время разработки я использую подсистемы, на которые есть ссылки, поскольку они используются во многих моделях.
Прежде чем модели будут распространены среди клиентов, упомянутые подсистемы должны быть возвращены обратно в «обычные» подсистемы по разным причинам.
Поскольку MathWorks не предоставляет возможности для такого поведения, я написал некоторый код, чтобы сделать это. В этом коде я использую функцию «расширить подсистему», чтобы разорвать ссылки на упомянутые подсистемы.
Теперь я должен изменить свою версию MATLAB/Simulink на R2020a, и внезапно функция расширения подсистемы больше не работает для подсистем, на которые ссылаются. Это изменение не задокументировано ни в примечаниях к выпуску, ни где-либо еще.
Есть ли у кого-нибудь идеи, как я могу изменить мои ссылочные подсистемы обратно на «нормальные» подсистемы, не копируя весь контент из одной подсистемы в другую?
ОТВЕЧАТЬ
Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.
Я могу подтвердить, что функция расширения упомянутых подсистем была удалена в R2020a. Итак, похоже, что лучший способ — скопировать указанную подсистему во все места. Это можно сделать с помощью команды simulink.blockdiagram.copycontentstosubsystem. Я полагаю, что replace_block будет полезен вместе с ним, но я не пробовал.
Я написал сценарий, чтобы продемонстрировать, как вы можете это сделать. Вместо этого я использовал add_line и delete_line для повторного подключения подсистем.
И вот скрипт, который это делает:
refSubsystem = 'subsys20b'; modelName = 'modelRefSubsys20b'; open_system(modelName); oldBlock = [ modelName '/Subsystem Reference']; newBlock = [ modelName '/subsystem']; % create a copy of the referenced subsystem add_block('built-in/Subsystem', newBlock) Simulink.BlockDiagram.copyContentsToSubsystem(refSubsystem, newBlock) % Retrieve useful info from the old block t1 = get_param(oldBlock, 'Portconnectivity'); t2 = get_param(oldBlock, 'PortHandles'); t3 = get_param(newBlock, 'PortHandles');
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ
Возвращение ссылочных подсистем обратно к обычным подсистемам
Перед тем, как модели будут распространены среди клиентов, ссылочные подсистемы должны быть возвращены обратно в «нормальные подсистемы…matlabarticlesworld.blogspot .com»