Адресация переменных в блоке


 

При адресации переменных используются два основных варианта:

• абсолютная адресация (absolute addressing);

• символьная адресация (symbol addressing).

Абсолютная адресация переменных

При абсолютной адресации используются численные адреса, начиная с адреса "0". Такой принцип применяется для каждой адресной области.

При символьной адресации используются символьные имена, которые задаются для глобальных адресов в таблице символов (Symbol Table), а для локальных – в разделе объявления переменных (declaration section) внутри блоков.

Для расширения возможностей абсолютной адресации используется косвенная адресация (indirect addressing), при которой адрес (местоположение) в памяти вычисляется во время выполнения программы.

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

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

Аналоговый сигнал содержит 16 бит информации, что отвечает одному каналу. Он занимает в контроллере машинное слово (word), то есть 2 байта. Динамический диапазон сигнала отвечает динамическому диапазону переменной, которая обрабатывается и сохраняется. Динамический диапазон изменения сигнала и интерпретация этого сигнала, например, относительное положение, взятые вместе, определяют тип данных переменной.

Дискретным сигналам отвечают переменные типа BOOL (булева переменная), аналоговым сигналам – типа INT (целочисленная переменная).

Определяющим фактором для адресации переменной является ее тип, от которого зависит необходимая величина области памяти для размещения переменной.

В системе STEP 7 существуют 4 типа данных для абсолютной адресации:

1 бит тип данных BOOL;

8 бит тип данных BYTE или другой 8-битовый тип данных;

16 бит тип данных WORD или другой 16-битовый тип данных;

32 бита тип данных DWORD или другой 32-битовый тип данных.

На рисунке 1.8 показанная схема адресации для исходных данных, которые представляются битом, байтом, словом и двойным словом.

Рисунок 1.8 - Схема адресации данных, представленных битом, байтом, словом и двойным словом

 

Ссылка на переменные типа BOOL осуществляются с помощью идентификатора адреса, номера байта и отделенного десятичной точкой номера бита. Нумерация байтов начинается с нуля в каждой адресной области. Биты внутри байтов нумеруются от 0 до 7.

Примеры:

I 1.0 входной бит с номером 0 в байте номер 1.

Q 16.4 выходной бит с номером 4 в байте номер 16.

Для переменных типа BYTE как абсолютный адрес используется идентификатор адреса и номер байта, в котором находится значение переменной. Идентификатор адреса дополнен символом B.

Примеры:

IB 2 входной байт номер 2.

QB 18 выходной байт номер 18.

Переменные типа WORD состоят из двух байтов (слово). Как абсолютный адрес используется идентификатор адреса и номер младшего байта машинного слова, в котором содержится значение переменной. Идентификатор адреса такой переменной дополняется символом W.

Примеры:

IW 4 входное слово номер 4, содержит байты 4 и 5.

QW 20 выходное слово номер 20, содержит байты 20 и 21.

Переменные типа DWORD состоят из четырех байтов (двойное слово). Как абсолютный адрес используется идентификатор адреса и номер младшего байта двойного слова, в котором содержится значение переменной. Идентификатор адреса дополняется символом D.

Примеры:

ID 8 входное двойное слово содержит байты 8, 9, 10 и 11.

QD 24 выходное двойное слово содержит байты 24, 25, 26 и 27.

 

При адресации данных в DB указывается номер этого блока данных.

Примеры:

DB 10.DBX 2.0 бит данных 2.0 в блоке данных DB 10.

DB 11.DBB 14 байт данных 14 в блоке данных DB 11.

DB 20.DBW 20 слово данных 20 в блоке данных DB 20.

DB 22.DBD 10 двойное слово данных 10 в блоке данных DB 22.

 

Косвенная (побочная) адресация

Косвенная адресация (indirect addressing) позволяет рассчитывать адреса в области данных во время выполнения программы. Языки программирования STL и SCL используют разные методы для косвенной адресации. В STL различают следующие виды адресации:

• Косвенная адресация с помощью памяти (Memory-indirect-addressing). Так, например, IW [MD 200] означает, что адрес находится в двойном слове памяти меркеров.

• Косвенная внутризонная адресация выполняется с помощью регистра (Register-indirect area-internal addressing). Так, например, IW [AR1, P#2,0] означает, что адрес слова данных из области входов находится в адресном регистре AR1 и при выполнении оператора он должен быть увеличен на величину сдвига P#2,0.

• Косвенная межзонная адресация с помощью регистра AR. Так, например, W [AR1, P#0,0] означает, что область и адрес находятся в адресном регистре AR1. При выполнении оператора адрес должен быть увеличен на величину сдвига P#0,0 (в данном примере сдвиг отсутствует).

Двойные слова адресной области для данных (DBD и DID), меркеров (MD) и временных локальных данных (LD) могут использоваться для хранения адресов при косвенной адресации с помощью памяти.

Косвенную адресацию с помощью регистра можно применять с использованием двух адресных регистров – AR1 и AR2.

При использовании языка программирования SCL адресные области составляются из поля, элементы которого доступны косвенно и отдельно.

 

Например, MW[index] – это обращение к слову памяти, адрес которого размещен в переменной index. Переменная index может определяется в процессе выполнения программы.

Символьная адресация переменных

Символьная адресация (symbolic addressing) использует имена (символы) вместо абсолютных адресов. Разработчик назначает эти имена самостоятельно. Имя должно начинаться с буквы и может содержать до 24 символов. В STL не разрешено использовать ключевые слова как имена (символы). Для того, чтобы использовать ключевые слова как имена, в SCL нужно вставить перед именем символ решетки "#".

При присвоении имен входам учитывается регистр написания символа. Для имен выходов редактор использует регистр и нотацию (форму записи), которые были применены при объявлении символа.

В таблице символов (symbol table) глобальные символы можно назначить следующим объектам:

· Блоки данных и кодовые блоки.

· Входы, выходы, периферийные входы и периферийные выходы.

· Меркеры, таймеры и счетчики.

· Пользовательские типы данных.

· Таблицы переменных.

Глобальный символ может содержать пробелы, специальные символы и национальные символы, например, умляут. Каждый такой символ должен быть уникальным (однозначно принадлежать одному адресу) в этой программе.

Локальные символы действуют только внутри блока, в котором они описаны. Такие же символы могут быть применены в другом блоке в другом контексте для обозначения совсем других объектов. Редактор отображает локальные символы (имена), вставляя с впереди символ "#".

В случае использования массивов доступ к отдельным элементам массивов обеспечивается использованием имени массива с индексом. Так, например, имя MSERIES[1] принадлежит первому элемента массива MSERIES. В случае программирования на STL индекс должен быть константой (INT). В случае программирования на SCL индекс может быть как целым числом (INT), так и выражением.

В структурах каждый элемент имени (subname) отделяется от других элементов десятичной точкой, например, FRAME.HEADER.CNUM.

Компоненты пользовательских типов данных адресуются точно также как и компоненты структур.

Символьная адресация данных предполагает использование полного адреса, включая адресу блока данных. Например, если блок данных с символьным адресом MVALUES содержит переменные MVALUE1, MVALUE2 и MTIME, то эти переменные могут быть адресованы так:

MVALUES. MVALUE1

MVALUES. MVALUE2

MVALUES. MTIME

 



Дата добавления: 2016-12-09; просмотров: 6455;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.012 сек.