Перейти к содержимому

Что вы ищете?

Понимание продвинутых последовательностей буфера данных FIFO и LIFO в программировании ПЛК

  • от WUPAMBO
Understanding FIFO and LIFO Advanced Data Buffer Sequences in PLC Programming

Обработка данных является критически важным компонентом продвинутой автоматизации заводов. В то время как дискретная логика управляет простыми состояниями машин, обработка сыпучих материалов или отслеживание компонентов требует надежного буферизирования данных. Программисты регулярно управляют этими массивами данных, используя две основные структуры очередей: FIFO (первым пришёл — первым вышел) и LIFO (последним пришёл — первым вышел).

В этом техническом обзоре объясняется механика работы, параметры блока инструкций и стратегии внедрения этих последовательностей стека в современных промышленных системах управления.


Роль регистров массивов в промышленной автоматизации

Современные производственные среды требуют от ПЛК отслеживания перемещения продукции, регистрации временных меток или очередности кодов материалов. Поэтому инженеры используют сдвиговые регистры для последовательной организации переменных массивов данных. Производители, такие как Allen-Bradley (Rockwell), Siemens и Schneider Electric, интегрируют специализированные инструкции стека непосредственно в своё программное обеспечение. Эти блоки инструкций манипулируют массивом слов данных, динамически сдвигая значения в зависимости от физических событий производства.


Механика FIFO: реализация логики «первым пришёл — первым вышел»

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

Интерфейс параметров блока и сигнальные выводы

Стандартная структура FIFO в ПЛК состоит из двух взаимосвязанных инструкций, обычно называемых FIFO Load (FFL) и FIFO Unload (FFU). Блок инструкции работает с тремя критическими управляющими входами и двумя выходами состояния:

  • Сброс (RST): Положительный фронт на этом бите очищает указатель индекса массива и опустошает весь буфер.

  • Запись / Загрузка (Источник): Переход с ложного на истинное состояние захватывает текущее целочисленное или словесное значение и добавляет его в стек.

  • Чтение / Выгрузка (Назначение): Положительный фронт сдвигает самое старое сохранённое значение в целевой регистр.

  • Бит пустоты (EM): Этот диагностический флаг устанавливается в высокий уровень, когда регистр не содержит активных пакетов данных.

  • Бит заполнения (DN/UL): Этот защитный флаг становится истинным, когда буфер достигает максимальной настроенной длины, блокируя дальнейшие записи.


Механика LIFO: реализация логики «последним пришёл — первым вышел»

В противоположность этому, архитектура LIFO меняет порядок извлечения. В этой конфигурации самый новый элемент данных, записанный в стек, становится первым извлекаемым элементом.

Структурные вариации обработки стека

Блок LIFO использует идентичную конфигурацию выводов, как и инструкция FIFO, включая элементы Загрузки, Выгрузки, Заполнения и Пустоты. Однако внутренняя манипуляция указателем существенно отличается. Когда вход извлечения переходит в истинное состояние, ПЛК считывает данные с наивысшей активной позиции индекса. Следовательно, последний сохранённый элемент немедленно выходит из массива, в то время как более старые данные остаются внизу стека до тех пор, пока верхние уровни не освободятся.


Мнения экспертов-разработчиков: крайние случаи и поведение памяти

Консультация эксперта-инженера: Программистам необходимо изолировать биты активации для последовательностей загрузки и выгрузки. Если одновременно активировать входы записи и чтения, указатель индекса может заблокироваться, что приведёт к серьёзной порче данных в вашем массиве.

Кроме того, необходимо оценить поведение вашей аппаратной платформы при циклах питания:

  • Производительность холодного перезапуска: При полном холодном запуске ЦП очищает оперативную память. Это действие полностью сбрасывает границы массива, стирая ваши активные данные отслеживания.

  • Поведение при тёплом перезапуске: Большинство промышленных систем управления сохраняют ретентивные теги данных при кратковременных отключениях питания. Следовательно, индексы стека остаются неизменными. Однако необходимо явно настроить эти регистры памяти как ретентивные в вашей базе тегов, чтобы избежать несоответствий в отслеживании на производстве.


Сценарии промышленного применения

Применение FIFO: отслеживание материалов на конвейерных линиях

На розливочном предприятии система визуального контроля проверяет дефектные контейнеры и записывает код брака в FIFO-регистр. По мере того как физические бутылки движутся по конвейеру, механизм отбраковки работает из той же очереди FIFO. Поскольку первая проверенная бутылка — это первая бутылка, достигшая пневматического отбраковочного рычага, последовательность FIFO идеально соответствует линейному потоку производственного цеха.

Применение LIFO: буферы штабелирования и мостовые краны

На крупных металлургических предприятиях автоматизированные мостовые краны штабелируют стальные катушки в вертикальных отсеках хранения. Кран укладывает поступающие катушки друг на друга. Для извлечения катушки кран должен сначала снять верхний элемент. Используя структуру данных LIFO, ПЛК точно отслеживает расположение запасов, обеспечивая извлечение фактического физического объекта, находящегося на вершине стопки.


Об авторе: Линь Сяоюй

Линь Сяоюй — опытный специалист по промышленной автоматизации с 15-летним техническим стажем, специализирующийся на архитектуре программного обеспечения ПЛК/DCS, оптимизации процессов и промышленных протоколах связи. Она разработала крупномасштабные SCADA-системы и системы безопасности (SIS) для сложных морских, автомобильных и логистических центров по всему миру.