У ОВЕН ПЛК200 на вебстранице есть опция перезагрузки по исключению. Вот зачем так делать, если это не работает? Чуть тепловой пункт не заморозил. Не перезагрузился он. Поймал исключение и повис в каком-то своем состоянии Исключение поймать можно и не деля на ноль
Комментарии: 12
Anton
Вот поэтому и надо перехватывать все исключения и решать, что делать в каждом конкретном случае.
Vyacheslav
Вы правы, но не уверен, что если оно сглючило, то способно что-нибудь выполнить. Работы столько, что нет времени на такие стендовые эксперименты
Anton
Ещё раз: разберитесь, _как_ считает ПЛК. Коротко: очень много ошибок вы просто не_сможете выловить тупыми проверками. Оно не сглючило, а вызвало обработчик по умолчанию, который вы поленились написать. Создатели ПЛК ведь не_знают, что нужно сделать в каждом конкретном применении ПЛК, ибо это знает только тот, кто использует этот ПЛК.
Gabrrr
Пример?
Anton
Пример чего?
Gabrrr
Пример того, когда нельзя поймать деление на ноль проверкой знаменателя. Ну или хотя бы того, того что "не_сможете выловить тупыми проверками" Я, если что не против обработчика, понятно что он нужен. Но не очень понимаю, какая проблема конкретно в этом случае моет таиться
Anton
Откройте список исключений FPU по IEEE-754 и попытайтесь понять, когда они возникают. Проблема в не_правильном подходе к решению. Вместо системного подхода используется латание дыр.
Gabrrr
Если у тебя не валидный ввод, то его тоже как бы надо править. Ну да ладно.
Vyacheslav
Вы бы минимальный пример выложили или ссылку на обработчик. Тут не только в лени дело. Когда картошку копать начинаешь, нужно быть уверпнным что ее вскопаешь
Anton
Так ведь вы работаете с КДС, а не я. Вас там чё, всех разом в Гугле забанили? Имена коллбэков даже привёл, неужели сами дальше не можете найти описание что и как делать?
Vyacheslav
Ну нет не обидно. Там и правда мусора много больше, чем полезной информации и Вы правы - скорее всего не умею гуглить. Но с работой справляюсь. Не с исключениями, а именно с причинами. Просто убрал горы ошибок и сдал объекты
Ilya
IF divisor = 0 THEN CheckDivInt:=1; ELSE CheckDivInt:=divisor; END_IF; Вот без латания дыр) в КДС