RSLogix 500: перенос значения ACC одного таймера в PRE другого таймера
Программирование таймеров RSLogix 500: считывание текущего значения ACC работающего таймера и его передача в PRE другого таймера для моделирования реверсивно...
Эмуляция двунаправленного движения в RSLogix 500 часто требует таймера, который работает столько времени, сколько уже длилось движение в противоположном направлении. Классический пример — тренажёр гаражных ворот: если фотоэлемент срабатывает после трёх секунд движения вниз, обратное движение вверх должно длиться три секунды, а не заданные жёстко шесть секунд. Это требование нельзя выполнить, изменив аккумулятор исходного таймера. Пока строка истинна, инструкция таймера перезаписывает текущее значение .ACC на каждом сканировании. Надёжный шаблон — зафиксировать .ACC в целочисленной переменной по фронту однократного импульса, а затем записать это целое число в .PRE таймера назначения перед включением обратного движения.
Считывайте .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 фиксирует значение по переднему фронту луча, поэтому удерживаемый вход не перезаписывает уставку на каждом сканировании.
Конечный автомат вокруг операции перемещения
| Состояние | Условие входа | Действие |
|---|---|---|
| ПРОСТОЙ | Включение питания / оба завершены | Сбросить однократные импульсы и биты направления |
| ПОДЪЁМ | Фронт 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 на стареющем и разнородном оборудовании.