|
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
|
|
Windows 11 тормозит обмены через СОМ-порт06.05.2024, 13:36. Показов 6056. Ответов 85
Метки нет (Все метки)
Добрый день, коллеги.
Столкнулся с проблемкой, вынесенной в название темы. Есть приложение. написанное много лет назад на Delphi 7, и без вопросов работавшее на многих ПК с Windows XP и Windows 7. Приложение через СОМ порт (компонент BComPort) посылает запрос контроллеру, контроллер, приняв пакет, отвечает, приложение, приняв ответ, посылает новый запрос (или не приняв ответ, посылает запрос по таймеру). Все просто и отлажено в десятках приложений/устройств. И вот эта отлаженная пара (приложение - контроллер) отказывается нормально работать по Windows 11 - существенно падает скорость обмена (со 120 до 40-50 обмен/с) и в обменах наблюдаются паузы до 0.5 с, что недопустимо. Причем сразу после запуска приложения показывает скорость 120 обмен/с, но через пару секунд скорость падает до 40, затем повышается до 60, снова падает и т.д. Т.к. предположили, что проблема в новой (для нас) ОС, то отключили антивирусы, One Drive, пробовали режимы совместимости в разными ОС, устанавливали приоритет real_time, и пр. Существенного изменения скорости и непрерывности обмена получить не удалось. Соответственно вопрос: как настроить Windows 11 под работу в режиме real_time? Спасибо.
0
|
|
| 06.05.2024, 13:36 | |
|
Ответы с готовыми решениями:
85
Примеры использования Async Free (СОМ-порт) или Async Pro (СОМ-порт) управление через СОМ порт Обмен данными через СОМ-порт |
|
1074 / 514 / 41
Регистрация: 05.05.2022
Сообщений: 3,662
|
||
| 10.05.2024, 14:40 | ||
|
Вообще насчет платы, то я не очень понимаю зачем она нужна, ладно бы она 8 портов реализовывала, это было бы удобно, видел я такое, но можно предельно простыми и общедоступными средствами сделать кучу USB-портов и воткнуть в них сколько нужно преобразователей. И эти преобразователи явно будут более массовые, чем какая-то непонятная платка на 2 порта, а значит вероятность обнаружения и исправления ошибок для их драйверов намного выше.
Дискретность таймера в WinXP ЕМНИП 10 мс, в 9X было 55. Вопрос нумер 2. А что значит "тормозит"? У вас, фактически, имитируется система реального времени, вы посылаете ответ, он приходит менее чем за 20 мс гарантировано. Т. е. ваша система, в принципе, не может работать быстрее 50 об/с на порт. И ни о каких 120 об/с речи не может идти, если только там не по отдельному потоку и таймеру на каждый порт. А то, что у вас плата многопортовая на это намекает. (Я бы такую ср*нь, сделал в тупую, один экземпляр программы на порт, упрощение проги радикальное, и можно одну закрыть, вторая работать будет.) И она работает достаточно быстро, если ответ менее чем через 20 мс приходит. Если время обмена вырастет больше 20 мс, и таймер на эти 20 мс действительно работает, то обмен накроется, либо начнутся дикие глюки, когда приход данных будет отрабатывать после срабатывания таймера. Либо у вас увеличился период таймера. Вот решили в MS в Win11 (я с ней не сталкивался еще), поменять, они же там радужные теперь, и за "ценности". Но тогда что мешает сделать прогу с таймером в 1 мс и померить за какое время она отсчитает, скажем, 100 циклов. Если таймер 10 мс, то за 1 сек должна, а если 50, то за 5. Ну и управление технологическим оборудованием принято осуществлять с PLC, а не с ПК, тем более под Windows, которая технически не является ОС реального времени.
0
|
||
|
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
|
|
| 10.05.2024, 16:39 [ТС] | |
|
0. Плата расширитель СОМ портов поставлена т.к. в конфигурации ПК СОМ порт не предусмотрен. Похоже, что на материнке он есть, но наши IT специалисты решили, что проще поставить расширитель.
1. Производной нет, но в программе реализован (как потом выяснилось) "конечный автомат". В Установке есть около 15-20 пневмоцилиндров, кареток, поворотных столов и пр., движение которых определено соответствующими циклограммами. Т.е. по присланной информации о состоянии пневмоцилиндров и пр. и текущего шага циклограммы принимается решение о том какие пневмораспределители и в какое положение необходимо установить для следующего шага циклограммы. Когда пневмоцилиндры и пр. займут новое положение неизвестно, но чем меньше промежуток времени между изменением состояния датчика и моментом времени, когда об этом узнает программа, тем быстрее уйдет на пневмораспределители команды о переключении для следующего шага циклограммы. Снижение скорости обмена с примерно 100 об/с до примерно 60 об/с привело к увеличению длительности сварки одно шва примерно на 10-15 %. Не критично, но неприятно. Т.е. нужны быстрые обмены, желательно по принципу: закончился прием - началась передача, таймер - средство восстановления связи в случае пропуска приема. 2. Система при коротких пакетах (два-три байта) работает со скоростью до 950 об/с, сам видел. Про таймер я написал несколько раз, 20 мс - это время восстановления связи, а не время между посылками при нормальной прием-передаче. По ПЛК и пр. В свое время выбрал путь построения систем: максимально простой самодельный (для каждой разработки свой) контроллер и программа на универсальном (легко заменяемом) ПК. Программы легко модернизируются под постоянно меняющиеся условия производства и вновь возникающие требования, контроллеры практически не ломаются, а компы дешевы, до последнего времени легко заменяемые, нет проблем санкциями или с тем, что производитель типа Siemens прекращает поддержку и на просьбу поставить контроллер на замену предлагает новую модель. Ну и привык писать на Delphi и С++. Недавно сварочный полуавтомат делали, мы свой (построение, как я описал выше), а коллеги свой (на контроллерах Festo и промышленном компе). Так мы изменения в ПО вносили гораздо оперативнее и с меньшими трудозатратами на отладку. Сварщики работают на наших, им больше нравится. Добавлено через 11 минут П.С. А что уважаемое сообщество думает/знает про эмуляцию Win XP на установленной Win 11? Может быть это выход в моем случае?
0
|
|
|
1074 / 514 / 41
Регистрация: 05.05.2022
Сообщений: 3,662
|
|
| 10.05.2024, 17:47 | |
|
Ну так USB-преобразователи предназначены для того же самого, добавить COM-порт, если на материнке его нет. Точнее, штыри могут быть, но подключаемой планки уже давно не идет в комплекте.
На вашем месте я бы во все точки, время работы которых нужно знать, натыкал Stopwatch'ей для начала. План стандартный, если было хорошо, а после замены стало плохо, то надо искать, что именно повлияло, винда, кривой драйвер, или что-то еще. И поскольку у вас пром. оборудование, то я бы рекомендовал сделать эмулятор вашего оборудования, чтобы посадить его на порт, и он получив правильную команду (необязательно все, столько сколько нужно для теста) слал какой-то правильный же ответ. Разницу в скорости м/у контроллером и ПК можно сымитировать задержкой ответа. Так у вас будет возможность сравнивать как работает при тех или иных конфигурация железа и оборудования, в кабинете на потоке данных, аналогичном тому, который идет с железа. Нужно лишь как-то связать 2 порта на одном компе, не знаю, нуль-модемный кабель у вас, или нет. Более того, в эмулятор можно и поддержку ответов по разным номерам контроллеров сделать.
0
|
|
|
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
|
|
| 10.05.2024, 18:43 [ТС] | |
|
0. Как я уже писал раза два - я неоднократно сталкивался с подвисанием соединения по USB, которое лечилось только снятием/подачей питания на USB преобразователь, поэтому по возможности не использую USB устройств.
1. Stopwatch не использовал, но могу выводить время между приемами пакетов от отдельных контроллеров. Я так делал, ни на что не натолкнуло, но попробую еще раз, вдруг зайдут новые мысли. 2. Эмуляторы Установки - я не понял для чего, к контроллерам и скорости их реакции вопросов нет. И тот вопрос, на который очень хотелось бы получить ответ: что и каким образом может спорадически менять скорость обмена на 50 %, кроме ОС?
0
|
|
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
|
||
| 10.05.2024, 19:33 | ||
|
1. Кривой/тормознутый драйвер, причём, необязательно от этой железки.
1
|
||
|
1074 / 514 / 41
Регистрация: 05.05.2022
Сообщений: 3,662
|
||
| 10.05.2024, 19:52 | ||
|
Ну так если драйвера или железо кривые, то эту кривость можно выявить у себя в кабинете, не трогая комп, управляющий оборудованием.
BTW драйвер у меня для нее стоит от Win7 на Win10, т. к. с тем, который я под Win10 нашел у меня вообще ничего не заработало. Хорошенькое было дело за день до отпуска отдавать сервак на переустановку ОС, т. к. под Win7 больше не было доступа к компу из заводской сети и проверять драйвер для нее. Малотиражная хрень она такая.
0
|
||
|
62 / 42 / 3
Регистрация: 04.01.2019
Сообщений: 278
|
|
| 10.05.2024, 21:24 | |
|
Мдя что сказать, так чтобы не забанили.... на третий день мы узнаем автор электронщик и внятное ТЗ.....
Времена CNC на винде умерли с выходом висты. то что работает на 7-10 это скорее исключение. причина показана на картинке. обработка стека событий. утрировано но все еще намного хуже....( учет приоритетов и колец) Время для юзера выделяется по остаточному принцыпу. Все знаем резкие фризы на пустом месте.... режим совместимости - поставь виртуалку накати ХР и что будет? совместимость тоже самое. а на тему усб. нужно правильные микросхемы брать. да и платку самому с учетом ЭМС-а разводить. да и раземы с корпусом и питаловом тоже. и Вам внятно сказали две программы одна на один порт вторая на другой. одна имитирует посылки прибора. вторая просто принимает. поставте на полчаса. и посмотрите скока доедет а сколько потеряется. если потерь нет тогда уже и протокол можно прикрутить. делов то на час. правильный чип для усб. DS_FT232R.pdf винимельно читаем APPNOTE особенно про 485.... А то ситуация - у меня в цехе 8 метров ДЕШОВОГО кабла для связи на полу валяется. не ммогу понять чего когда варят связь падает.........
0
|
|
|
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
|
||||
| 11.05.2024, 02:27 | ||||
|
2
|
||||
|
62 / 42 / 3
Регистрация: 04.01.2019
Сообщений: 278
|
||
| 11.05.2024, 06:29 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
|
|||
| 11.05.2024, 09:29 [ТС] | |||
|
Коллеги, первая установка разрабатывалась в 2004 году, вторая и третья на опыте первой - в 2011. Вторая без вопросов работает и сейчас, третью, которая работает в режиме 12-24/7, неоднократно модернизировали, что потребовало увеличение производительности ПК и, как следствие, его замену, что, в свою очередь, и вызвало обсуждаемую проблему с Win 11.
Поэтому предложения типа "С этой установкой должен управлять микропроцессор реального времени" и пр. на мой взгляд абсолютно верные, но абсолютно неприменимые в обсуждаемой ситуации. Никто не будет останавливать Установку на модернизацию системы управления только из-за того, что ПО не смогли адаптировать под Win 11. Да и принцип построения системы управления, на мой взгляд, себя неплохо показал. С точки зрения эксплуатанта, конечно - вопросов к Установке достаточно, но стабильность и предсказуемость управления, отсутствие ложных срабатываний и пр. сомнений не вызывает. 2 northener, Вы наверное прочитали, что в обсуждаемой программе в случае приема ответного пакета, запрос формируется и отсылается сразу по окончанию обработки принятого пакета, т.е. именно так, как написал Beltar
Поэтому поясните, пожалуйста, Ваше утверждение
0
|
|||
|
|
||
| 11.05.2024, 10:14 | ||
|
А ещё трындец может подкрасться с другой стороны. Если в программе используются задержки менее 15 мс, например Sleep(1 мс), то программа может с ними работать нормально, а может и глючить. В зависимости от того, был ли запущен браузер Chrome (но не только).
0
|
||
|
Айлурофил
|
|
| 11.05.2024, 10:44 | |
|
Проще всего само управление на Arduino сделать. А с Arduino общаться стандартно через USB.
0
|
|
|
1074 / 514 / 41
Регистрация: 05.05.2022
Сообщений: 3,662
|
|||
| 11.05.2024, 10:48 | |||
|
Конкретно по таймеру, я попробовал сейчас 2 таймера, один 20 мс, другой 5000. Посчитать число срабатываний 1-го, в идеале д/б 250. На практике 155. Для 50 мс 77-79. В общем, дискретность 55 мс. Я думал, что будет хотя бы 10, я никогда меньше 100 мс не ставил. Если у вас надежность связи процентов 99, вы в вашей задаче этого тоже не заметите, раз у вас таймер только на перезапуск. Стояли бы нормальные контроллеры этой проблемы бы не было. Контроллеры, они хотя бы от мира изолированы, в них не крутится миллион процессов, их не грохнет, пришедший из корпоративной сети вирус. Вообще, в плане долговременных индустриальных проектов винда - это тот еще п**** в условиях раздолбайских реалий, потому что те же SCADA-системы могут быть мегачувствительны к версии ОС, и ситуация, когда сделали на XP или 2003 Server, а сейчас и компов-то нет, на которые можно поставить, вполне реальна, ну и надежность 4-го пенька с хранения сейчас вызывает вопросы, т. е. нужно брать проект и переделывать под новую версию SCADA и новую ОС. Ой, а исходники проекта в свое время не передали.
0
|
|||
|
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
|
|||
| 11.05.2024, 12:10 [ТС] | |||
|
И да, проверил на программе с обменом. построенным по такому принципу (Win 7, Delphi 7): При отсутствии ответа (когда запросы посылаются по таймеру): Timer0.Interval:=10; - 65 об/с; Timer0.Interval:=20; - 33 об/с; Timer0.Interval:=50; - 16 об/с; Меня устраивает. Добавлено через 9 минут
0
|
|||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
|
||
| 11.05.2024, 13:19 | ||
|
1
|
||
|
62 / 42 / 3
Регистрация: 04.01.2019
Сообщений: 278
|
|||||||
| 11.05.2024, 17:44 | |||||||
|
А вот таку херню что событие от таймера должно еще доехать и встать в очередь, а потом еще и дойти до обработки. забЫли или забИли??? Простой пример. в первом случае - пока процедура не закончится. события от таймера на обработку не доходят. во втором пока в таймере не закончится новой не обрабатывается. Вобщем событие не прерывание а не понятно что. вобщем .....
таймерами сами можете поигратся.
0
|
|||||||
|
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
|
|
| 11.05.2024, 18:34 [ТС] | |
|
Перевел обмен на СОМ1, встроенный в материнку, различий с обменом через плату-расширитель не заметил.
Еще обратил внимание, что когда в Диспетчере задач обсуждаемая программа висит в топе по загрузке ЦП (типа первое или второе место) при общей загрузке ЦП около 7 %, то скорость обмена почти постоянна и почти максимальна. Когда скорость обмена падает, то в топе оказывается какая-то левая программа (например, msedgewebview2.exe, запущенная от моего имени, хотя я ее не запускал) и загрузка ЦП возрастает до 15 %. Поэтому возвращаюсь к изначальному вопросу: как оптимизировать Win 11? Что прочитал отключил, но этого не хватает. И да. когда убрал Idle режим процессора, загрузка возросла до 100 %, но скорость обмена наоборот упала. Пришлось возвращать обратно. 2 stalkernet Про TStopWatch почитаю, пользоваться не приходилось.
0
|
|
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
|
|
| 11.05.2024, 18:44 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
|
||
| 11.05.2024, 19:00 [ТС] | ||
|
2 stalkernet Я правильно понимаю, что Вы предлагаете вместо посылки инициализирующего запроса по таймеру использовать по посылку запроса по StopWatch? При этом, как в Вашем, так и в моем случаях факт приема ответа служит основанием для посылки очередного запроса.
Разницы только в том, что я вызываю событие OnTimer, которое может долго обрабатываться, а Вы сразу посылаете запрос. Ок, подумаю. Добавлено через 3 минуты
0
|
||
|
1074 / 514 / 41
Регистрация: 05.05.2022
Сообщений: 3,662
|
||
| 11.05.2024, 19:08 | ||
|
0
|
||
| 11.05.2024, 19:08 | |
|
Отправка запроса на прибор через сом-порт Не работает СОМ порт RS-232 через PCI Express Передача пакета по протоколу ОВЕН через СОМ порт Как запустить купюроприемник для теста через сом порт ? Код программы на С# для управления прибором через СОМ-порт Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|