Главная » Статьи » Мои статьи |
Описание системы и ошибкиОбразец относительно проблематичной в поиске ошибки.
С учетом отказа от BreakPoint'ов из-за Timer'а и прочих нюансов языка Ladder Diagramm, вызвала довольно существенные сложности.
Место: Саратовская область
Дата: 2007 год
С компьютера на ПЛК подаются уставки (времена, флаги режимов) и команды на устройство.
Из ПЛК на устройство выдаются команды. Устройство выдает на ПЛК свои статусы. Из ПЛК на верхний уровень выдаются сигналы статуса устройства и времени до конца команды на это устройство. Сигналы пакуются в слова, для минимизации объемов приема и передачи. Изначально все работало, но через какое-то время при подаче команд статусы на компьютере устроили "пляски с саблями”. Начали моргать не по делу и вообще вести себя крайне недружелюбно. Причем только в одном месте на одном объекте. Но стабильно, что очень порадовало. ПоискПринципов и зависимостей моргания понять сходу не удается. Возможно из-за усталости, возможно по причине отсутствия таковых. Проверка наличия данной ошибки не только на компьютере, но и в ПЛК – показывает, что да. Ошибка присутствует и там, в слове, формируемом для компьютера. Проверка наличия ошибки в статусе, приходящем от устройства – отметает устройство, как возможный источник проблемы. В статусах от него непосредственно, ошибки нет. Сравнение с кодами других объектов, на которых этой ошибки нет – различий не выдает. Полная идентичность. Вероятность ошибки в программе ПЛК уменьшается. Отключается компьютер, как возможный источник ошибки, записывающий что-то в данную область памяти. Ошибка сохраняется. Вероятность ошибки из-за компьютера стремится к 0. Соответственно не смотря ни на что проблема все-таки в ПЛК. Перенесение слова статуса, передаваемого из ПЛК на компьютер, в другую область памяти ничего не дает. Ошибка сохраняется. Перенесение куска кода в другой блок (условно функцию) тоже не влияет на ошибку. Соответственно вероятность того, что это влияет какая-то еще посторонняя команда – резко уменьшается. Изменения статуса устройства вручную ничего не меняют. При изменении статуса устройства форсированием (принудительно, постоянно) ошибка все равно сохраняется. Постепенно удаляются коды, и остается практически минимум, при котором сохраняется ошибка. Удаляется таймер. Команда не сбрасывается, но статусы перестают прыгать. Восстанавливается таймер. Таймер самый заурядный, ничего необычного. Таких в программе еще штук 200. Рассматривается формирование сигнала от ПЛК, как самого вероятного кандидата на источник ошибки. Он упакован для компактности в одно слово, биты статуса в старшем байте, время в младшем. Тремя командами: Вроде ничего необычного, причем полностью идентичная система работает с десятками идентичных устройств вокруг. Заменяется последовательность команд на обратную: Все заработало. После разбора - ситуация становится окончательно понятной. Причина ошибкиОператоры увеличили стандартное время таймаута с 1,5 до 10 минут. И если 1,5 минуты это 90 секунд, то 10 минут это 600 секунд. Суть последней проверкиПри записи сначала времени, и лишь затем статуса – статус забивал биты переполнения, приходившие от значения времени. А при обратной последовательности команд, время наоборот забивало своими битами статус. РешениеВремя и статусы были разбиты на 2 слова. Местным инженерам было предложено провести ТО или заменить устройство с таймаутом, превышающим стандартный более чем в 6 раз. | |
Просмотров: 1446 | Комментарии: 4
| Теги: |
Всего комментариев: 0 | |