Текущий раздел:

Описания RDS

Описание пользователя

Глава 1. Необходимые сведения об устройстве RDS

§1.3. Режимы работы RDS

# Описание пользователя

## Глава 1. Необходимые сведения об устройстве RDS

### §1.3. Режимы работы RDS

Описываются три режима работы RDS и принцип выполнения расчета в одноименном режиме.

RDS может находиться в одном из трех режимов: редактирования, моделирования и расчета.

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

Рис. 5. Соединение
рукоятки и поля ввода

В режиме моделирования (его тоже можно включить в главном окне RDS или на панели расчета окна подсистемы) пользователь не может ни редактировать схему, ни вызвать функции настройки блоков. Все его действия передаются блокам, которые обрабатывают их согласно своим моделям. Щелчок левой кнопкой мыши на блоке-кнопке вызовет нажатие этой кнопки, щелчок на стрелках числового поля ввода – изменение его значения и т.п. Данные по связям в этом режиме обычно тоже не передаются, однако, некоторые блоки могут принудительно активировать свои выходные связи и сообщить об этом другим, соединенным с ними, блокам, если такая возможность была заложена в модели разработчиком. Как правило, в режиме моделирования принудительно передают данные своих выходов различные поля ввода, это позволяет соединять такие блоки в цепочки и кольца, чтобы, при изменении значения в одном из них, автоматически изменялись значения в других. Например, на рис. 5 изображены рукоятка и поле ввода, соединенные друг с другом: при перемещении рукоятки будет автоматически изменяться значение в поле ввода, а при изменении значения в поле ввода – автоматически перемещаться рукоятка, даже если расчет схемы не запущен. Реализация такого поведения требует специального написания моделей блоков, поэтому пользователь не может ни включить его, ни отключить. Большинство блоков не активирует свои выходы принудительно и, таким образом, блоки не передают данные по связям в режиме моделирования – для этого служит режим расчета.

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

- По очереди в произвольном порядке вызываются все модели простых блоков, у которых установлен параметр «запуск каждый такт» или сигнал управления запуском которых имеет значение 1. Перед запуском модели блока вход управления запуском сбрасывается в 0, а выходу готовности присваивается единица. Модель блока может, при необходимости, сбросить выход готовности, показав таким образом, что блок по каким-либо причинам не выполнил свою функцию.
- Для всех простых блоков, у которых выход готовности имеет значение 1, выполняется передача данных по связям, подключенным к выходам (некоторые выходы блока могут быть запрещены, в этом случае передача данных этого выхода не производится). Таким образом, все сработавшие блоки передают свои данные. После передачи значение выхода готовности сбрасывается в 0.
- Начинается следующий такт расчета: снова вызываются все модели простых блоков, передаются данные по связям, и т.д. до тех пор, пока пользователь или один из блоков не даст команду остановить расчет, то есть перейти в режим моделирования или редактирования.

Как правило, именно в режиме расчета выполняются все вычисления, ради которых собирается схема. Как и два других режима, он обычно включается при помощи кнопок и меню главного окна или кнопок панели расчета окна подсистемы.

Рис. 6. В расчете участвуют только блоки
«Block1» и «Block2»

Следует учитывать, что в расчете участвуют только простые блоки. Ни подсистемы, ни внешние входы/выходы, ни вводы шин в расчете не участвуют, то есть их модели не вызываются в такте расчета. Если, например, данные передаются от простого блока «Block1» внутрь подсистемы «Sys1» через внешний вход «Input1» ко второму простому блоку «Block2» (рис. 6), то в такте расчета будут вызваны только модели первого и второго блоков, при этом после срабатывания первого блока данные его выхода «y» передадутся непосредственно на вход второго блока «x», на вход «Input1» подсистемы «Sys1» и на выход ее внешнего входа «Input1». Статические переменные подсистемы и внешнего входа все равно получат данные первого блока, хотя их модели и не вызываются, и это можно использовать при создании векторных картинок этих блоков. Например, если добавить в векторную картинку подсистемы «Sys1» строку текста и связать ее с входом «Input1» этой подсистемы, в режимах расчета и моделирования на изображении подсистемы будет выводиться числовое значение, полученное по связи от блока «Block1».

Кроме основного режима расчета в RDS существует еще и инициализационный, или предварительный, расчет. Он выполняется для некоторых блоков в момент выхода из режима редактирования по запросу начальных блоков алгебраических цепочек – чаще всего такими начальными блоками служат поля ввода и прочие блоки интерфейса пользователя. Алгебраическими считаются блоки, которые немедленно вычисляют свои выходные значения при изменении входных: сумматоры, перемножители, переключатели и т. д. «Мгновенное» вычисление значений такими блоками непосредственно перед запуском расчета позволяет сократить переходный процесс в схеме. На рис. 10 изображена такая цепочка, состоящая из трех сумматоров, подключенных к полю ввода (нижняя ветвь схемы). Для того, чтобы на выходе третьего сумматора установилось правильное значение, требуется три такта расчета: в первом такте сработает первый сумматор, во втором – второй сумматор обработает выход первого и т. д. При предварительном расчете все три сумматора будут вызваны последовательно в момент выхода из режима редактирования, поэтому правильные значения на их выходах будут установлены уже на момент самого первого такта расчета. Чтобы предварительный расчет работал, необходимо, чтобы его поддерживали модели как алгебраических блоков, так и блоков интерфейса пользователя. Большинство стандартных блоков RDS поддерживает предварительный расчет.

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

Состояние схемы, ни разу не переходившей в режим расчета, отличается от состояния после завершения или прекращения расчета. До запуска расчета схема находится в исходном состоянии, и все переменные всех блоков имеют значения, заданные для них по умолчанию. В процессе расчета значения переменных и состояния блоков изменяются: счетчики увеличивают свои значения, на графиках появляются кривые, и т.п. Когда расчет остановится по команде пользователя или одного из блоков схемы (например, если достигнуто время остановки расчета, заданное в блоке-планировщике расчета), схема останется в новом состоянии, и на индикаторах можно будет наблюдать результаты этого расчета. Если после этого снова запустить расчет, он не начнется заново, а продолжится с текущего состояния. Чтобы вернуть схему в исходное состояние, нужно сбросить расчет кнопкой или пунктом меню в главном окне RDS или в окне любой подсистемы. Некоторые блоки, например, стандартный блок параметрической оптимизации, могут программно сбрасывать расчет для выполнения многократного моделирования с разными параметрами.

Следует иметь в виду, что, если в процессе расчета пользователь как-то взаимодействовал со схемой (например, изменял значения в полях ввода), после сброса расчета все эти изменения, как правило, тоже сбрасываются. Как именно блоки реагируют на сброс, и запоминают ли они значения, вводимые пользователем в процессе расчета, определяется разработчиком модели блока, но, в большинстве случаев, сброс расчета приводит к возврату всех переменных блока в исходное состояние. Например, стандартное числовое поле ввода при сбросе всегда возвращается к значению, введенному в него пользователем перед первым запуском расчета.