Влияние версии Windows на исполнение кода
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Влияние версии Windows на исполнение кода
Всем привет. Сегодня столкнулся с "забавным" случаем и потерял пару часов пока не нашел причину.
Делаем у себя на работе очередную линию розлива своего продукта. Наладчик вчера попросил изменить временную задержку в узле укупорки - я сделал, тестируют механику дальше.
Сегодня он просит еще раз изменить тот же параметр - я меняю в программе, подключаю ноут к плате и ... система ребутается. Загружается и типа подождите бла бла бла, короче она решила обновится.
Меня пинать не надо, ноут не мой и у меня такие нежданчики отключены))). Ну ладно, винда обновилась, запустил программу, прошил, ушел.
Собрался уже домой, звонят - не работает розлив...
Кусок программы на розлив
[spoiler] [/spoiler]
Исходные данные:
в переменных "время ф1,ф2..." в мсек задаем время открытия форсунок, "пуск" это общая переменная на нормальный режим работы, "клапан каплеприемника" переменная для управления клапаном одноименного устройства (убираем каплеприемник, опускаем форсунки, поднимаем форсунки и возвращаем каплеприемник), "форсунки внизу" соответственный сигнал с датчика.
Алгоритм предполагается такой:
Каждый раз, при опускании форсунок, они открываются на заданное время. И пока не закроется последняя, переменная "залив финиш" равна "0". По окончанию работы всех одновибраторов она становится "1" и сбрасывается в "0" при возвращении каплеприемника в исходное состояние ("0").
Так вот, этот кусок кода работает (как я задумывал) на всех версиях (начиная с Flprog 5.х) на других, ранее сделанных линиях. И до сегодняшнего дня (7.3.5), пока не пришло обновление винды... После него алгоритм изменился на следующий - при достижении форсунками нижнего уровня они открываются на мгновение и в переменную "залив финиш" записывается "1", что собственно и заканчивает процесс розлива...При чем иногда, при первом включении, он разливает правильно...
Варианты про влияние таймаутов модбаса и других таймеров отпадают, поскольку вчера работало, сегодня нет. Изменилась только винда.
Проблема решилась после добавления задержки
[spoiler] [/spoiler]
Возможно я не прав в составлении алгоритма и он имеет "тонкие" моменты...
Делаем у себя на работе очередную линию розлива своего продукта. Наладчик вчера попросил изменить временную задержку в узле укупорки - я сделал, тестируют механику дальше.
Сегодня он просит еще раз изменить тот же параметр - я меняю в программе, подключаю ноут к плате и ... система ребутается. Загружается и типа подождите бла бла бла, короче она решила обновится.
Меня пинать не надо, ноут не мой и у меня такие нежданчики отключены))). Ну ладно, винда обновилась, запустил программу, прошил, ушел.
Собрался уже домой, звонят - не работает розлив...
Кусок программы на розлив
[spoiler] [/spoiler]
Исходные данные:
в переменных "время ф1,ф2..." в мсек задаем время открытия форсунок, "пуск" это общая переменная на нормальный режим работы, "клапан каплеприемника" переменная для управления клапаном одноименного устройства (убираем каплеприемник, опускаем форсунки, поднимаем форсунки и возвращаем каплеприемник), "форсунки внизу" соответственный сигнал с датчика.
Алгоритм предполагается такой:
Каждый раз, при опускании форсунок, они открываются на заданное время. И пока не закроется последняя, переменная "залив финиш" равна "0". По окончанию работы всех одновибраторов она становится "1" и сбрасывается в "0" при возвращении каплеприемника в исходное состояние ("0").
Так вот, этот кусок кода работает (как я задумывал) на всех версиях (начиная с Flprog 5.х) на других, ранее сделанных линиях. И до сегодняшнего дня (7.3.5), пока не пришло обновление винды... После него алгоритм изменился на следующий - при достижении форсунками нижнего уровня они открываются на мгновение и в переменную "залив финиш" записывается "1", что собственно и заканчивает процесс розлива...При чем иногда, при первом включении, он разливает правильно...
Варианты про влияние таймаутов модбаса и других таймеров отпадают, поскольку вчера работало, сегодня нет. Изменилась только винда.
Проблема решилась после добавления задержки
[spoiler] [/spoiler]
Возможно я не прав в составлении алгоритма и он имеет "тонкие" моменты...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Влияние версии Windows на исполнение кода
Понимаю, что на работающей линии не стоит экспериментировать, но всё же, что будет, если вернуть вот это
как было раньше.Ingwar писал(а): 20 май 2021, 17:30 Наладчик вчера попросил изменить временную задержку в узле укупорки - я сделал, тестируют механику дальше.
Сегодня он просит еще раз изменить тот же параметр - я меняю в программе
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Влияние версии Windows на исполнение кода
Я Вам больше скажу - пробовались даже 3 старых версии (я после каждого изменения присваиваю новый индекс).

Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Влияние версии Windows на исполнение кода
Но есть ещё один способ проверить.
Этот же самый проект зиливаете в плату дома.
Хотя можно и без прошивки. Достаточно просто сравнить получившиеся бинарные файлы.
Просто мне с трудом верится, что обновление Виндовс могло так повлиять. У нас у всех разные Виндовс, а у некоторых даже Линукс. Но я не разу не видел, чтобы один и тот же проект у одного работал, а у другого нет (при одинаковых контроллерах)
Чисто моё мнение.
Отправлено спустя 15 минут 40 секунд:
Понимаю, что это только кусочек кода. Но попытался его проанализировать и вижу только одну причину. Возможен дребезг либо на сигнале "форсунки внизу", либо на сигнале "пуск".
Что получается приходит сигнал после "AND" и взводит RS-триггер. После этого пропадает(возможно на несколько миллисекунд) один из сигналов "пуск" или "форсунки внизу" и это формирует сигнал "залив финиш". Поставив задержку после триггера вы убираете влияние дребезга. Генераторы перезапускаются и дальше всё штатно.
Этот же самый проект зиливаете в плату дома.
Хотя можно и без прошивки. Достаточно просто сравнить получившиеся бинарные файлы.
Просто мне с трудом верится, что обновление Виндовс могло так повлиять. У нас у всех разные Виндовс, а у некоторых даже Линукс. Но я не разу не видел, чтобы один и тот же проект у одного работал, а у другого нет (при одинаковых контроллерах)
Чисто моё мнение.
Отправлено спустя 15 минут 40 секунд:
Понимаю, что это только кусочек кода. Но попытался его проанализировать и вижу только одну причину. Возможен дребезг либо на сигнале "форсунки внизу", либо на сигнале "пуск".
Что получается приходит сигнал после "AND" и взводит RS-триггер. После этого пропадает(возможно на несколько миллисекунд) один из сигналов "пуск" или "форсунки внизу" и это формирует сигнал "залив финиш". Поставив задержку после триггера вы убираете влияние дребезга. Генераторы перезапускаются и дальше всё штатно.
- nalnik
- Подполковник
- Сообщения: 1320
- Зарегистрирован: 14 май 2016, 17:12
- Откуда: Кисловодск
- Имя: Александр
Влияние версии Windows на исполнение кода
У меня новый ЛЕНОВО - обновился за неделю два раза - проблем с ESP32 и 8266 при пере прошивки не было.
Я хочу быть добрее, но люди сами нарываются.
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Влияние версии Windows на исполнение кода
Да, наверное такой вариант может быть... Если наладчики индуктивный датчик на предельную дистанцию выставили... Хотя визуально (есть индикация) промаргивания нет. Дал задание - завтра уменьшат дистанцию.edyapd писал(а): 20 май 2021, 19:02 Возможен дребезг либо на сигнале "форсунки внизу", либо на сигнале "пуск".
Что получается приходит сигнал после "AND" и взводит RS-триггер. После этого пропадает(возможно на несколько миллисекунд) один из сигналов "пуск" или "форсунки внизу" и это формирует сигнал "залив финиш". Поставив задержку после триггера вы убираете влияние дребезга. Генераторы перезапускаются и дальше всё штатно.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Влияние версии Windows на исполнение кода
Проблема всетаки есть подобная.Как пример, у меня и, покрайней мере еще у одного пользователя, перестал работать блок триггер со сбросом, раньше работал, на новом компе нет. Некоторые ранее сделанные скетчи тоже не работают.
Влияние версии Windows на исполнение кода
А что это за блок?
И возможно это связано не с Виндовс, а с версией самого FLProg.
Влияние версии Windows на исполнение кода
[ref]com[/ref], по хорошему, этот блок надо бы обсуждать в той ветке. Можете там выложить проект, в котором этот блок не работает (желательно с пояснением, что конкретно не работает)? Там кода три строчки, даже не знаю, что там может не работать.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость