Siluan 0 October 27, 2024 Posted October 27, 2024 · Report post Здравствуйте! Можно ли как то оценить, как по времени будет распределен процесс обмена данными по протоколу MODBUS. Устройство slave, запросы от мастера поступают асинхронно. Скорость 9600 (19200) команды на чтение и запись до 8 16 бит. регистров. Почему спрашиваю, стоит ли городить Modbus на существующий проект, в котором все основные процессы происходят в прерываниях через 1,7 мс и их отложенное выполнение просто вызовет критический сбой. Модбус насколько понимаю, принимает все посылки, а потом выбирает те, которые подходят под адрес устройства. Также есть вычисление контрольных сумм и отправка ответа мастеру. Тактовые частоты 8/16 МГц. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 358 October 27, 2024 Posted October 27, 2024 · Report post 2 минуты назад, Siluan сказал: Почему спрашиваю, стоит ли городить Modbus на существующий проект, в котором все основные процессы происходят в прерываниях через 1,7 мс и их отложенное выполнение просто вызовет критический сбой. Если ваш CPU/МК может назначать разным прерываниям разные приоритеты, то обмен по какому либо протоколу никак не может повлиять на "основные процессы которые происходят в прерываниях через 1,7 мс". Просто по определению. Ну если конечно руки кодонаписателя не совсем уж кривые. 8 минут назад, Siluan сказал: их отложенное выполнение А почему оно (выполнение) отложилось? Quote Share this post Link to post Share on other sites More sharing options...
Siluan 0 October 27, 2024 Posted October 27, 2024 · Report post 1 minute ago, jcxz said: Если ваш CPU/МК может назначать разным прерываниям разные приоритеты Не может, простые 8 битные МК 2 minutes ago, jcxz said: А почему оно (выполнение) отложилось? Ядро МК было занято обменом по протоколу Modbus, длительностью которого я и интересуюсь. Quote Share this post Link to post Share on other sites More sharing options...
gridinp 10 October 27, 2024 Posted October 27, 2024 · Report post а что вне обработчика прерываний, нельзя обработать пакет? какой таймаут у мастера? наверное сотни миллисекунд? Quote Share this post Link to post Share on other sites More sharing options...
jcxz 358 October 27, 2024 Posted October 27, 2024 · Report post 28 минут назад, Siluan сказал: Не может, простые 8 битные МК Уверены? Не знаю кто такие "простые 8 битные МК", но "простой 8-битный STM8" вполне себе позволяет назначать приоритеты. 1) Если приоритетов действительно нет, то наверное обмен по протоколу можно сделать в фоне (без прерываний). 2) Кроме того - если приоритетов нет, можно обработку протокола пристыковать к концу существующего ISR. И написать его так аккуратно, чтобы укладывался в длительность пауз между прерываниями. Quote Share this post Link to post Share on other sites More sharing options...
Siluan 0 October 27, 2024 Posted October 27, 2024 · Report post Мастер формирует сообщения через 180 мс. Тут больше интересен прием, два конкурирующих прерывания, плюс тужен таймер для формирования 1,5 и 3,5 паузы у него то же прерывание. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 358 October 27, 2024 Posted October 27, 2024 · Report post 33 минуты назад, Siluan сказал: Ядро МК было занято обменом по протоколу Modbus, длительностью которого я и интересуюсь. Ищете гадалку, которая сможет угадать сколько в неизвестном проекте на неизвестном МК, занимает выполнение кода неизвестного качества??? 4 минуты назад, Siluan сказал: Мастер формирует сообщения через 180 мс. Тут больше интересен прием, два конкурирующих прерывания, плюс тужен таймер для формирования 1,5 и 3,5 паузы у него то же прерывание. Зачем именно ущербный Modbus-RTU? Полно нормальных протоколов, не требующих никаких пауз. Quote Share this post Link to post Share on other sites More sharing options...
Siluan 0 October 27, 2024 Posted October 27, 2024 · Report post Зачем гадалку? Скорость обмена известна, кол-во регистров известно. Мне же не нужно с точностью до 1 такта. Quote Share this post Link to post Share on other sites More sharing options...
tonyk_av 76 October 27, 2024 Posted October 27, 2024 · Report post 30 minutes ago, Siluan said: Зачем гадалку? Скорость обмена известна, кол-во регистров известно. Мне же не нужно с точностью до 1 такта. Ну так накатите FreeModbus и посмотрите. Наверняка для стареньких восьмибиток найдётся готовый порт. Quote Share this post Link to post Share on other sites More sharing options...
Siluan 0 October 27, 2024 Posted October 27, 2024 · Report post До выполнения этого действия и хотелось узнать, сколько там десятки мкс, сотни или милисекунды. И как это распределено по времени. Может и не стоит ничего накатывать. Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 329 October 27, 2024 Posted October 27, 2024 · Report post 1 час назад, jcxz сказал: 1) Если приоритетов действительно нет, то наверное обмен по протоколу можно сделать в фоне (без прерываний). Если это какая-нибудь AVR-ка, то можно "критичные" прерывания снова разрешить в не критичном прерывании. Т.е. зашли в прерывание по приему UART-символа, и первой же инструкцией снова разрешили прерывания для "критичных" событий. Но ТС сам не понимает, чего хочет, судя по всему. Quote Share this post Link to post Share on other sites More sharing options...
tonyk_av 76 October 27, 2024 Posted October 27, 2024 · Report post 2 hours ago, Siluan said: До выполнения этого действия и хотелось узнать, сколько там десятки мкс, сотни или милисекунды. И как это распределено по времени. Тогда продолжайте толочь воду в ступе. 1 Quote Share this post Link to post Share on other sites More sharing options...
Siluan 0 October 27, 2024 Posted October 27, 2024 · Report post 3 hours ago, Arlleex said: 1) Если приоритетов действительно нет, то наверное обмен по протоколу можно сделать в фоне (без прерываний). На слейве без прерываний? И в итоге выловить из эфира не понятный винигрет. 3 hours ago, Arlleex said: Но ТС сам не понимает, чего хочет, судя по всему. Только в радиолюбительских схемах наверное некритичные события могут разрешать работу критичных. Улыбнул 😆 Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 329 October 27, 2024 Posted October 27, 2024 · Report post 2 минуты назад, Siluan сказал: Только в радиолюбительских схемах наверное некритичные события могут разрешать работу критичных. Улыбнул 😆 О чем речь, Вы поняли хоть? Вам задержка 2-3 такта 16 МГц сделает погоду для "1,7 мс критичного процесса, прерывание которого вызовет сбой"? Quote Share this post Link to post Share on other sites More sharing options...
Михась 9 October 28, 2024 Posted October 28, 2024 (edited) · Report post del Edited October 28, 2024 by Михась Quote Share this post Link to post Share on other sites More sharing options...