Спецификация единиц измерения в моделях Simulink

Simulink® позволяет вам задать физические единицы измерения как атрибуты на сигналах на контурах компонентов модели. Такие компоненты могут быть:

  • Подсистемы

  • Модели Referenced Simulink

  • Simulink-PS Converter (Simscape) и PS-Simulink Converter (Simscape) блоки, которые взаимодействуют через интерфейс между Simulink и компонентами, разработанными в Simscape™ и его связанных физических продуктах моделирования

  • Stateflow® графики, таблицы переходов состояний или таблицы истинности

  • Блоки MATLAB Function

  • Блоки Constant

  • Data Store Memory, Data Store Read и блоки Data Store Write

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

В моделях Simulink вы задаете модули от unit database. Модульная база данных включает модули от следующих модульных систем:

  • SI — Международная система единиц

  • SI (extended) — Международная система единиц (расширена)

  • English — Английская система модулей

  • CGS — Система измерений СГС

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

Можно присвоить модули сигналам через эти блоки:

Можно присвоить модули сигналам через эти объекты:

Когда вы добавляете поддерживаемый блок в свою модель, параметр Unit на блоке устанавливается на inherit по умолчанию. Эта установка означает, что блок наследовал модуль от соединяющегося сигнала, который имеет явным образом заданный модуль.

Можно явным образом задать модули для сигналов с помощью параметра Unit поддерживаемого блока. Для этого параметра диалоговое окно обеспечивает соответствие с предложениями, чтобы помочь вам:

Если вы не обеспечиваете правильно сформированное модульное выражение, вы получаете ошибку. Правильно сформированные модульные выражения являются комбинацией модульных имен или символов с правильно сбалансированными круглыми скобками и *, /, и ^ 'characters'. Специальные символы, такие как [, ], {, }, <, >, \, ", &, и т.д не поддерживаются.

По умолчанию порт блока имеет empty (то есть, незаданный), модуль и параметр Unit установлены в inherit. Когда вы задаете модуль для одного порта, Simulink Check модульная установка любого порта, соединенного с ним. Если порт имеет пустой модуль, можно соединить его с другим портом, который имеет любой поддерживаемый модуль. Если параметр блока портов устанавливается на inherit, это наследовало модуль от подключенного порта, который имеет заданный модуль.

Чтобы отобразить модули на линиях Simulink в модели, на вкладке Debug, нажимают Information Overlays> Units.

Инструкции для безразмерного, безразмерного, и никакие удельные величины

При контакте с безразмерным, безразмерным, или никакие удельные величины, рассмотрите эти инструкции:

  • Чистые числа без модулей

    Рассмотрите использование 1, безразмерная единица стандарта SI. Simulink Check модуль, чтобы убедиться другие безразмерные величины распространены в. Можно добавить, умножить, и в противном случае управлять этими типами чисел.

  • Незаданные модули

    Рассмотрите использование пустого модуля, где параметр Unit является пробелом. Когда этот параметр является пробелом, Simulink принимает любой модуль, который распространяет к порту, не возвращая предупреждение.

  • Целочисленный модуль целого числа

    Рассмотрите использование count обозначить целочисленный модуль целого числа. Используйте этот модуль для количеств, которые затрудняют, чтобы описать, но которые рассматриваются безразмерными или безразмерными, такие как тепло доступные состояния или количество PWM. Для получения дополнительной информации смотрите count в позволенных модулях.

  • Безразмерные физические количества

    Безразмерные физические количества представляют определенное физическое количество. Рассмотрите использование физических количеств velocity_factor, refractive_index, relative_permeability, strain, Reynolds_number, и logical. Некоторые из этих физических количеств, strain and Reynolds_number, имейте соответствующие модули. Чтобы задать модули для других физических количеств, используйте формат, такой как 1@physical quantity, например, 1@refractive_index. Simulink выполняет физическую проверку количества при распространении. Например, если модель пытается добавить размерные физические количества, Simulink возвращает предупреждение.

  • Чистые масштабированные числа

    Рассмотрите использование ppm, ppb, ppt.

