Сообщение от
capzap
Это программирование контроллеров, а не компьютеров, тут другой подход
+1. Зависать в любом месте программі нельзя.
Сообщение от
capzap
Опишите задачу всего проекта, тогда Вам помогут найти правильное решение, красивое и т.д.
Да, в принципе. уважаемый коллега petera дал вполне годный код. Автору вопроса нужно всего лишь ввести этот код в пустой проект, подключить Standard.lib и убедиться, как все красиво работает. То, что у него должно выполняться 1 раз в каждом шаге цикла при истечении таймера - записать над или под строкой
И фсьо...
Рассуждая дальше, не могу не отметить, что упомянутая "сложная и громоздкая" конструкция CASE на самом деле очень и очень часто используется как раз при разруливании задачи: выполнять несколько разных по смыслу действий с разносом в некоторые интервалы времени (даже не обязательно одинаковые, как в нашем примере) или по выплнению тех или иных условий во внешнем мире (то есть ожидать не внутренние таймеры, а внешние события). Для таких случаев заводится переменная ФАЗА, которая может принимать одно из ограниченного множества значений, а по ней прокручивается тот самый
Код:
CASE ФАЗА OF
ФАЗА1: (* Ждем Q первого таймера *)
...
ФАЗА2: (* Ждем Q второго таймера *)
...
ФАЗА3: (* Джем внешнего события *)
...
END_CASE
Ну, и уж совсем красиво это решается в SFC. Там замени слово ФАЗА на понятие ШАГ - и получишь те же крашенки, только в профиль