Переменные в программировании ПЛК и в любом другом программировании занимают особое место.
Почему они так важны? Разберем в этой статье!
Переменная - это...
... именованная область памяти, которая используется для записи или хранения какого-либо значения.
Любая переменная состоит из:
- Имя — уникальный идентификатор, его используют для обращения к значению.
- Тип данных — определяет, какие значения может хранить переменная и какие операции с ними можно выполнять.
- Значение — содержимое переменной в конкретный момент времени.
Например, у нас есть кнопка с фиксацией, которая имеет 2 состояния: первое — запуск (нажата), второе — запуск (отжата). И лампочка, которая может гореть или не гореть, в зависимости от состояния кнопки.
Объявим для них переменные с именами PUSK и LAMP и типом BOOL. Тип BOOL определяет, что эта переменная может хранить только одно из двух значений: TRUE (1) или FALSE (0). Например, если кнопка в положении «запуск» - в переменную записываем TRUE или 1, соответственно и наша лампочка, подключенная к кнопке, загорается – переменная LAMP тоже принимает значение TRUE или 1.
Таким образом, переменные используются для хранения данных, к которым программа может получить доступ и которыми она может манипулировать. Они могут содержать различные типы данных, такие как целые числа, числа с плавающей точкой (вещественные, дробные), время, символы, строки и логические значения.
Переменные – основа любого программирования. Почему они так важны?
- Оптимизируют и упрощают внутренние вычисления.
- Ликвидируют сложности с прямой адресацией и обращением к регистрам памяти по адресу из программы.
- Программа становится читабельной и понятной.
- Код программы с переменными легко редактировать, можно быстро вносить изменения.
- Отладка проще – создайте временную переменную, которая будет имитировать сигнал с датчика и вручную (или с помощью куска кода) присваивайте ей нужные значения при отладке.
Область видимости переменных
Итак, мы поняли, переменные – это очень удобно. Но с написанием все более сложного кода количество переменных неизменно растет. И вот уже в списке объявленных переменных их набирается несколько десятков и больше…
Поэтому в программировании промышленных контроллеров (да и в любом другом программировании) переменные делятся на глобальные и локальные.
Глобальные переменные — это переменные, которые определены на уровне всего проекта и доступны для чтения и записи из любой части программы.
Глобальные переменные объявляются в списке глобальных переменных (GVL). Для этого используется ключевое слово VAR_GLOBAL.
Глобальные переменные подходят для обмена данными между программными компонентами (POU). Например, их можно использовать для хранения настроек или параметров, которые должны сохраняться на протяжении выполнения программы.
Также все переменные, объявленные в конфигурации ПЛК (при назначении входов-выходов, например) – глобальные.
Локальные переменные – это переменные, объявленные внутри конкретного программного компонента POU (например, функции или функционального блока). Они доступны для чтения и записи только внутри этого компонента.
В программировании контроллеров у блоков также есть входные и выходные переменные. К ним можно обращаться извне, указывая их полное имя ИМЯ_БЛОКА.ИМЯ_ПЕРЕМЕННОЙ.
То есть они локальные, принадлежат конкретному блоку, но использовать их в других местах программы также можно.
Глобальная и локальная переменные могут иметь одинаковое имя. В POU, где объявлена такая локальная переменная, она оказывается «сильнее» одноименной глобальной.
Использовать одноименные глобальные переменные нельзя (например, объявленные в конфигурации модуля расширения и в списке глобальных переменных).
Советы:
- Имена переменных. Используйте осмысленные имена для переменных, чтобы программа была более читаемой и понятной.
- Тип данных. Выберите правильный тип данных, чтобы значения передавались корректно и не происходило переполнение или перерасход памяти.
Например, все типы лампочек, выключателей и других дискретных устройств используют логический тип данных (BOOL), значение аналогового датчика является вещественным или целым числом, поэтому требуется тип данных INT или REAL, а информация по Modbus передается с помощью WORD.
- Адреса регистров. Будьте внимательны при назначении адресов переменным. Бывает так, что адреса сбиваются, если удалить лишний модуль ввода-вывода, например. Зафиксируйте адрес вручную, чтобы это не происходило, кликнув по нему дважды мышкой и нажав Enter.
- Глобальные переменные. Используйте их по назначению, не нужно все переменные делать глобальными – это усложняет отладку и поиск ошибок.
- Инициализация. Не забывайте инициализировать переменные с нужными значениями, если это необходимо. Типичная ошибка новичка – деление на 0. Это когда вы не инициализировали переменную, а затем применили ее в вычислении с делением.
Ставьте 👍🏻, если статья понравилась!
А если хотите узнать больше о переменных и нюансах их использования - приходите к нам на курс Программирования ПЛК, набор уже идет!