Задайте физические количества

Когда вы моделируете физическую систему, возможно использовать то же модульное выражение для двух или больше сигналов, которые представляют различные физические количества. Например, модульное выражение N*m может представлять или крутящий момент или энергию. Чтобы предотвратить ошибочную связь двух портов с тем же модулем, но представлением различных физических количеств, можно добавить физическое количество в модульное выражение. Например, для того же модуля N*m, можно задать различные физические количества N*m@torque и N*m@energy. Подобно модулям диалоговое окно предоставляет предложениям при печати имена физических количеств.

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

Задайте модули в объектах

По умолчанию, Simulink.ValueType, Simulink.Signal, Simulink.BusElement, и Simulink.Parameter объекты имеют пустые модули. В случае a:

  • Simulink.ValueType объект, объект не присоединяет модуль к соответствующим сигналам.

  • Simulink.Signal объект, пустой модуль означает, что соответствующий сигнал может наследовать модуль от порта восходящего направления или порта нисходящего направления.

  • Simulink.BusElement объект, пустой модуль означает, что соответствующий элемент шины также имеет пустой модуль. Можно соединить элемент с портом с любым модулем, но элемент не наследовал модуль от порта.

  • Simulink.Parameter объект, объект не присоединяет модуль к соответствующему значению параметров.

Если вы задаете модуль в Simulink.ValueType, Simulink.Signal, или Simulink.BusElement объект, Simulink применяет атрибут к соответствующей сигнальной линии когда:

  • Simulink.ValueType объект задает свойства для сигнала в модели.

  • Simulink.Signal возразите решает к сигналу в модели.

  • Simulink.BusElement объект сопоставлен с Simulink.Bus возразите и вы используете соответствующий элемент шины с Bus Creator, Bus Selector или блоком Bus Assignment, который применяет Simulink.Bus объект.

Для Simulink.Parameter объект, Simulink не применяет атрибута. Для всех объектов, если параметр Unit имеет значение, которое не формируется правильно, вы видите ошибку. Если модуль формируется правильно, но не определен, вы видите предупреждение, когда вы компилируете модель. Если модульное выражение содержит специальные символы, такие как [, ], {, }, <, >, \, ", &, и т.д Simulink заменяет их на символы нижнего подчеркивания (_).

Пользовательские модульные свойства

Примечания по Unit и DocUnits свойства, запускающиеся в R2016a:

  • DocUnits свойством является теперь Unit для Simulink.Parameter и Simulink.Signal объекты. Если в предыдущем релизе вы использовали DocUnits параметр Simulink.Parameter или Simulink.Signal объект содержать текст, который теперь не выполняет модульные технические требования, симуляция, возвращает предупреждение, когда модель симулирует.

    Чтобы подавить эти предупреждения, установите Модульные сообщения несоответствия параметра конфигурации на none. Эта установка подавляет все модульные предупреждения проверки несоответствия.

  • Если у вас есть класс, который выводит из Simulink.Parameter, Simulink.Signal, или Simulink.BusElement с ранее заданным Unit свойство, Simulink возвращает ошибку как следующее:

    ​Cannot define property 'Unit' in class 'classname' because
     the property has already been defined in the superclass 'superclass'.

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

    Примечание

    Если вы храните существующие данные в MAT - или .sldd файл, в релизе до R2016a, копирует содержимое Unit свойство к DocUnits сначала. Затем сохраните файл в более раннем релизе прежде, чем загрузить модель в R2016a или более позднем релизе.

Задайте модули для температурных сигналов

При моделировании количеств абсолютной температуры используйте модули, такие как K, degC, degF, и degR. При моделировании количеств перепада температур используйте модули, такие как deltaK, deltadegC, deltadegF, и deltadegR. Если вы соединяете сигнал, который имеет модуль перепада температур с блоком, который задает модуль абсолютной температуры, Simulink обнаруживает несоответствие.

