PDA

Просмотр полной версии : Наблюдение за выполнением цикла программы.



Val64
26.09.2018, 19:56
Всем доброго времени суток, прошу помощи.
Кто подскажет как организовать наблюдение за выполнением определенного куска кода (программы)?
Если будет превышено время выполнения этого кода, должно все остановится и выдать аварию.
Время выполнения задается в ручную к примеру от 0 до 1000 сек.

Филоненко Владислав
27.09.2018, 11:57
1. В Задачах можно включить и настроить watchdog
2. Как подсказал Валенок, смотреть время самостоятельно

P.S. Остановить всё и выдать аварию - решение не совсем верное. Правильнее запустить альтернативный, упрощённый алгоритм (управления или безопасного останова) и таки включить аварию :)

Val64
27.09.2018, 16:17
1. В Задачах можно включить и настроить watchdog

Мне надо в прцесе работы-наладке это время менять в широких пределах.
В watchdog возможно это?

Val64
27.09.2018, 20:02
Я имею виду изменять время не находу процесса отработки, а выставил время например 3сек. и запустил процес на отработку, если этот процесс за 3сек. не добрался до концевика окончания процесса прервать процесс или возвратится в исходную позицию, а если укладывается в эти 3сек. то продолжать дальше...

Val64
27.09.2018, 20:23
Это литьевая машина FR 110.
Пока читаю описание работы, там практический все рабочии циклы контролируются по времени исполнения..

Val64
27.09.2018, 22:40
Вот чо вижу, то и пою

var
циклы : (исходная_позиция, отработка, продолжать_дальше, прервать_процесс ...);
t : time;
время_например : time := t#3s;
определися_таки : bool;
-------------
case циклы of
исходная_позиция:
if запустил_процес_на_отработку then
t := time();
циклы := отработка;
end_if
отработка :
if концевик then
циклы := продолжать_дальше;
elsif time() - t > время_например then
циклы := sel(определися_таки, исходная_позиция, прервать_процесс);
end_if
продолжать_дальше:
... ;
прервать_процесс:
... ;
end_case

А нельзя ли это все в LD или FB сделать?