Делаем у себя на работе очередную линию розлива своего продукта. Наладчик вчера попросил изменить временную задержку в узле укупорки - я сделал, тестируют механику дальше.
Сегодня он просит еще раз изменить тот же параметр - я меняю в программе, подключаю ноут к плате и ... система ребутается. Загружается и типа подождите бла бла бла, короче она решила обновится.
Меня пинать не надо, ноут не мой и у меня такие нежданчики отключены))). Ну ладно, винда обновилась, запустил программу, прошил, ушел.
Собрался уже домой, звонят - не работает розлив...
Кусок программы на розлив
в переменных "время ф1,ф2..." в мсек задаем время открытия форсунок, "пуск" это общая переменная на нормальный режим работы, "клапан каплеприемника" переменная для управления клапаном одноименного устройства (убираем каплеприемник, опускаем форсунки, поднимаем форсунки и возвращаем каплеприемник), "форсунки внизу" соответственный сигнал с датчика.
Алгоритм предполагается такой:
Каждый раз, при опускании форсунок, они открываются на заданное время. И пока не закроется последняя, переменная "залив финиш" равна "0". По окончанию работы всех одновибраторов она становится "1" и сбрасывается в "0" при возвращении каплеприемника в исходное состояние ("0").
Так вот, этот кусок кода работает (как я задумывал) на всех версиях (начиная с Flprog 5.х) на других, ранее сделанных линиях. И до сегодняшнего дня (7.3.5), пока не пришло обновление винды... После него алгоритм изменился на следующий - при достижении форсунками нижнего уровня они открываются на мгновение и в переменную "залив финиш" записывается "1", что собственно и заканчивает процесс розлива...При чем иногда, при первом включении, он разливает правильно...
Варианты про влияние таймаутов модбаса и других таймеров отпадают, поскольку вчера работало, сегодня нет. Изменилась только винда.
Проблема решилась после добавления задержки