RSLogix 500: Moving Timer ACC into Another Timer PRE — figure 1

RSLogix 500: перенос значения ACC одного таймера в PRE другого таймера

Программирование таймеров RSLogix 500: считывание текущего значения ACC работающего таймера и его передача в PRE другого таймера для моделирования реверсивно...

Эмуляция двунаправленного движения в RSLogix 500 часто требует таймера, который работает столько времени, сколько уже длилось движение в противоположном направлении. Классический пример — тренажёр гаражных ворот: если фотоэлемент срабатывает после трёх секунд движения вниз, обратное движение вверх должно длиться три секунды, а не заданные жёстко шесть секунд. Это требование нельзя выполнить, изменив аккумулятор исходного таймера. Пока строка истинна, инструкция таймера перезаписывает текущее значение .ACC на каждом сканировании. Надёжный шаблон — зафиксировать .ACC в целочисленной переменной по фронту однократного импульса, а затем записать это целое число в .PRE таймера назначения перед включением обратного движения.

RSLogix 500: перенос ACC таймера в PRE другого таймера — рисунок 1

Считывайте .ACC, сохраняйте значение через N7 и записывайте его в .PRE — никогда не рассматривайте аккумулятор как постоянную уставку.

Архитектура файла таймеров

Каждый таймер SLC занимает три слова: биты состояния (EN/TT/DN), .PRE и .ACC. Основания времени составляют 0,01 с, 0,1 с или 1,0 с. При основании 0,01 с уставка 600 соответствует шести секундам. В публикации 1747-6.15 подробно описано поведение набора инструкций.

Элемент Назначение Доступна ли запись уставки?
T4:x.PRE Целевое значение счётчика Да — правильный адрес назначения
T4:x.ACC Счётчик истёкшего времени Не оказывает длительного эффекта, пока EN имеет значение true
T4:x/TT Квалификатор времени Используется для разрешения захвата

Почему запись в .ACC с помощью MOV не работает

Пока EN имеет значение true, инструкция TON/TOF/RTO обновляет .ACC на каждом сканировании. Пользовательская команда MOV, записывающая данные в .ACC, перезаписывается при следующем (или даже в том же) сканировании. Повторная загрузка .ACC также не изменяет целевое значение сравнения: инструкция сравнивает .ACC с .PRE. Контролируемый способ изменить длительность — записать новое значение в .PRE и перезапустить таймер с .ACC = 0.

Захват с помощью ONS, передача с помощью MOV

Строка захвата:
XIC Door_Going_Down  XIC Down_Timer/TT  ONS Capture_Bit  MOV T4:2.ACC N7:10

Строка загрузки уставки:
XIC Capture_Bit  MOV N7:10 T4:3.PRE

Строка фиксации:
XIC Capture_Bit  OTL Preset_Loaded

Строка по умолчанию (с блокировкой):
XIC Door_Idle  XIO Preset_Loaded  MOV 600 T4:3.PRE

Очистка лестничной строки:
XIC Up_Timer/DN  OTU Preset_Loaded

RSLogix 500 не принимает инструкцию MOV, в которой один и тот же элемент таймера используется и как источник, и как назначение. Всегда используйте промежуточное хранение через слово целочисленного файла, например N7:10. Бит хранения ONS фиксирует значение по переднему фронту луча, поэтому удерживаемый вход не перезаписывает уставку на каждом сканировании.

RSLogix 500: перенос ACC таймера в PRE другого таймера — рисунок 2

Конечный автомат вокруг операции перемещения

Состояние Условие входа Действие
ПРОСТОЙ Включение питания / оба завершены Сбросить однократные импульсы и биты направления
ПОДЪЁМ Фронт UP Уставка подъёма по умолчанию, если не загружена
ОПУСКАНИЕ Фронт DOWN Уставка опускания по умолчанию
РЕВЕРС Фронт луча во время опускания Зафиксировать ACC → записать в PRE подъёма, включить подъём

Примечания по миграции в Studio 5000

Таймеры Logix используют ту же семантику .PRE / .ACC с адресацией на основе тегов. Сохраните значение в DINT, запишите его в .PRE обратного таймера и сохраните однократное обнаружение фронта с помощью ONS или эквивалента. В статье базы знаний A-43402 описан перенос накопленных значений в другие теги в ControlLogix; роли элементов соответствуют шаблону SLC.

Проверки фронтов фиксации ACC и записи PRE

Прервите луч в известный момент времени и убедитесь, что обратная уставка равна зафиксированному значению ACC с точностью до одного такта временной базы. Убедитесь, что уставки по умолчанию загружаются только при значении Preset_Loaded = false. К распространённым ошибкам относятся запись в .ACC, пропуск целочисленного промежуточного этапа, фиксация без квалификатора /TT и возможность перезаписи .PRE после фиксации логикой инициализации. При переносе логики учебного стенда в Logix сохраняйте единообразие документации по таймерам с другими стандартами PLC и PAC.

Об авторе

Марк Таунсенд | Старший инженер по автоматизации — системы Allen-Bradley

Марк Таунсенд — старший инженер по автоматизации с более чем 18-летним опытом работы с платформами Allen-Bradley, включая ControlLogix, CompactLogix и устаревшие системы SLC-500. В повседневной работе он занимается логикой RSLogix / Studio 5000 и вводом в эксплуатацию HMI FactoryTalk View на стареющем и разнородном оборудовании.

