реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> магистральный интерфейс на RS485
andrewlekar
сообщение Feb 12 2013, 06:26
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Проектируем новую систему и закладываем туда магистраль для подключения всяких удалённых приборов. Очевидное решение - модбас по RS485. Однако модбас уже применяем в нынешнем устройстве и как-то не особо радует. Модбас RTU совсем не завёлся потому что требует точное соблюдение времени с микросекундной точностью и непрерывных фреймов. А модбас ASCII (используем сейчас) не особо эффективно использует шину.
Порекомендуйте, что делать? Оставлять модбас ASCII? Забарывать модбас RTU? Переехать на другой протокол? Как насчёт профибас?
Go to the top of the page
 
+Quote Post
lisstret
сообщение Feb 12 2013, 07:55
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 10-06-10
Из: Владивосток
Пользователь №: 57 835



А на Ethernet пихнуть?
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Feb 12 2013, 09:21
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Дороговато. И свитчей кучу ставить.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Feb 12 2013, 09:56
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(andrewlekar @ Feb 12 2013, 13:21) *
Дороговато. И свитчей кучу ставить.

Зато все до предела стандартно, отработано, легко масштабируемо, и проч., и проч. А при покупке множества свитчей вам наверняка скидку сделают ...
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Feb 12 2013, 10:22
Сообщение #5


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



CAN ?
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Feb 12 2013, 11:01
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



CAN вместо RS485 хорошо подойдет, ethernet - плохо
Go to the top of the page
 
+Quote Post
Lagman
сообщение Feb 12 2013, 15:28
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Цитата(andrewlekar @ Feb 12 2013, 10:26) *
Проектируем новую систему и закладываем туда магистраль для подключения всяких удалённых приборов. Очевидное решение - модбас по RS485. Однако модбас уже применяем в нынешнем устройстве и как-то не особо радует. Модбас RTU совсем не завёлся потому что требует точное соблюдение времени с микросекундной точностью и непрерывных фреймов. А модбас ASCII (используем сейчас) не особо эффективно использует шину.
Порекомендуйте, что делать? Оставлять модбас ASCII? Забарывать модбас RTU? Переехать на другой протокол? Как насчёт профибас?

Зря вы так про modbus RTU, на самом деле там всего два тонких момента (я имею ввиду версию для последовательного порта RS), по версии "MODBUS over serial line specification and implementation guide V1.02" это то что во фрейме (посылке) не должно быть интервалов, между байтами, больше 1.5 char (времени отправки байта на вашей скорости) и следующий фрейм не должен идти раньше чем через 3,5 chara. Первый обычно без проблем реализуется через прерывание и выдачу буфера, а второе на таймере. Остальные времянки обговариваются/просчитываются и при скоростях больше 19200 не меняются (For baud rates greater than 19200 Bps, fixed values for the 2 timers should be used: it is recommended to use a value of 750μs for the inter-character time-out (t1.5) and a value of 1.750ms for inter-frame delay (t3.5).).
Но есть еще толстый момент, если вы (мастер) сделали запрос у слейва и есть ошибка (в передаче фрейма, в CRC или таймаут не выдержали) то в modbus нет подтверждения этих ошибок, и понять почему слейв не отвечает можно только с анализатором.
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Feb 13 2013, 06:33
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



То есть я правильно понимаю, что модбас RTU забарывается без запрета прерываний, с возможностью использования ртос, на обычном UART, мастер и слейв? Если так, то можно ещё пободаться с модбасом.
CAN - приятное решение, но на слейвах хочется использовать как можно более дешёвые cortex-m0 или PIC. Там CAN редок и дорог.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Feb 13 2013, 08:56
Сообщение #9


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(andrewlekar @ Feb 13 2013, 10:33) *
То есть я правильно понимаю, что модбас RTU забарывается без запрета прерываний, с возможностью использования ртос, на обычном UART, мастер и слейв?

Абсолютно.
msp430, 115200 Modbus RTU - без вопросов.
между байтами - 100мкс, вагон времени. Если ещё и очередь регулируемой глубины или DMA - вообще замечательно.
Причем RTU в обработке даже легче, чем ASCII, поскольку можно тупо кидать байты в буфер до возникновения тайм-аута, а потом обработать весь пакет.
RTOS по барабану, поскольку приоритет прерывания всегда выше, чем любой задачи. То есть байты никуда не денутся, а обработать можно не торопясь после приема всего пакета.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
skyv
сообщение Feb 13 2013, 10:52
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606



Цитата(Lagman @ Feb 12 2013, 18:28) *
Зря вы так про modbus RTU, на самом деле там всего два тонких момента (я имею ввиду версию для последовательного порта RS), по версии "MODBUS over serial line specification and implementation guide V1.02" это то что во фрейме (посылке) не должно быть интервалов, между байтами, больше 1.5 char (времени отправки байта на вашей скорости) и следующий фрейм не должен идти раньше чем через 3,5 chara. Первый обычно без проблем реализуется через прерывание и выдачу буфера, а второе на таймере. Остальные времянки обговариваются/просчитываются и при скоростях больше 19200 не меняются (For baud rates greater than 19200 Bps, fixed values for the 2 timers should be used: it is recommended to use a value of 750μs for the inter-character time-out (t1.5) and a value of 1.750ms for inter-frame delay (t3.5).).
Но есть еще толстый момент, если вы (мастер) сделали запрос у слейва и есть ошибка (в передаче фрейма, в CRC или таймаут не выдержали) то в modbus нет подтверждения этих ошибок, и понять почему слейв не отвечает можно только с анализатором.


Если использовать свою систему (в качестве master) и свои удаленные устройства (в качестве slave), то для применения modbus RTU нет вообще никаких проблем.
Я не понимаю для чего в такой системе выдерживать временные интервалы с микросекундной точностью.



Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 13 2013, 14:04
Сообщение #11


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Вы все старательно обходите один вопрос: длина физ. линии. При CAN это может быть макс. 40метров.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Feb 13 2013, 14:36
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Сделать звезду (хаб) на драйверах от CAN (или точнее по принципу) , между хабом и девайсами драйверы от rs422. Можно будет гонять и CAN и UART. Или еще что-нибудь. Про оптоволокно еще можно не забывать.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 21:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.04188 секунд с 7
ELECTRONIX ©2004-2016