TGViewer
Codesys 3.5 Обучение программированию. Codesys 3.5 Обучение программированию. @codesys4 · 269 subscribers
Post #168 80
🧠 РАЗБОР КОДА: R_TRIG

⚠️ Найдите подвох в программе!

В CODESYS объявлены переменные:

VAR
fbTrig : R_TRIG;
xA : BOOL := TRUE;
xB : BOOL := FALSE;
iCount : INT := 0;
END_VAR


В каждом цикле ПЛК выполняется:

fbTrig(CLK := xA);

IF fbTrig.Q THEN
iCount := iCount + 1;
END_IF;

fbTrig(CLK := xB);


Условия:

• xA всегда TRUE.
• xB всегда FALSE.
• iCount изначально равен 0.
• Внутренняя память R_TRIG изначально FALSE.
• Код выполняется 5 циклов подряд.

━━━━━━━━━━━━━━━━━━

❓ Чему будет равен iCount после 5 циклов?

А) 0
Б) 1
В) 5
Г) 10

Сначала выберите вариант, затем откройте ответ 👇

🔎 Нажмите, чтобы открыть разбор

✅ Правильный ответ — В) 5.

Разберём первый цикл.

1️⃣ Первый вызов:

fbTrig(CLK := xA);

Поскольку xA = TRUE, а предыдущее состояние FALSE, R_TRIG обнаруживает передний фронт.

fbTrig.Q = TRUE

Счётчик увеличивается:

iCount = 1

2️⃣ Второй вызов:

fbTrig(CLK := xB);

Поскольку xB = FALSE, блок обновляет внутреннюю память значением FALSE.

Теперь fbTrig.Q = FALSE.

На следующем цикле ситуация повторяется!

Первый вызов снова получает TRUE после FALSE и формирует импульс.

Счётчик увеличивается каждый цикл.

Результат:

Цикл 1 → iCount = 1
Цикл 2 → iCount = 2
Цикл 3 → iCount = 3
Цикл 4 → iCount = 4
Цикл 5 → iCount = 5

Итого: iCount = 5.

Хотя xA ни разу не изменялся!

Причина — повторные вызовы одного экземпляра R_TRIG с разными значениями CLK.


━━━━━━━━━━━━━━━━━━

💡 Главная мысль

R_TRIG запоминает предыдущее состояние входа.

Если использовать один экземпляр для разных сигналов, они будут влиять на его внутреннюю память.

Для независимых сигналов используйте отдельные экземпляры R_TRIG.

━━━━━━━━━━━━━━━━━━

💬 Получилось ответить правильно?

Напишите свой вариант в комментариях!

📤 Отправьте эту задачу коллеге-программисту ПЛК!

Проверьте, заметит ли он подвох с первого раза. 😉

🔁 Репостните интерактив в профильный чат — пусть больше инженеров проверят свои знания.

📚 Больше разборов CODESYS:
https://t.me/codesys4

#CODESYS #ПЛК #АСУТП #StructuredText #R_TRIG
More from @codesys4
  1. Oct 15, 2026document post
  2. Oct 15, 2026🎛 Интерактивный симулятор ПИД-регулятора! Хотите наглядно увидеть, как работают P, I и D…
  3. Oct 15, 2026🧠 РАЗБОР КОДА: R_TRIG Один экземпляр — два вызова за цикл ПЛК. Сигналы не изменяются: xA…
  4. Oct 15, 2026⚙️ FUNCTION_BLOCK в CODESYS 📘 Часть 3/3. Как избежать ошибок повторного вызова ФБ? В пред…
  5. Oct 15, 2026⚙️ FUNCTION_BLOCK в CODESYS 📘 Часть 2/3. Почему R_TRIG может выдавать ложные импульсы? В…
  6. Oct 15, 2026⚙️ FUNCTION_BLOCK в CODESYS: почему повторный вызов может изменить результат? 📘 Часть 1/2…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →