При программировании ПЛК доступны различные структуры блоков, эти блоки включают функции FC, функциональные блоки FB и блоки данных DB. Эти блоки являются очень удобными инструментами, которые вы можете использовать для лучшего проектирования логики ПЛК и сделать ваш код более читаемым и простым для отслеживания и отладки
В предыдущих статьях мы обсуждали FC и FB. В этой статье мы обсудим блоки данных DB, а именно глобальный блок данных.
Содержание:
- Что такое блок данных DB?
- Типы блоков данных.
- Что такое глобальный блок данных?
- Создание глобального блока данных?
- Работа с глобальными блоками данных.
- Пример моделирования.
Что такое блок данных?
Блок данных DB — это область памяти, которая используется для сохранения значений параметров, которые записываются во время выполнения программы ПЛК.
В отличие от блока кода, блок данных DB содержит только объявления переменных. Он не имеет сетей или инструкций, как FC или FB. Структура DB определяется тем, сколько переменных вы объявили внутри блока данных.
Типы блоков данных в ПЛК
Существует два типа блоков данных:
- Глобальные блоки данных
- Экземплярные блоки данных
- Блоки данных ARRAY
Глобальные блоки данных
Как следует из названия, глобальный блок данных глобально объявлен для всей логики ПЛК. Он не назначен определенному кодовому блоку. Вы можете получить доступ к значениям глобального блока данных из любого кодового блока в любом месте вашей логики ПЛК. Глобальный блок данных содержит только статические теги.
Структуру глобального блока данных можно свободно определить. В таблице объявлений для блоков данных вы объявляете элементы данных, которые должны содержаться в глобальном блоке данных.
Блоки данных экземпляра
Экземплярный блок данных назначается непосредственно функциональному блоку FB, независимо от того, определен ли этот функциональный блок внутренне в ПЛК, например, таймеры и счетчики, или пользовательские функциональные блоки FB.
Структура блока данных экземпляра не может быть свободно определена, а вместо этого определяется интерфейсом функционального блока. Блок данных экземпляра содержит именно те параметры блока и теги, которые объявлены в интерфейсе функционального блока.
Однако вы можете определить значения, специфичные для экземпляра, в блоке данных экземпляра; например, начальные значения для объявленных тегов.
Блоки данных ARRAY
Доступные только для ЦП S7-1500, блоки данных ARRAY являются глобальными блоками данных, которые состоят из ARRAY. Этот ARRAY может быть основан на любом типе данных.
Например, возможен ARRAY типа данных ПЛК (UDT). DB не содержит других элементов, кроме ARRAY. Благодаря своей плоской структуре блоки данных ARRAY облегчают доступ к элементам ARRAY и их передачу в вызываемые блоки.
Раздел «Операции перемещения» карты задач «Инструкции» предлагает варианты адресации баз данных ARRAY.
В этой статье мы рассмотрим глобальный блок данных, а два других типа обсудим в отдельных статьях.
Что такое глобальный блок данных?
Блоки данных используются для хранения данных программы ПЛК. Это означает, что они содержат переменные данные, которые используются пользовательской программой. Глобальные блоки данных хранят данные, которые могут использоваться всеми другими блоками.
Максимальный размер блоков данных зависит от ЦП. Вы можете определить структуру глобальных блоков данных любым удобным для вас способом.
У вас также есть возможность использовать типы данных ПЛК (UDT) в качестве шаблона для создания глобальных блоков данных.
Каждый функциональный блок FB, функция FC или организационный блок OB может считывать данные из глобального блока данных или может сам записывать данные в глобальный блок данных. Эти данные остаются в блоке данных даже после выхода из блока данных. См. рисунок 1.
Рисунок 1 – Доступ к глобальному блоку данных
Как вы можете видеть на предыдущем рисунке, к глобальному блоку данных можно получить доступ из любого блока кода внутри программы ПЛК, тогда как к экземпляру блока данных можно получить доступ только из связанного функционального блока.
Создание глобального блока данных
Вы создаете глобальный блок данных так же, как создаете функцию FC или функциональный блок FB. Из добавьте новый блок в дерево проекта. См. рисунок 2.
Рисунок 2 – Создание глобального блока данных
Давайте объявим несколько переменных внутри глобального блока данных.
Это можно сделать, нажав на кнопку добавить новый в разделе имени, написав нужное имя переменной, а затем выбрав тип данных переменной. См. рисунок 3.
Рисунок 3 – Объявление переменных в глобальном блоке данных
Работа с глобальным блоком данных
- Объявление тега.
Мы уже показали, как объявить тег/переменную на рисунке 3.
- Определение начального значения
Начальное значение тега – это значение, определенное вами, которое тег принимает после запуска ЦП. Значение должно соответствовать типу данных тега и не должно выходить за пределы диапазона типа данных. См. рисунок 4.
Тег принимает определенное значение при запуске, при условии, что он не был объявлен как сохраняемый.
Рисунок 4 – Определение начального значения ваших тегов
Итак, если я устанавливаю начальное значение Tank1Level на любое значение, отличное от нуля, это значение будет применено при следующем перезапуске ПЛК. См. рисунок 5.
Рисунок 5 — Определение начального значения для ваших переменных
- Сохранение переменных в глобальных блоках данных
Чтобы предотвратить потерю данных в случае сбоя питания, вы можете пометить данные как сохраняемые. Эти данные хранятся в сохраняемой области памяти.
Параметры настройки сохранения зависят от типа блока данных и типа установленного доступа к блоку. См. рисунок 6.
Рисунок 6 —. Параметр сохранения в глобальных блоках данных
Как вы видите на рисунке 6, переменная Tank2Level установлена как сохраняемое значение, что означает, что даже если ПЛК остановился или произошел сбой питания, в Tank2Level будут сохранены те же данные, когда ПЛК снова включится. Он не будет сброшен до начального значения.
- Доступность для/из ЧМИ
В глобальном блоке данных вы можете определить, может ли переменная быть видимой из таблиц тегов ЧМИ или нет. Вы также можете определить, может ли эта переменная быть прочитана или записана из ЧМИ. См. рисунок 7.
Рисунок 7 — Доступность из ЧМИ
Настройка по умолчанию для любой объявленной переменной в глобальном блоке данных заключается в том, что она может быть доступна, прочитана и записана из ЧМИ. Если вы хотите отключить эту функцию для определенной переменной, вам нужно снять флажок с опции доступности для этой переменной.
Пример моделирования
До сих пор мы создали глобальный блок данных и объявили некоторые переменные внутри.
Теперь мы попробуем запустить моделирование программы и посмотреть, сможем ли мы лучше понять, что такое глобальный блок данных.
Ниже приведены два моделирования ПЛК.
Тестирование начальных значений переменной
Проверьте следующую анимацию, объясняющую начальное значение переменной внутри глобального блока данных.
Анимация 1
Объяснение анимации 1:
- Начальные значения параметров уровня резервуара равны нулю, вы можете видеть на видео, как они изменяются на экране моделирования.
- Когда ПЛК перезапускается, выключается и снова включается, вы видите, что значения будут сброшены до начальных значений, которые равны нулю.
- После этого начальные значения были изменены на 500, 32654 и -356 соответственно, а когда ПЛК перезапускается, значения были изменены на новые начальные значения.
- Обратите внимание, что когда мы изменили начальные значения, нам пришлось снова загрузить нашу логику в ПЛК; вам нужно делать это каждый раз, когда вы вносите изменения в свою логику.
Тестирование опции сохранения переменных в глобальной базе данных
Проверьте следующую анимацию, объясняющую опцию сохранения переменной внутри глобального блока данных.
Анимация 2
Объяснение анимации 2:
- Во-первых, вы заметите, что свойство Retain Tank2Level теперь активно.
- На видео вы видите, как изменяются значения 3 резервуаров.
- Когда ПЛК останавливается, а затем снова запускается, Tank1Level и Tank3Level сбрасываются до начального значения, которое равно 0, но Tank2Level сохраняет свое значение -22938
Вывод
Глобальный блок данных может быть доступен из любого места и любым блоком, который существует в программе ПЛК. Вы можете объявить столько переменных, сколько захотите, внутри глобальной базы данных.
Наиболее оптимальным методом является создание отдельных блоков данных для различных разделов вашей логики, чтобы было очень легко следовать вашей логике. Например, отдельный блок данных для всех переменных, которые необходимо прочитать или записать с помощью ЧМИ.