RSLogix 500: перенос значения ACC одного таймера в PRE другого таймера

Программирование таймеров RSLogix 500: считывание текущего значения ACC работающего таймера и его передача в PRE другого таймера для моделирования реверсивной двери с защитным световым барьером.

Эмуляция двунаправленного движения в RSLogix 500 часто требует таймера, который работает столько времени, сколько уже длилось движение в противоположном направлении. Классический пример — тренажёр гаражных ворот: если фотоэлемент срабатывает после трёх секунд движения вниз, обратное движение вверх должно длиться три секунды, а не заданные жёстко шесть секунд. Это требование нельзя выполнить, изменив аккумулятор исходного таймера. Пока строка истинна, инструкция таймера перезаписывает текущее значение .ACC на каждом сканировании. Надёжный шаблон — зафиксировать .ACC в целочисленной переменной по фронту однократного импульса, а затем записать это целое число в .PRE таймера назначения перед включением обратного движения.

RSLogix 500: перенос ACC таймера в PRE другого таймера — рисунок 1

Считывайте .ACC, сохраняйте значение через N7 и записывайте его в .PRE — никогда не рассматривайте аккумулятор как постоянную уставку.

Архитектура файла таймеров

Каждый таймер SLC занимает три слова: биты состояния (EN/TT/DN), .PRE и .ACC. Основания времени составляют 0,01 с, 0,1 с или 1,0 с. При основании 0,01 с уставка 600 соответствует шести секундам. В публикации 1747-6.15 подробно описано поведение набора инструкций.

Элемент Назначение Доступна ли запись уставки?
T4:x.PRE Целевое значение счётчика Да — правильный адрес назначения
T4:x.ACC Счётчик истёкшего времени Не оказывает длительного эффекта, пока EN имеет значение true
T4:x/TT Квалификатор времени Используется для разрешения захвата

Почему запись в .ACC с помощью MOV не работает

Пока EN имеет значение true, инструкция TON/TOF/RTO обновляет .ACC на каждом сканировании. Пользовательская команда MOV, записывающая данные в .ACC, перезаписывается при следующем (или даже в том же) сканировании. Повторная загрузка .ACC также не изменяет целевое значение сравнения: инструкция сравнивает .ACC с .PRE. Контролируемый способ изменить длительность — записать новое значение в .PRE и перезапустить таймер с .ACC = 0.

Захват с помощью ONS, передача с помощью MOV

Строка захвата:
XIC Door_Going_Down  XIC Down_Timer/TT  ONS Capture_Bit  MOV T4:2.ACC N7:10

Строка загрузки уставки:
XIC Capture_Bit  MOV N7:10 T4:3.PRE

Строка фиксации:
XIC Capture_Bit  OTL Preset_Loaded

Строка по умолчанию (с блокировкой):
XIC Door_Idle  XIO Preset_Loaded  MOV 600 T4:3.PRE

Очистка лестничной строки:
XIC Up_Timer/DN  OTU Preset_Loaded

RSLogix 500 не принимает инструкцию MOV, в которой один и тот же элемент таймера используется и как источник, и как назначение. Всегда используйте промежуточное хранение через слово целочисленного файла, например N7:10. Бит хранения ONS фиксирует значение по переднему фронту луча, поэтому удерживаемый вход не перезаписывает уставку на каждом сканировании.

RSLogix 500: перенос ACC таймера в PRE другого таймера — рисунок 2

Конечный автомат вокруг операции перемещения

Состояние Условие входа Действие
ПРОСТОЙ Включение питания / оба завершены Сбросить однократные импульсы и биты направления
ПОДЪЁМ Фронт UP Уставка подъёма по умолчанию, если не загружена
ОПУСКАНИЕ Фронт DOWN Уставка опускания по умолчанию
РЕВЕРС Фронт луча во время опускания Зафиксировать ACC → записать в PRE подъёма, включить подъём

Примечания по миграции в Studio 5000

Таймеры Logix используют ту же семантику .PRE / .ACC с адресацией на основе тегов. Сохраните значение в DINT, запишите его в .PRE обратного таймера и сохраните однократное обнаружение фронта с помощью ONS или эквивалента. В статье базы знаний A-43402 описан перенос накопленных значений в другие теги в ControlLogix; роли элементов соответствуют шаблону SLC.

Проверки фронтов фиксации ACC и записи PRE

Прервите луч в известный момент времени и убедитесь, что обратная уставка равна зафиксированному значению ACC с точностью до одного такта временной базы. Убедитесь, что уставки по умолчанию загружаются только при значении Preset_Loaded = false. К распространённым ошибкам относятся запись в .ACC, пропуск целочисленного промежуточного этапа, фиксация без квалификатора /TT и возможность перезаписи .PRE после фиксации логикой инициализации. При переносе логики учебного стенда в Logix сохраняйте единообразие документации по таймерам с другими стандартами PLC и PAC.

Об авторе

Марк Таунсенд | Старший инженер по автоматизации — системы Allen-Bradley

Марк Таунсенд — старший инженер по автоматизации с более чем 18-летним опытом работы с платформами Allen-Bradley, включая ControlLogix, CompactLogix и устаревшие системы SLC-500. В повседневной работе он занимается логикой RSLogix / Studio 5000 и вводом в эксплуатацию HMI FactoryTalk View на стареющем и разнородном оборудовании.

Оставить комментарий

Обратите внимание, комментарии должны быть одобрены перед публикацией.