Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Для создания прямо адресуемой переменной используется следующее объявление:
имя переменной АТ% прямой адрес тип;
Прямой адрес начинается с буквы, определяющей область памяти:
Символ | Область памяти |
I | Область входов |
Q | Область выходов |
M | Прямо адресуемая память |
Далее следует символ, определяющий тип прямого адреса:
Символ | Область памяти |
нет | Бит |
X | Бит _ ----- _ ----- — |
В | Байт |
W | Слово |
D | Двойное слово |
L | Длинное слово |
Завершает прямой адрес число — составной иерархический адрес, поля которого разделены точкой. В простейшем случае используется два поля адреса: номер элемента и номер бита.
В конце объявления, как и для автоматически размещаемых переменных, необходимо указать тип переменной. При указании адреса одного бита тип переменной может быть только BOOL.
В прямом адресе указывается именно номер элемента. Это коренным образом отличается от физических адресов микропроцессора. Если прямой адрес определяет байт, то номер элемента - это номер байта. Если прямой адрес определяет слово, то номер элемента — это номер слова, и, естественно, один элемент занимает два байта. Так, следующие два объявления адресуют один и тот же байт:
a1 AT%QB5 BYTE;
a2 AT%QW2 WORD;
a1:=5;
a2.0:=8;
В каждой области памяти адресация элементов начинается с нуля. Физическое размещение прямо адресуемых областей в ОЗУ определяется конфигурацией контроллера. Очевидно, что сопоставление идентификаторов переменных прямым адресам является делом, требующим большой аккуратности. Поэтому для сложных модульных контроллеров применяются специальные фирменные конфигураторы, подключаемые к оболочке комплекса программирования и позволяющие графически «собрать» ПЛК и определить все необходимые интерфейсные переменные.
Входы ПЛК — это переменные с прямыми адресами в области I. Они доступны в прикладных программах только по чтению, Выходы Q - только по записи. Переменные в области М доступны по записи и чтению.
В области памяти М размещают обычно переменные, которые нельзя однозначно отнести к входам или выходам. Это могут быть диагностические ресурсы модулей, параметры системы исполнения и т. д.
Прямые адреса можно использовать в программах непосредственно:
IF %IW4 > 1 THEN |
(*3начение входа IW4*)
Тем не менее все же желательно компактно сосредоточить в проекте все аппаратно-зависимые моменты.
Обратите внимание, что прямая адресация позволяет разместить несколько разнотипных переменных в одной и той же памяти. Например, специально для быстрого обнуления 16-дискретных выходов (BOOL) можно использовать переменную типа WORD. Или, например, совместить переменную STRING и несколько переменных типа BYTE, что даст возможность организовать форматирование вывода без применения строковых функций. Поскольку физическое распределение адресов известно на этапе трансляции, компилятор формирует максимально компактный код для таких объединений, чего не удается достичь при работе с элементами массива, где требуется динамическая адресация.
Синтаксис прямых или МЭК адресов выглядит следующим образом:
каждый адрес начинается с символа %, с последующим префиксом области.
Префикс I указывает на область входов, Q - область выходов и M - область маркеров.
Далее следует идентификатор размера: X или ничего – один бит, B обозначает байт (8 бит), W - это 16 разрядное слово и D - это двойное слово (32 бита). Завершают адрес цифры, указывающие последовательные адреса в заданной области, начиная с 0.
Например:
%IW215 - это 216-тое слово в области входов.
%QX1.1 - это 2-й бит 2-го слова в области выходов.
%MD48 - это 49-е двойное слово в области маркеров.
Поразрядная адресация
В стандарте предусмотрена удобная форма работы с отдельными битами переменных типа битовых строк — поразрядная адресация. Необходимый бит указывается через точку после идентификатора. Аналогичным образом можно использовать отдельные биты прямо адресуемой памяти. Младшему биту соответствует нулевой номер. Поразрядная нумерация не должна превышать границы соответствующего типа числа.
VAR
a: WORD;
bStop AT %IX64.3: BOOL;
Дата публикования: 2015-04-10; Прочитано: 1473 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!