Добрый день. Осваиваю программирование в CoDeSys 3.5, столкнулся с проблемой.
Стоит задача сделать трёхпозиционный переключатель на базе трёх двухпозиционных тумблеров.

Переключение любого тумблера должно сбрасывать остальные два в ноль.
Написал такую программу на языке CFC.

Если переключать тумблеры справа налево, то всё работает нормально. Включаем S3, затем S2 (S3 отключается), затем S1 (отключается S2). Но если переключать тумблеры слева направо, то после включения тумблера S1 остальные включить невозможно. Графически отображается, что при нажатии на S2 или S3 они на долю секунды включаются, а затем сбрасываются в ноль. При этом S1 остаётся включённым.
Пробовал строить программу на разных элементах (SEL, RS-триггер), всё то же самое.
Похоже, программа последовательно обрабатывает элементы начиная с нулевого, и как только доходит до первого включённого тумблера (в нашем случае S1), обрабатывает сброс тумблеров S2 и S3, а затем возвращается в начало, не проверив состояние остальных элементов.

Пробовал менять очерёдность выполнения программы, выставив сначала выполнение элементов EQ (присвоил им номера 0-2), а затем уже сброс тумблеров. В таком случае программа работает, но есть небольшая проблема: включение любого тумблера сбрасывает остальные, но и он сам тоже сбрасывается. Приходится включать его второй раз, что не очень удобно.