Описание пользователя
Глава 2. Интерфейс пользователя
§2.9. Создание простых блоков и изменение их параметров
§2.9.2. Редактирование списка переменных блока
Описывается окно для задания структуры статических переменных простого блока – эти переменные могут быть его входами и выходами.
Изменение состава статических переменных блока может потребоваться обычному пользователю, не разрабатывающему модели блоков самостоятельно, только при создании блоков с анимированными картинками (см. пример в §2.10.12. Пользователи, создающие блоки, модели которых автоматически компилируются RDS, тоже имеют дело с редактированием переменных, но при этом все необходимые действия обычно выполняются через редактор модели и компилируемая модель автоматически согласуется с этими переменными (см. главу 3). Хотя вызов редактора переменных в этом случае осуществляется по-другому, окно редактора переменных будет тем же самым, описанным здесь. Следует помнить, что внесение изменений в список переменных библиотечного блока, как правило, приводит к его неработоспособности. Исключение составляет переименование переменных (модели блоков чаще всего обращаются к переменным по номерам, а не по именам, подробно это описано в §2.5.1 руководства программиста), а также разрешение и запрет добавления отдельных входов и выходов в меню создания связи – эти изменения в переменных касаются только интерфейса пользователя, на работу самого блока они не влияют. Все прочие действия – изменение номера переменной в списке, ее типа, ее начального значения и т.п. – могут привести к тому, что модель либо откажется работать, выдав сообщение об ошибке, либо будет работать неправильно.
Для изменения статических переменных блока следует открыть окно параметров этого блока и нажать на его вкладке «» кнопку «» (изменить переменные нескольких блоков одновременно можно через окно групповой установки параметров). При этом откроется окно редактора переменных, изображенное на рис. 109.
Рис. 109. Окно редактора переменных
Большую часть окна занимает таблица, в которой каждой переменной блока соответствует строка, содержащая ее имя, тип, начальное значение и т.п. Для того, чтобы изменить какой-либо параметр переменной, следует щелкнуть мышью в строке переменной в колонке нужного параметра и ввести его в появившемся поле ввода (внутри строки можно переходить к полю ввода следующего параметра нажатием клавиши Tab). Новую переменную можно добавить, щелкнув на пустой строке в конце списка и введя ее имя в появившемся поле – как только имя будет введено, все колонки справа от него заполнятся автоматически, и их можно будет изменить, задав нужный тип, роль, значение и другие параметры добавленной переменной, описанные ниже. Можно добавить новую переменную не только в конец, но и в середину списка – для этого служит кнопка со знаком «+» в нижней части окна (кнопки также будут описаны ниже).
Самая первая колонка списка – «» – отображает смещение переменной в байтах от начала всей области памяти переменных блока (эта информация используется программистами при обращении к переменным из функции модели). В этой колонке ничего изменить нельзя – смещение автоматически вычисляется редактором согласно размерам предшествующих переменных. На рис. 109 первая переменная «Start» имеет смещение 0, поскольку она располагается в самом начале области переменных, вторая переменная «Ready» – смещение 1, поскольку перед ней располагается сигнальная переменная размером в один байт, четвертая переменная «y» – смещение 10, поскольку перед ней расположены две сигнальных переменных по одному байту каждая и одна переменная типа double размером в восемь байтов, и т.д. Для двух первых переменных в этой колонке отображается еще и иконка замка, указывающая на то, что в любом простом блоке эти переменные фиксированы, их нельзя удалить или поменять им тип.
Во второй колонке списка вводится имя переменной и, при желании, комментарий, который будет отображаться в меню подключения связи. Имена переменных в RDS должны удовлетворять тем же требованиям, что и идентификаторы в языке C (это облегчает написание моделей): имя может содержать только буквы латинского алфавита, цифры и знак подчеркивания, и при этом оно не должно начинаться с цифры. Имена чувствительны к регистру, поэтому, например, «Var» и «var» будут считаться разными переменными. Имя переменной должно быть уникальным, в одном и том же блоке не может быть двух переменных с одинаковыми именами. Если попытаться дать какой-либо переменной имя, совпадающее с именем другой переменной, будет выдано предупреждение о том, что переменная с таким именем уже существует, и изменение имени будет отменено. Комментарий переменной отделяется от ее имени пробелом, может быть произвольной длины и содержать в себе пробелы. Фактически, введенная пользователем в колонке «» строка разбивается по самому первому пробелу: все, что до него, считается именем переменной, все, что после – комментарием. Например, в тексте «Depth (глубина погружения)» именем переменной будет считаться «Depth», а комментарием – «(глубина погружения)». Если во введенном пользователем тексте нет ни одного пробела, он весь будет считаться именем переменной.
В третьей колонке задается тип переменной, он выбирается из выпадающего списка. В этом списке перечислены все стандартные типы переменных RDS и имена структур, заданных для данной схемы. Если выбрать в списке пункт «массив» или «матрица», высота колонки увеличится, и под списком появится еще один выпадающий список, в котором нужно выбрать тип элемента массива или матрицы. Например, для матрицы вещественных чисел под списком с выбранным пунктом «матрица» во втором списке следует выбрать пункт «double». Если в этом втором списке тоже выбрать пункт «матрица», под ним появится еще один список (получится матрица матриц какого-либо типа) и т.д. Например, матрице матриц целых чисел будут соответствовать три списка, расположенных друг под другом: «матрица», «матрица» и «int». Следует помнить, что вложенность матриц в RDS ограничена пятью (рис. 110). Для первых двух переменных блока жестко задан сигнальный тип, изменить его нельзя.
Рис. 110. Пример массива пятерной (максимальной для RDS) вложенности:
массив матриц матриц матриц матриц вещественных чисел
В четвертой колонке списка, в заголовке которой изображена размерная стрелка, выводится размер области, занимаемой переменной, в байтах. Размер переменной однозначно определяется ее типом, значение в этой колонке выводится для справки и не может быть изменено. Размещение переменных в памяти RDS подробно рассматривается в §2.5 руководства программиста пользователю эта информация обычно не нужна.
В колонке с заголовком «» задается роль переменной в блоке и указывается дополнительная управляющая переменная, если такая есть. Управляющие переменные используются моделью блока для опознания сработавших входных связей и управления срабатыванием выходных, поэтому пользователь, не создающий модель самостоятельно, как правило не вводит их. Роль переменной выбирается из выпадающего списка, содержащего следующие варианты:
- «» – переменная будет внутренней, к ней нельзя подключать связи.
- «» – переменная будет входом блока, к ней можно подключать связи, которые в режиме расчета будут записывать в нее значения с выходов других блоков.
- «» – переменная будет выходом блока, к ней можно подключать связи, которые в режиме расчета будут передавать ее значение на входы других блоков.
- «» – переменная будет входом, при этом при срабатывании любой связи, подключенной к этому входу, в сигнальную переменную, указанную в дополнительном выпадающем списке в этой же колонке (рис. 111), будет записана единица.
- «» – переменная будет выходом, при этом связи, подключенные к этому выходу, будут работать только тогда, когда логическая переменная, указанная в дополнительном выпадающем списке в этой же колонке (рис. 112), будет иметь ненулевое значение. Если данная переменная – массив, управляющая переменная может быть не только логической, но и целой. В этом случае из всех связей, подключенных к массиву-выходу, сработают только те, которые подключены к элементу массива с номером, содержащимся в управляющей переменной (подключение связей к отдельным элементам массивов описывается в §2.7.3.
Рис. 111. Привязка к входу «x» управляющего сигнала «x_changed»: при срабатывании
любой связи, подключенной к «x», в «x_changed» будет записана единица
Рис. 112. Привязка к выходу «y» управляющей переменной «y_enabled»: только
если «y_enabled» будет иметь ненулевое значение, связи, подключенные к
выходу «y», сработают
Использование управляющих переменных с входами и выходами блока подробно рассматривается в §2.5 руководства программиста и §3.6.2 описания пользователя. Первые две переменных блока (чаще всего они называются «Start» и «Ready») всегда являются входом и выходом, их роли изменить нельзя.
В колонке списка с заголовком «» ставится флажок, если переменная должна присутствовать в меню подключения связи (этот флажок доступен только для входов и выходов). Если сбросить его, к переменной все равно можно будет подключить связь, выбрав в меню создания связи пункт «».
В колонке с заголовком «», доступной только для входов блока, ставится флажок, если срабатывание связи, подключенной к этому входу, должно автоматически запускать функцию модели в следующем такте расчета. Если пользователь не разрабатывает модели блоков, он может не обращать на него внимания. Разумеется, установка или сброс этого флажка у библиотечного блока может привести к неработоспособности последнего.
В колонке с заголовком «» и стрелкой ставится флажок, если при подключении связи к данной переменной (она должна быть входом или выходом) рядом с точкой подключения связи по умолчанию следует отображать имя переменной. Этот флажок управляет именно отображением по умолчанию – после того, как связь присоединена, вывод имени переменной можно включать и выключать независимо от установки флажка в редакторе переменных.
Наконец, в колонке «» вводится значение переменной по умолчанию, которое автоматически присваивается ей при создании блока, после загрузки схемы и при сбросе расчета. Формат ввода этого значения описывается в §1.4.
Начинающему пользователю можно особенно не раздумывать над тем, устанавливать ли флажки в колонках «» и «» – они влияют только на удобство подключения связей к блоку и на его внешний вид, но никак не отражаются на его работе.
Ниже таблицы переменных в окне находится информационная строка и кнопки управления. В информационной строке отображается число переменных в списке и строка типа – специальная строка, в которой каждой переменной блока, в зависимости от ее типа, соответствует один или несколько символов. Строка типа используется программистами для проверки соответствия структуры переменных блока требованиям модели (см. §2.5.1 руководства программиста), пользователь, как правило, не имеет с ней дела, даже если он создает блоки с автоматически компилируемыми моделями, поскольку в этом случае модуль автоматической компиляции встраивает в модель все необходимые проверки без участия пользователя. Кнопки управления позволяют переместить переменную в списке, удалить ее или добавить в список новую:
| Кнопка | Действие |
|---|---|
| Переместить выбранную переменную на одну позицию вверх по списку. | |
| Переместить выбранную переменную на одну позицию вниз по списку. | |
| Добавить переменную перед выбранной (в списке появляется пустая строка, щелкнув на которой можно ввести имя переменной). Добавить переменную в конец списка всегда можно, щелкнув на пустой строке после последней переменной, специальной кнопки для этого не предусмотрено. | |
| Удалить выбранную в списке переменную. |
При помощи этих кнопок нельзя удалить или переместить первые две переменных блока – они жестко фиксированы и не могут быть изменены.
Нажатие кнопки «» заносит новый список переменных в окно параметров блока, из которого был вызван редактор переменных. В блок эти переменные будут занесены только после нажатия кнопки «» в окне параметров.