|
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
|
|
Windows 11 тормозит обмены через СОМ-порт06.05.2024, 13:36. Показов 5979. Ответов 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 (СОМ-порт) управление через СОМ порт Обмен данными через СОМ-порт |
|
1071 / 512 / 41
Регистрация: 05.05.2022
Сообщений: 3,601
|
||
| 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
|
|
|
1071 / 512 / 41
Регистрация: 05.05.2022
Сообщений: 3,601
|
|
| 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,495
|
||
| 10.05.2024, 19:33 | ||
|
1. Кривой/тормознутый драйвер, причём, необязательно от этой железки.
1
|
||
|
1071 / 512 / 41
Регистрация: 05.05.2022
Сообщений: 3,601
|
||
| 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 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
|
||||
| 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
|
|
|
1071 / 512 / 41
Регистрация: 05.05.2022
Сообщений: 3,601
|
|||
| 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,495
|
||
| 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,495
|
|
| 11.05.2024, 18:44 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
|
||
| 11.05.2024, 19:00 [ТС] | ||
|
2 stalkernet Я правильно понимаю, что Вы предлагаете вместо посылки инициализирующего запроса по таймеру использовать по посылку запроса по StopWatch? При этом, как в Вашем, так и в моем случаях факт приема ответа служит основанием для посылки очередного запроса.
Разницы только в том, что я вызываю событие OnTimer, которое может долго обрабатываться, а Вы сразу посылаете запрос. Ок, подумаю. Добавлено через 3 минуты
0
|
||
|
1071 / 512 / 41
Регистрация: 05.05.2022
Сообщений: 3,601
|
||
| 11.05.2024, 19:08 | ||
|
0
|
||
| 11.05.2024, 19:08 | |
|
Отправка запроса на прибор через сом-порт Не работает СОМ порт RS-232 через PCI Express Передача пакета по протоколу ОВЕН через СОМ порт Как запустить купюроприемник для теста через сом порт ? Код программы на С# для управления прибором через СОМ-порт Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|