
Сообщение от
Малышев Олег
Попробовал добавить return , опять не то получается. По return контроллер выскакивает из одной программы и бежит выполнять другие программы, а мне этого не надо. Надо чтобы контроллер оставался внутри одной программы 30 сек и никуда не убегал. Собственно программа эта - прогрев калорифера. Т.е. калорифер прогревается 30 сек., а другие команды не выполняются. Понятно что это можно сделать через if или case , но через while проще, а главное надёжнее. Однако сторожевой таймер не даёт это сделать. Вот я и хочу понять - можно его обойти или ничего не получится?
А вот так не получится - ставьте флаг прогрев калорифера, после чего ставьте во всех программах по этому входу сразу выход (return);
Прога на CoDeSys должна выполняться мгновенно - это основа работы ПЛК - цикл = чтение входов - работа - запись выходов. По другому не получится.
В IEC61131-3 все несколько сложнее - но общий принцип такой же. Поэтому следует забыть про задержки требующие останова программы - типа sleep / delay
while (i++<10000000). Сработает охранный таймер.
А вообще - не проще ли купить ТРМ33, 133, 133М02, 133М04 ? В 99 случаях проблема будет решена.