Jump to content
    

MODBUS RTU требовательность к ресурсам

Здравствуйте! Можно ли как то оценить, как по времени будет распределен процесс обмена данными по протоколу MODBUS. Устройство slave, запросы от мастера поступают асинхронно. Скорость 9600 (19200) команды на чтение и запись до 8 16 бит. регистров.
Почему спрашиваю, стоит ли городить Modbus на существующий проект, в котором все основные процессы происходят в прерываниях через 1,7 мс и их отложенное выполнение просто вызовет критический сбой. Модбус насколько понимаю, принимает все посылки, а потом выбирает те, которые подходят под адрес устройства. Также есть вычисление контрольных сумм и отправка ответа мастеру. Тактовые частоты 8/16 МГц. 

Share this post


Link to post
Share on other sites

2 минуты назад, Siluan сказал:

Почему спрашиваю, стоит ли городить Modbus на существующий проект, в котором все основные процессы происходят в прерываниях через 1,7 мс и их отложенное выполнение просто вызовет критический сбой.

Если ваш CPU/МК может назначать разным прерываниям разные приоритеты, то обмен по какому либо протоколу никак не может повлиять на "основные процессы которые происходят в прерываниях через 1,7 мс". Просто по определению.

Ну если конечно руки кодонаписателя не совсем уж кривые.

8 минут назад, Siluan сказал:

их отложенное выполнение

А почему оно (выполнение) отложилось?

Share this post


Link to post
Share on other sites

1 minute ago, jcxz said:

Если ваш CPU/МК может назначать разным прерываниям разные приоритеты

Не может, простые 8 битные МК

 

2 minutes ago, jcxz said:

А почему оно (выполнение) отложилось?

Ядро МК было занято обменом по протоколу Modbus, длительностью которого  я и интересуюсь.

Share this post


Link to post
Share on other sites

а что вне обработчика прерываний, нельзя обработать пакет? какой таймаут у мастера? наверное сотни миллисекунд?

Share this post


Link to post
Share on other sites

28 минут назад, Siluan сказал:

Не может, простые 8 битные МК

Уверены?

Не знаю кто такие "простые 8 битные МК", но "простой 8-битный STM8" вполне себе позволяет назначать приоритеты.

 

1) Если приоритетов действительно нет, то наверное обмен по протоколу можно сделать в фоне (без прерываний).

2) Кроме того - если приоритетов нет, можно обработку протокола пристыковать к концу существующего ISR. И написать его так аккуратно, чтобы укладывался в длительность пауз между прерываниями.

 

Share this post


Link to post
Share on other sites

Мастер формирует сообщения через 180 мс. Тут больше интересен прием, два конкурирующих прерывания, плюс тужен таймер для формирования 1,5 и 3,5 паузы у него то же прерывание.

Share this post


Link to post
Share on other sites

33 минуты назад, Siluan сказал:

Ядро МК было занято обменом по протоколу Modbus, длительностью которого  я и интересуюсь.

Ищете гадалку, которая сможет угадать сколько в неизвестном проекте на неизвестном МК, занимает выполнение кода неизвестного качества???  :unknw:

4 минуты назад, Siluan сказал:

Мастер формирует сообщения через 180 мс. Тут больше интересен прием, два конкурирующих прерывания, плюс тужен таймер для формирования 1,5 и 3,5 паузы у него то же прерывание.

Зачем именно ущербный Modbus-RTU? Полно нормальных протоколов, не требующих никаких пауз.

Share this post


Link to post
Share on other sites

Зачем гадалку? Скорость обмена известна, кол-во регистров известно. Мне же не нужно с точностью до 1 такта. 

 

Share this post


Link to post
Share on other sites

30 minutes ago, Siluan said:

Зачем гадалку? Скорость обмена известна, кол-во регистров известно. Мне же не нужно с точностью до 1 такта. 

 

Ну так накатите FreeModbus и посмотрите. Наверняка для стареньких восьмибиток найдётся готовый порт.

Share this post


Link to post
Share on other sites

До выполнения этого действия и хотелось узнать, сколько там десятки мкс, сотни или милисекунды. И как это распределено по времени. Может и не стоит ничего накатывать.

Share this post


Link to post
Share on other sites

1 час назад, jcxz сказал:

1) Если приоритетов действительно нет, то наверное обмен по протоколу можно сделать в фоне (без прерываний).

Если это какая-нибудь AVR-ка, то можно "критичные" прерывания снова разрешить в не критичном прерывании. Т.е. зашли в прерывание по приему UART-символа, и первой же инструкцией снова разрешили прерывания для "критичных" событий. Но ТС сам не понимает, чего хочет, судя по всему.

Share this post


Link to post
Share on other sites

2 hours ago, Siluan said:

До выполнения этого действия и хотелось узнать, сколько там десятки мкс, сотни или милисекунды. И как это распределено по времени.

Тогда продолжайте толочь воду в ступе.

Share this post


Link to post
Share on other sites

3 hours ago, Arlleex said:

1) Если приоритетов действительно нет, то наверное обмен по протоколу можно сделать в фоне (без прерываний).

На слейве без прерываний? И в итоге выловить из эфира не понятный винигрет.

3 hours ago, Arlleex said:

Но ТС сам не понимает, чего хочет, судя по всему.

Только в радиолюбительских схемах наверное некритичные события могут разрешать работу критичных. Улыбнул 😆

Share this post


Link to post
Share on other sites

2 минуты назад, Siluan сказал:

Только в радиолюбительских схемах наверное некритичные события могут разрешать работу критичных. Улыбнул 😆

О чем речь, Вы поняли хоть? Вам задержка 2-3 такта 16 МГц сделает погоду для "1,7 мс критичного процесса, прерывание которого вызовет сбой"?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...