Simulink Requirements поддерживает два различных способа хранить данные о ссылке для моделей Simulink: можно или встроить данные о ссылке в файл .slx
, или можно сохранить ссылки во внешнем файле .slmx
(внешний файл .req
для R2017a и более ранних релизов).
Для более старых моделей Simulink в формате .mdl
встроенное устройство хранения данных не является возможным началом R2017b, необходимо или хранить данные о ссылке внешне (в отдельном файле .slmx
, или необходимо обновить файл модели Simulink до формата .slx
. Вам предложат обновить ваши данные, когда вы загрузите такую модель впервые после обновления до R2017b.
Встроенное устройство хранения данных облегчает совместно использовать вашу работу - вы не должны отслеживать дополнительный файл *.slmx
, но это имеет недостаток, что образцовый файл изменяется каждый раз, когда вы добавляете, редактируете или удаляете ссылку требований. Кроме того, при использовании внешних файлов *.slmx
, можно управлять несколькими наборами ссылок требований для той же модели путем конфигурирования сеанса, чтобы загрузить один или другой файл .slmx
.
Этот пример будет использовать Модели контроллеров Окна со стеклоподъемником, чтобы продемонстрировать, как работать с внешне сохраненными ссылками RMI. Откройте модель. В случае, если ваше опытное с этой моделью прежде, используйте команду rmimap.map(MODEL,'clear')
, чтобы отбросить любой известный файл .slmx
, сопоставляющий прежде, чем открыть модель:
rmimap.map('slvnvdemo_powerwindowController', 'clear'); open_system('slvnvdemo_powerwindowController');
Removing all mapping for [MATLAB]/toolbox/slrequirements/slrequirementsdemos/slvnvdemo_powerwindowController.slx
Выберите Analysis> Requirements Traceability> Settings и откройте диалоговое окно Settings для вкладки Storage. Нажмите Store внешне переключатель.
Имя файла по умолчанию для того, чтобы сохранить данные о ссылках требований является ModelName .slmx
. Если файл не присутствует в образцовой папке, модель принята, чтобы не иметь никаких ссылок на требования, когда можно проверить путем выделения модели.
rmipref('StoreDataExternally', true); rmi('highlightModel', 'slvnvdemo_powerwindowController');
Вы создаете и управляете ссылками точно тем же способом, которым вы делаете с внутренней памятью. Как пример, создайте одну новую ссылку от модели до документа:
Откройте PowerWindowSpecification.docx
Найдите, что вход пассажира подзаголовка состоит из вектора с тремя элементами под разделом High Level Discrete Event Control Specification,
Выберите подзаголовок с мышью
Щелкните правой кнопкой по соответствующему блоку Mux
Нажмите Requirements Traceability> Link to Selection in Word.
Если модель все еще подсвечена, подсветки блока Mux, чтобы указать на данные о связанных требованиях. Обратите внимание на то, что строка заголовка не указывает на несохраненные изменения. Новая информация о ссылке хранится отдельно из модели. Simulink предупреждает вас, что ссылки будут сохранены в отдельном файле.
testReqLink = rmi('createEmpty'); testReqLink.description = 'testReqLink'; testReqLink.doc = 'powerwin_reqs\PowerWindowSpecification.docx'; testReqLink.id = '?passenger input consists of a vector with three elements'; rmi('set', 'slvnvdemo_powerwindowController/Mux4', testReqLink);
Warning: Invalid destination or unregistered type: powerwin_reqs\PowerWindowSpecification.docx(other)
При работе с моделью, которая хранит данные RMI внешне, изменения в ссылках требования сохранены когда вы:
Сохраните или Сохраните как модель Simulink, даже если строка заголовка не указывает на несохраненные изменения.
Закройте модель. Вам предложат сохранить изменения ссылок если таковые имеются.
Используйте Сохраняют Ссылки... или Сохраняют Ссылки Как... ярлыки под подменю Analysis> Requirements> Link File.
Закройте модель. Вам предложат о ссылке, которую вы только создали. Можно сохранить файл ссылок с именем ModelName .slmx
по умолчанию в каталоге модели или выбрать различное имя файла и/или местоположение.
close_system('slvnvdemo_powerwindowController', 0);
Когда вы откроете модель, RMI попытается загрузить данные о ссылках требований из недавно используемого местоположения для этой модели. Можно также выбрать Analysis> Requirements> Links File> ссылки Load..., чтобы выбрать различный .slmx
(или более старый .req
) файл. Это позволяет использовать несколько наборов ссылок с той же моделью, например, ссылок на описания конструктивного изменения, которые отличаются от ссылок до спецификаций первоначального проекта.
Вновь откройте модель, выберите Analysis> Requirements> Links File> ссылки Load..., чтобы открыть файловый браузер и указать на slvnvdemo_powerwindowRequirements.req
в папке toolbox/slrequirements/slrequirementsdemos/powerwin_reqs
.
Подсветите требования в модели, чтобы подтвердить, что альтернативный набор ссылок теперь сопоставлен с моделью. Можно переместиться и изменить эти ссылки таким же образом, вы работали бы со встроенными ссылками (в модели).
open_system('slvnvdemo_powerwindowController'); otherReqFile = fullfile(matlabroot, 'toolbox', 'slrequirements', 'slrequirementsdemos', 'powerwin_reqs', 'slvnvdemo_powerwindowRequirements.req'); rmimap.map('slvnvdemo_powerwindowController', otherReqFile); rmi('highlightModel', 'slvnvdemo_powerwindowController');
Mapping [MATLAB]/toolbox/slrequirements/slrequirementsdemos/slvnvdemo_powerwindowController.slx to [MATLAB]/toolbox/slrequirements/slrequirementsdemos/powerwin_reqs/slvnvdemo_powerwindowRequirements.req Warning: Invalid destination or unregistered type: ./powerwin_reqs/powerwindowspecification.docx(other) Warning: Invalid destination or unregistered type: ./powerwin_reqs/powerwindowspecification.docx(other) Warning: Invalid destination or unregistered type: ./powerwin_reqs/powerwindowspecification.docx(other) Warning: Invalid destination or unregistered type: ./powerwin_reqs/powerwindowspecification.docx(other) Warning: Invalid destination or unregistered type: ./powerwin_reqs/powerwindowspecification.docx(other) Warning: Invalid destination or unregistered type: ./powerwin_reqs/powerwindowspecification.xlsx(other)
Модель с существующими встроенными ссылками требований может быть преобразована во внешнее устройство хранения данных. Соединитесь данные больше не будут храниться в .slx файле, но в новом файле .slmx
. Испытать это:
Откройте другую модель, которая внутренне хранила данные RMI.
Повторно сохраните с новым именем, чтобы создать writeable копию.
Выберите Analysis> Requirements> Links File> Save Links As..., чтобы открыть файловый браузер.
Выберите имя файла для нового внешнего файла .slmx
и нажмите ОК. Модель является resaved без встроенных ссылок, и новый файл .slmx
Ваша способность использовать и управлять ссылками в этой модели теперь зависит от внешнего файла.
Подсветите требования, чтобы подтвердить, что данные о ссылке доступны.
Вновь откройте модель и подсветите ссылки. Ничто не подсвечено, потому что данные более не доступны.
Удалите временную копию модели.
Точки, чтобы иметь в виду, прежде чем вы переместите внутренне сохраненные ссылки на внешний файл:
Необходимо будет нести дополнительный файл .slmx
наряду с образцовым файлом.
Имя файла не по умолчанию и ассоциации местоположения хранятся в пользовательских настройках. Если вы перемещаете или переименовываете файл .slmx
вне MATLAB, необходимо будет вручную указать RMI на новое местоположение, когда модель вновь открыта.
Когда один пользователь сконфигурировал местоположение не по умолчанию или имя для файла .slmx
, сопоставленного с моделью, другие пользователи RMI должны будут вручную выбрать ссылки Load, когда они открывают модель. Заданное местоположение сохранится в настройках каждого пользователя и не должно изменяться, если файлы не будут перемещены или переименованы снова.
open_system('slvnvdemo_fuelsys_officereq') tempModelName = 'fuelsys_officereq_copy'; tempModelCopy = fullfile(tempdir, [tempModelName '.slx']); save_system('slvnvdemo_fuelsys_officereq', tempModelCopy); tempLinkFile = strrep(tempModelCopy, '.slx', '_links.slmx'); rmidata.saveAs(tempModelName, tempLinkFile); rmi('highlightModel', tempModelName);
Чтобы встроить данные RMI с моделью Simulink, так, чтобы вся информация была в одном месте и вы не должны отслеживать дополнительные файлы, выбрать Analysis> Requirements> Links File> Copy to Model. Внешний файл .slmx
все еще существует, но он НЕ читается, когда вы вновь открыли модель, которая теперь встроила данные RMI. Можно испытать это с моделью fuelsys_officereq_copy
.
Точки, чтобы иметь в виду, прежде чем вы встроите данные RMI с образцовым файлом:
Каждое изменение в ссылках RMI изменит образцовый файл.
Внешние файлы .slmx
игнорируются, когда файл .slx
содержит данные о ссылках трассируемости.
Шаги в этом примере могут создать файлы в папке в качестве примера и изменить ваше сохраненное отображение имен файлов .slmx/.req
. Щелкните к очистке.
close_system('slvnvdemo_powerwindowController', 0); % close demo model, discard changes tmpfilepath = fullfile(matlabroot, 'toolbox', 'slrequirements', 'slrequirementsdemos', 'slvnvdemo_powerwindowController.slx'); rmimap.map(tmpfilepath, 'clear'); % forget mdl-to-req mappings tmpfilepath = strrep(tmpfilepath, '.slx', '.slmx'); if exist(tmpfilepath, 'file') == 2, delete(tmpfilepath); end % delete links file close_system('fuelsys_officereq_copy', 0); rmimap.map(tempModelCopy, 'clear'); % forget model to Links File mappings if exist(tempModelCopy,'file') == 2, delete(tempModelCopy); end % delete temporary copy of model file if exist(tempLinkFile, 'file') == 2, delete(tempLinkFile); end % delete .req file we just saved clear tmpfilepath tempModelCopy tempLinkFile; rmiut.closeDlg(getString(message('Slvnv:reqmgt:highlightObjectsWithReqs'))); % close popup if still open
Removing all mapping for [MATLAB]/toolbox/slrequirements/slrequirementsdemos/slvnvdemo_powerwindowController.slx Removing all mapping for /tmp/BR2019ad_1035872_198992/publish_examples0/fuelsys_officereq_copy.slx