Лекция: Распределение памяти переменных
Контроллер с точки зрения МЭК программы имеет несколько областей памяти, имеющих разное назначение.
1. Область входов ПЛК.
2. Область выходов ПЛК.
3. Область прямо адресуемой памяти.
4. Оперативная память пользователя (ОЗУ).
Аппаратные ресурсы ПЛК присутствуют в МЭК-проектах в неявной форме. Размещение переменной в одной из трех первых областей приводит к ее связи с определенной аппаратурой — входами, выходами или переменными системы исполнения (диагностика модулей, настройка параметров ядра и т. д.). Распределение переменных в этих областях определяется изготовителем ПЛК. Привязка к конкретным адресам задается при помощи прямой адресации. Для обеспечения переносимости программного обеспечения прямые адреса нужно использовать только в разделе объявлений. В языках программирования стандарта не предусмотрено операций прямого чтения входов-выходов. Эту работу выполняет система исполнения. При необходимости для низкоуровневого обращения изготовителем ПЛК поставляются специальные библиотеки.
Объявление переменной без префикса AT физически означает выделение ей определенной памяти в области ОЗУ. Распределение доступной памяти ОЗУ транслятор осуществляет автоматически.
Переменные принято разделять на глобальные и локальные по области видимости. Глобальные переменные определяются на Уровне ресурсов проекта (VAR_GLOBAL) и доступны для всех программных компонентов проекта. Локальные переменные описываются при объявлении компонента и доступны только внутри него. Описание любого программного компонента содержит, как минимум, один раздел объявления локальных переменных VAR,переменных интерфейса VAR_INPUT, VAR_OUTPUT, VAR_IN_OUTи внешних глобальных переменных VAR_EXTERNAL(см. подробнее «Компоненты организации программ»).
Наименования разделов объявления переменных могут содержать дополнительные ключевые слова, уточняющие способ применения.
Ключевое слово | Применение переменной |
RETAIN | Переменные нужно разместить в энергонезависимой памяти, сохраняющей значения при выключенном питании. Такая память не является обязательной и присутствует далеко не во всех ПЛК |
CONSTANT | Константы, доступные только для чтения |