Odot Automation: Модуль CT-222F Быстрый старт
Данный пример демонстрирует создание эффекта «бегущего огня» на модуле дискретных выходов CT-222F с использованием процессора C4374.
Используемое оборудование:
- Процессор: Odot C4374
- Модуль расширения: CT-222F (16 дискретных выходов, PNP)
Описание алгоритма
Программа реализует циклическое переключение 16 выходов (от 0 до 15) и обратно. Интервал переключения составляет 300 мс.
Примечание для новичков: Мы используем переменную
OutputWord типа WORD, чтобы подготовить состояние всех выходов сразу, а затем одним махом записываем её в физический адрес %QW0.
Код программы (ST - Structured Text)
PROGRAM PLC_PRG
VAR
// Таймер для создания задержки между шагами
TimerRun: TON;
// Счетчик текущего активного выхода (0-15)
StepCounter: INT := 0;
// Направление движения: TRUE = вперед (0->15), FALSE = назад (15->0)
Direction: BOOL := TRUE;
// Переменная для формирования состояния всех 16 выходов
OutputWord: WORD;
END_VAR
// 1. Настройка таймера на 300 мс в режиме автогенерации
TimerRun(IN := NOT TimerRun.Q, PT := T#300ms);
// 2. Обработка логики шагов по срабатыванию таймера
IF TimerRun.Q THEN
IF Direction THEN
StepCounter := StepCounter + 1;
IF StepCounter >= 15 THEN
Direction := FALSE; // Дошли до края, меняем направление
END_IF;
ELSE
StepCounter := StepCounter - 1;
IF StepCounter <= 0 THEN
Direction := TRUE; // Вернулись в начало, идем вперед
END_IF;
END_IF;
END_IF;
// 3. Формирование выходного сигнала
OutputWord := 0; // Сначала обнуляем все биты
// Включаем бит, соответствующий текущему шагу
CASE StepCounter OF
0: OutputWord.0 := 1;
1: OutputWord.1 := 1;
2: OutputWord.2 := 1;
3: OutputWord.3 := 1;
4: OutputWord.4 := 1;
5: OutputWord.5 := 1;
6: OutputWord.6 := 1;
7: OutputWord.7 := 1;
8: OutputWord.8 := 1;
9: OutputWord.9 := 1;
10: OutputWord.10 := 1;
11: OutputWord.11 := 1;
12: OutputWord.12 := 1;
13: OutputWord.13 := 1;
14: OutputWord.14 := 1;
15: OutputWord.15 := 1;
END_CASE;
// Подсказка: Вместо CASE можно использовать лаконичную команду сдвига:
// OutputWord := SHL(1, StepCounter);
// 4. Привязка к физическому модулю CT-222F
%QW0 := OutputWord;