Страница 1 из 1

Влияние версии Windows на исполнение кода

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

Влияние версии Windows на исполнение кода

Добавлено: 20.05.2021{, 17:57}
edyapd
Понимаю, что на работающей линии не стоит экспериментировать, но всё же, что будет, если вернуть вот это
Ingwar писал(а):
20.05.2021{, 17:30}
Наладчик вчера попросил изменить временную задержку в узле укупорки - я сделал, тестируют механику дальше.
Сегодня он просит еще раз изменить тот же параметр - я меняю в программе
как было раньше.

Влияние версии Windows на исполнение кода

Добавлено: 20.05.2021{, 18:16}
Ingwar
edyapd писал(а):
20.05.2021{, 17:57}
как было раньше.
Я Вам больше скажу - пробовались даже 3 старых версии (я после каждого изменения присваиваю новый индекс). :no:

Влияние версии Windows на исполнение кода

Добавлено: 20.05.2021{, 18:46}
edyapd
Но есть ещё один способ проверить.
Этот же самый проект зиливаете в плату дома.
Хотя можно и без прошивки. Достаточно просто сравнить получившиеся бинарные файлы.
Просто мне с трудом верится, что обновление Виндовс могло так повлиять. У нас у всех разные Виндовс, а у некоторых даже Линукс. Но я не разу не видел, чтобы один и тот же проект у одного работал, а у другого нет (при одинаковых контроллерах)
Чисто моё мнение.

Отправлено спустя 15 минут 40 секунд:
Понимаю, что это только кусочек кода. Но попытался его проанализировать и вижу только одну причину. Возможен дребезг либо на сигнале "форсунки внизу", либо на сигнале "пуск".
Что получается приходит сигнал после "AND" и взводит RS-триггер. После этого пропадает(возможно на несколько миллисекунд) один из сигналов "пуск" или "форсунки внизу" и это формирует сигнал "залив финиш". Поставив задержку после триггера вы убираете влияние дребезга. Генераторы перезапускаются и дальше всё штатно.

Влияние версии Windows на исполнение кода

Добавлено: 20.05.2021{, 22:04}
nalnik
У меня новый ЛЕНОВО - обновился за неделю два раза - проблем с ESP32 и 8266 при пере прошивки не было.

Влияние версии Windows на исполнение кода

Добавлено: 21.05.2021{, 01:56}
Ingwar
edyapd писал(а):
20.05.2021{, 19:02}
Возможен дребезг либо на сигнале "форсунки внизу", либо на сигнале "пуск".
Что получается приходит сигнал после "AND" и взводит RS-триггер. После этого пропадает(возможно на несколько миллисекунд) один из сигналов "пуск" или "форсунки внизу" и это формирует сигнал "залив финиш". Поставив задержку после триггера вы убираете влияние дребезга. Генераторы перезапускаются и дальше всё штатно.
Да, наверное такой вариант может быть... Если наладчики индуктивный датчик на предельную дистанцию выставили... Хотя визуально (есть индикация) промаргивания нет. Дал задание - завтра уменьшат дистанцию.

Влияние версии Windows на исполнение кода

Добавлено: 21.05.2021{, 06:27}
com
Проблема всетаки есть подобная.Как пример, у меня и, покрайней мере еще у одного пользователя, перестал работать блок триггер со сбросом, раньше работал, на новом компе нет. Некоторые ранее сделанные скетчи тоже не работают.

Влияние версии Windows на исполнение кода

Добавлено: 21.05.2021{, 08:14}
edyapd
com писал(а):
21.05.2021{, 06:27}
перестал работать блок триггер со сбросом
А что это за блок?
И возможно это связано не с Виндовс, а с версией самого FLProg.

Влияние версии Windows на исполнение кода

Добавлено: 21.05.2021{, 09:08}
com
edyapd, вот этот: viewtopic.php?f=81&t=2976.

Влияние версии Windows на исполнение кода

Добавлено: 21.05.2021{, 09:38}
edyapd
com, по хорошему, этот блок надо бы обсуждать в той ветке. Можете там выложить проект, в котором этот блок не работает (желательно с пояснением, что конкретно не работает)? Там кода три строчки, даже не знаю, что там может не работать.