Лекция 9. Программное обеспечение контроллеров фирмы Siemens. Адресация в программном обеспечении СПЛК

Основа всех языков программирования контроллеров - это язык Ассемблер. Поэтому, как и в классическом языке Ассемблер, в языках программирования контроллеров существует три основных способа адресации внутри программа: непосредственная, прямая, косвенная.

Непосредственная адресация. При непосредственной адресации операнд кодируется непосредственно в команде; то есть за кодом операции непосредственно следует значение, с которым должна работать данная команда. Команда также может предоставить свое собственное значение в качестве операнда, например, команда SET подразумевает в качестве операнда результат логической операции RLO.

Прямая адресацияКоманда, использующая прямую адресацию, имеет операнд, указывающий местоположение значения, которое команда будет обрабатывать. Адрес при этом состоит из следующих двух частей:идентификатора операнда (например, “IB” для входного байта),точного адреса внутри области памяти, указанной идентификатором операнда.Операнд прямо указывает на адрес значения.

Косвенная адресация.Команда, использующая косвенную адресацию через память, имеет операнд, указывающий местоположение значения, которое команда будет обрабатывать, и состоящий из следующих частей:идентификатора операнда (например, “IB” “для входного байта”)иуказателя. Косвенная адресация языка программирования Step7 использует один из следующих указателей:

· слова, содержащие номер таймера (T), счетчика (С), блока данных (DB), функции (FC) или функционального блока (FB);

· двойного слова, содержащего точный адрес значения внутри области памяти, указанной идентификатором операнда.

Операнд задает адрес значения или номер косвенно через указатель. Это слово или двойное слово может находиться в одной из следующих областей:

· битовая память (М)

· блок данных (DB)

· экземплярный блок данных (DI)

· локальные данные (L)

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

Изображение цифровой информации придерживается определенного правила: биты изображаются слева направо, байты - справа налево. Это правило соблюдается также при обозначении адресов реально подключаемых входных и выходных устройств. Кроме того, информация объединяется в слово (Word) по 16 бит или в двойное слово (DOUBLEWORD) по 32 бита. Причем адрес информации в 16 бит определяется номером младшего байта. Информация в 32 бита также нумеруется номером младшего байта. Для контроллеров Simaticраспределение информации в разных областях памяти подчинено единому правилу, демонстрируемому на рисунке 19.

Рисунок 19 - Распределение адресов контроллеров Simatic

Адресация в рамках проекта СПЛК может быть абсолютной и символьной.

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

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

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

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

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

Символьная адресация (symbolic addressing) использует имена (символы) вместо абсолютных адресов. Программист сам может выбирать эти имена по их функциональному назначению. Такое имя должно начинаться с буквы английского алфавита и может содержать до 24 символов. Символьная адресация может быть глобальной (для всего проекта) и локальной. Глобальная адресация осуществляется посредством таблицы символов. Локальная адресация назначается посредством таблицы описания переменных внутри каждого из отдельных блоков OB, FC, FB, DB.

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

Локальные данные – параметры блоков, локальные временные данные, метки в разделе кода блока.

Глобальные данные заключаются в кавычки (“символ”), локальные данные имеют # символ перед идентификатором. В таблице приведены обозначения адресов различных областей памяти контроллера Simatic.

 

Т а б л и ц а 3 - Обозначения адресов

 

Области памяти Длина переменной Прямой адрес Максимальный адрес
Вход Бит 1 Байт 8 Слово 16 Дв.слово 32 I0.0 IB10 IW55 ID46 65535.7
Выход Бит 1 Байт 8 Слово 16 Дв.слово 32 Q0.0 QB10 QW55 QD46 65535.7
Внутренняя память Бит 1 Байт 8 Слово 16 Дв.слово 32 М0.0 МB10 МW55 МD46 255.7
Периферийный вход Байт 8 Слово 16 Дв.слово 32 РIB10 РIW55 РID46
Периферийный выход Байт 8 Слово 16 Дв.слово 32 РQB10 РQW55 РQD46
Таймеры Слово 16 Т23
Счетчики Слово 16 С72
Блоки данных открытые оператором OPN DB Бит 1 Байт 8 Слово 16 Дв.слово 32 DBX0.0 DBB34 DBW87 DBD99 65535.7
Блоки данных открытые оператором OPN DI Бит 1 Байт 8 Слово 16 Дв.слово 32 DIX0.0 DIB34 DIW87 DBD99 65535.7
Локальные данные для блоков Бит 1 Байт 8 Слово 16 Дв.слово 32 L20.0 LB10 LW55 LD46 65535.7