Задайте модули в блоках MATLAB function

Вы задаете модули для вводов и выводов блока MATLAB Function путем определения модулей в параметре Unit (e.g., m, m/s^2, N*m) в окне Ports и Data Manager. Дважды кликните блок MATLAB Function, чтобы открыть Редактор блока MATLAB function, нажать Edit Data, чтобы открыть Порты и Менеджер данных, затем выбрать порт интереса. При вводе в текстовом поле Unit (e.g., m, m/s^2, N*m), поле предлагает модули, которые поддерживает Simulink. По умолчанию этим свойством является inherit, что означает, что модуль равняется сигналу, отправленному в порт. Если вы выбираете свойство Data must resolve to Simulink signal object для выхода, сигнал, соединенный с выходным портом, определяет блок портов и другие свойства за исключением Name и Scope.

MATLAB Function блокирует проверку, если модуль Сигнала Simulink совпадает с модулем, присвоенным соответствующему вводу или выводу блока. Если модули не соответствуют, Simulink выводит предупреждение, когда вы обновляете модель. В противном случае модульные настройки не влияют на выполнение блока MATLAB Function.

Задайте модули в постоянных блоках

Можно задать модули для выходных данных блоков Constant при помощи свойства Unit в Simulink.Parameter объект.

Задайте модули для логгирования и загрузки данных сигнала

Можно включать модули в данные сигнала, которые вы регистрируете или загружаете.

Вы задаете модули для логгирования и загрузки использования Simulink.SimulationData.Unit объекты. Когда вы регистрируете использование Dataset или Timeseries формат, Simulink хранит информацию модуля с помощью Simulink.SimulationData.Unit объекты. Если вы создаете MATLAB® данные о timeseries, чтобы загрузить, можно задать Simulink.SimulationData.Unit объект для Units свойство timeseries объект.

Для получения дополнительной информации смотрите Логарифмические Данные сигнала Который Модули Использования и Данные сигнала Загрузки Который Модули Использования.

Ограничение модульных систем

По умолчанию можно задать модули от любой из поддерживаемых модульных систем. Однако в больших проектах моделирования, чтобы осуществить непротиворечивость, вы можете хотеть ограничить модульные системы, которые могут использовать определенные компоненты вашей модели. Чтобы задать доступные модульные системы для модели, в параметре конфигурации Allowed unit systems, вводят all или список, разделенный запятыми, содержащий один или несколько из SI, SI (extended)cgs, и English. Не используйте кавычки. Если ваша модель содержит модели, на которые ссылаются, можно использовать Allowed unit systems, чтобы ограничить модули в каждой из тех моделей, на которые ссылаются. Если ваша модель содержит подсистемы, можно использовать блок Unit System Configuration, чтобы ограничить модули в подсистемах. Можно также опционально использовать блок Unit System Configuration в модели. В этом случае настройки в блоке Unit System Configuration заменяют то, что вы задаете в Allowed unit systems.

Ограничить модульные системы в модели:

  1. В параметре Unit Inport Outport или блок Signal Specification, щелкает по ссылке.

    Если блок Unit System Configuration существует в вашей модели, эта ссылка открывает диалоговое окно блока. В противном случае ссылка открывает параметр конфигурации Allowed unit systems.

  2. Задайте один или несколько желаемые модульные системы, SI, SI (extended), English, или CGS, в разграниченном запятой списке или all, без кавычек.

В связях между родительскими объектами и их потомками (например, топ-модель с моделью, на которую ссылаются, или подсистемой), можно задать различные модульные системы для каждого компонента. Однако, если дочерний элемент распространяет модуль в родительский элемент, который не находится в модульных системах, заданных для родительского элемента, вы получаете предупреждение.

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

  • Нажмите Ctrl+D и визуально смотрите модель для предупреждения значков.

  • Используйте проверку Model Advisor Identify disallowed unit systems.

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

Блоки

Объекты

Похожие темы