Лекция: Параметры и переменные компонента

При объявлении POU вы можете встретить следующие заго­ловки:

Формальные входные параметры VAR_INPUT Передаются POU по значению путем копирования. При вызове блока такой переменной можно присвоить значение другой пере­менной (совместимого типа), константы или выражения. Любые изменения такой переменной внутри POU никак не отображаются на данные вызывающего компонента. Применяется в любых POU. Могут иметь значения по умолчанию. Отражаются в графи­ческом представлении с левой стороны компонента.

Формальные выходные параметры VAR_OUTPUT Отражают результаты работы компонента. Передаются из POU по значению путем копирования. Чтение значения выходов обыч­но имеет смысл после выполнения блока. Вне компонента параметры VAR_OUTPUT доступны только по чтению. Не использу­ются в функциях, поскольку функция имеет только одно возвра­щаемое значение. Могут иметь начальные значения. Отражаются в графическом представлении справа.

Параметр типа VAR_IN_OUT

Этот параметр одновременно является входом и выходом. Пе­редача переменной экземпляру блока выполняется по ссылке. Это означает, что внешняя переменная как бы сама работает внутри блока на правах внутренней переменной. В компонент передается только адрес ее расположения в памяти данных. Для переменной VAR_IN_OUTнельзя:

• использовать ее в функциях;

• присваивать начальное значение;

• обращаться как к элементу структуры данных, через точку;

• присваивать константу, как актуальный параметр.

Присваивание внешней переменной для VAR_IN_OUTможно производить только при вызове блока.

Важнейшим свойством VAR__IN_OUTявляется отсутствие ко­пирования внешних данных. Параметры VAR_INPUT и VAR__OUTPUTмогут оперировать с массивами и структурами, но всякий раз при обращении к компоненту будет происходить пол­ное копирование данных. Это может отнимать много времени. Присваивание одного массива другому для VAR_IN_OUTознача­ет фактически переключение компонента с одного массива на другой. Локальная копия данных в этом случае не создается.

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

Локальные переменные VAR

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

15.11.2011

еще рефераты
Еще работы по информатике