Нужен - ли медленный модбас-мастер или продолжать поиски

Использование протоколов Modbus, SPI, I2c и прочих, проблемы и решения

Чдо дальше делать?

Проложить поиски, пока работаем с тем что есть.
23
58%
Необходимо реализовать медленный но надёжный
17
43%
 
Всего голосов: 40

Аватара пользователя
support
Супермодератор
Сообщения: 1753
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 602
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Нужен - ли медленный модбас-мастер или продолжать поиски

#1

Сообщение support » 30.01.2016{, 12:47}

Из всех библиотек поддерживающих модбас-мастер на Ардуино я нашол только одну стабильно работающую http://playground.arduino.cc/Code/ModbusMaster.
Она поддерживает весь функционал модбас, и работает без зависаний и ошибок. Но есть одна болшая проблемма. Время одного запроса 2007 милисикунд, то есть2 секунды. Причём это время почти не зависит от объёма передаваемых или читаемых данных. Поэтому я не знаю, стоит ли с ней заморачиваться и реализовывать в программе, или ещё поискать какое - то время. Давайте решим это вместе.
Автор программы FLProg.

XENOMAN
Рядовой
Сообщения: 33
Зарегистрирован: 05.10.2015{, 18:03}
Репутация: 2

Нужен - ли медленный модбас-мастер или продолжать поиски

#2

Сообщение XENOMAN » 30.01.2016{, 13:16}

ИМХО полнофункциональный и надежный slave будет куда более полезен. С появлением возможность использования C в своих блоках, необходимость в модбас как средстве общения между ардуинами - отпадает, а вот как средство прямого общения ардуины с компьютером - вещь незаменимая(в моём конкретном случае), но тут важен именно слейв и не мастер. Сорри за офтоп.

Аватара пользователя
support
Супермодератор
Сообщения: 1753
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 602
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Нужен - ли медленный модбас-мастер или продолжать поиски

#3

Сообщение support » 30.01.2016{, 13:19}

Насчёт слейвов я не переживаю, они и сейчас отлично работают. И менять их я не планирую. А вот с мастером беда. Я так подозреваю что возможностей ардуинки не хватает, поэтому и никто пока не сделал оптимальной библиотеки мастера
Автор программы FLProg.

XENOMAN
Рядовой
Сообщения: 33
Зарегистрирован: 05.10.2015{, 18:03}
Репутация: 2

Нужен - ли медленный модбас-мастер или продолжать поиски

#4

Сообщение XENOMAN » 30.01.2016{, 13:30}

И снова прошу прощение за оффтоп. Но если Вы не планируете менять слейвы, выходит возможность использовать другие типы переменных(Discrete Inputs, Coils, Input Registers) так и не появится? Подозреваю что и за мастера и за слейва отвечает одна библиотека. Ну тогда я голосую за медленную библиотеку.

Аватара пользователя
support
Супермодератор
Сообщения: 1753
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 602
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Нужен - ли медленный модбас-мастер или продолжать поиски

#5

Сообщение support » 30.01.2016{, 13:46}

Нет за мастера и слейва отвечают разные библиотеки (сейчас одна, но мастер в ней реализован ужасно).  А текущие слейвы поддерживают весь функционал модбаса. ПРосто организация памяти немного нестандартная. Объясню:
Например вы создали 3  переменых  модбас с адресами 0 - 2 типа Integer,
  • Если мастер запросит холдинг-регистр с адресом 0 то получит значение переменной с адресом 0, но это понятно.
  • если мастер запросит Input Register с адресом 0  полчит значение переменной с адресом 0
  • если мастер запросит Discrete Inputs с адресом 0  полчит значение нулевого бита переменной с адресом 0 (соответственно запросив Discrete Inputs с адресом 16 полчит значение нулевого бита переменной с адресом 1 )
  • если мастер запросит Coils с адресом 0  полчит значение нулевого бита переменной с адресом 0 (соответственно запросив Coils с адресом 16 полчит значение
    нулевого бита переменной с адресом 1 )
ТО же самое с записью. В программе FLProg  есть блоки доступа на чтение и запись отдельных битов в переменной, так что проблеммы с получение отдельных битов нет
Автор программы FLProg.

XENOMAN
Рядовой
Сообщения: 33
Зарегистрирован: 05.10.2015{, 18:03}
Репутация: 2

Нужен - ли медленный модбас-мастер или продолжать поиски

#6

Сообщение XENOMAN » 30.01.2016{, 14:44}

Спасибо за разъяснения.

Аватара пользователя
Max
Лейтенант
Сообщения: 691
Зарегистрирован: 06.09.2015{, 13:12}
Репутация: 5
Откуда: Тюмень-Баку
Имя: Максим

Нужен - ли медленный модбас-мастер или продолжать поиски

#7

Сообщение Max » 30.01.2016{, 14:46}

support писал(а):Из всех библиотек поддерживающих модбас-мастер на Ардуино я нашол только одну стабильно работающую http://playground.arduino.cc/Code/ModbusMaster.Она поддерживает весь функционал модбас, и работает без зависаний и ошибок. Но есть одна болшая проблемма. Время одного запроса 2007 милисикунд, то есть2 секунды. Причём это время почти не зависит от объёма передаваемых или читаемых данных. Поэтому я не знаю, стоит ли с ней заморачиваться и реализовывать в программе, или ещё поискать какое - то время. Давайте решим это вместе.
support писал(а):Из всех библиотек
Вот прикрепленный файл. Кое что по ModBus лежало в архивах. Посмотрите.
Для скачивания вложений Вы должны быть зарегистрированы.

Аватара пользователя
support
Супермодератор
Сообщения: 1753
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 602
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Нужен - ли медленный модбас-мастер или продолжать поиски

#8

Сообщение support » 30.01.2016{, 15:02}

Не подскажешь где скачал? Я смотрю там библиотека SPI подтягивается и не очень понятно как подключается преобразователь RS485 поскольку компорт используется для передачи на комп
Автор программы FLProg.

Аватара пользователя
support
Супермодератор
Сообщения: 1753
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 602
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Нужен - ли медленный модбас-мастер или продолжать поиски

#9

Сообщение support » 30.01.2016{, 15:13}

Разобрался. Библиотека очень интересная, но .... для

Цитата
MAX3107 - компактный универсальный асинхронный приемопередатчик (UART) с буфером FIFO на 128 слов в цепях приемника и передатчика, управление
которым осуществляется через интерфейс SPI или I2C. Встроенный генератор устраняет необходимость применения внешнего
источника синхронизации. Режимы 2x и 4x позволяют достичь скорости
передачи данных 24Мб/с. Схема фазовой автоподстройки частоты, делитель
сигналов синхронизации, предварительный делитель частоты и тактовый
генератор позволяют добиться максимальной точности при задании скорости
обмена и минимизировать зависимость от опорной частоты генератора.


Причём я не нашол готовые платы с ним, а сам чип даже в китае самый дешовый почти полштуки. Нам нужно по UART
Автор программы FLProg.

RK6YK
Рядовой
Сообщения: 2
Зарегистрирован: 06.09.2015{, 09:43}
Репутация: 0
Откуда: Maykop

Нужен - ли медленный модбас-мастер или продолжать поиски

#10

Сообщение RK6YK » 30.01.2016{, 16:01}

Привет Сергей! Не стоит ломать копья! Для возможностей 
контроллера Ардуино это вполне достаточно.(Не будет же он управлять турбиной на КС) Да и на промышленных контроллерах хоть и заявляют время опроса 10-20 мс.
на несколько тысяч тегов все равно выливается в 4-5сек.
Это я доказывал при пуске наших объектов на Олимп.Игр
Так как я в основном работал на Газпром САУ газотурбинных агр. Там все аварийн защиты выделяеться все на отд.контр.(ССС Compressor Control Corp) Allen Bredl/ и т.д На Ямбурге мог встречать. Хоть и не по теме но пожалуйста сделай настройку размера шрифтов в интефейсе проги на нет.буке мелковато) И огомное спасибо за прогу!!!

Аватара пользователя
Max
Лейтенант
Сообщения: 691
Зарегистрирован: 06.09.2015{, 13:12}
Репутация: 5
Откуда: Тюмень-Баку
Имя: Максим

Нужен - ли медленный модбас-мастер или продолжать поиски

#11

Сообщение Max » 30.01.2016{, 19:10}

support писал(а):Не подскажешь где скачал? Я смотрю там библиотека SPI подтягивается и не очень понятно как подключается преобразователь RS485 поскольку компорт используется для передачи на комп
Один из пользователей форума мне пожертвовал.

Аватара пользователя
Skull
Лейтенант
Сообщения: 424
Зарегистрирован: 08.09.2015{, 16:18}
Репутация: 3
Откуда: Мариуполь

Нужен - ли медленный модбас-мастер или продолжать поиски

#12

Сообщение Skull » 30.01.2016{, 22:35}

Модбас слейв на самом деле какой-то странный. Например ошибки не выдает при попытке записи в регистры для чтения . И нет различия в 3001, 4001..... Для этого модбаса оба регистра будут 01, поэтому, если менять слейвы с работающим чужим мастером на свои- беда получается.

А по поводу мастера- надо работать на чем есть пока идут изыскания. Ну не сидеть же без ничего если есть что-то боль-мень рабочее.
Ну и медленный тоже можно, но все равно продолжать изыскания. На самом деле, задач, требующих миллисекунды на обработку в бытовых задачах не так много. Да и в производственных тоже.
Кстати, может есть кто-то, кто осилит переписать библиотеку на Асме ?
ЗЫ ЭТУ пробовали ?
Последний раз редактировалось Skull 30.01.2016{, 23:12}, всего редактировалось 1 раз.

Аватара пользователя
dekorator
Лейтенант
Сообщения: 412
Зарегистрирован: 06.09.2015{, 09:39}
Репутация: 7
Откуда: Баку

Нужен - ли медленный модбас-мастер или продолжать поиски

#13

Сообщение dekorator » 31.01.2016{, 10:54}

http://flprog.ru/_fr/0/ModbusMasterV2.zip
Не годится?
Я её без Flprog тестил и нормально было.

Добавлено (31.01.2016, 10:54)
---------------------------------------------
Может для теста, с помощью этой библиотеки блок на си сделает кто?
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось dekorator 31.01.2016{, 12:22}, всего редактировалось 1 раз.

Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 377
Зарегистрирован: 06.09.2015{, 16:04}
Репутация: 6
Откуда: Маркс-Энгелс
Имя: Alexander

Нужен - ли медленный модбас-мастер или продолжать поиски

#14

Сообщение Grafsaxar » 01.02.2016{, 13:09}

Слейвы работают со скадой отлично. ( во всяком случае у меня )

Но заметил одну странную вещь:

Делаю 35 Тэгов в ардуине. В ОРС сервере выставляю 400001 для адреса 0 , 400001 дла адреса 1 и т.д.

ОРС сервер получает все данные без проблем, но как задаю адрес 400031 сервер умирает. 

Не получает никаких данных, 400032, 400033, такая же проблема.

Если оставляю до 400030 а следующий  ставлю 400040 данные от тэгов  до 400030 получает, 400040 нет т.к. его нет в ардуине.

Это глюк сервера или слейва ???

Может нужна возможность адреса в Ардуине вручную задавать?
Качество — это делать что-либо правильно, даже когда никто не смотрит

ingwar_85
Рядовой
Сообщения: 14
Зарегистрирован: 12.11.2015{, 07:23}
Репутация: 0
Откуда: Кемерово

Нужен - ли медленный модбас-мастер или продолжать поиски

#15

Сообщение ingwar_85 » 01.02.2016{, 15:41}

День добрый. Больше 2 сек - круто конечно. Я уж не знаю там про турбины на КС и олимпийские объекты. Но лично в моем проекте  за 2 сек можно пропустить пару литров масла в водопровод. В принципе я уже прикрутил к кориолису трансмиттер и теперь снимаю данные  через 4-20мА. ModBUS мне не к спеху.  Я за то, что бы ещё поискать.  
Не найдется другого варианта, пусть будет тормозной, всё лучше чем ничего.

omich66
Рядовой
Сообщения: 33
Зарегистрирован: 17.12.2015{, 19:37}
Репутация: 0

Нужен - ли медленный модбас-мастер или продолжать поиски

#16

Сообщение omich66 » 05.02.2016{, 20:48}

Здравствуйте.

Есть еще такой вариант
Modbus RTU libraries for Arduino

Обсуждается здесь

forum.arduino.cc

Аватара пользователя
Max
Лейтенант
Сообщения: 691
Зарегистрирован: 06.09.2015{, 13:12}
Репутация: 5
Откуда: Тюмень-Баку
Имя: Максим

Нужен - ли медленный модбас-мастер или продолжать поиски

#17

Сообщение Max » 08.02.2016{, 06:35}

Вот тут интересная дискуссия по стабильности и об ошибках в RS485. Похоже, там решили проблему ошибок связанную со скоростями.

Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 377
Зарегистрирован: 06.09.2015{, 16:04}
Репутация: 6
Откуда: Маркс-Энгелс
Имя: Alexander

Нужен - ли медленный модбас-мастер или продолжать поиски

#18

Сообщение Grafsaxar » 12.02.2016{, 20:26}

Спасибо Max интересная статейка.

Я тоже у меня замечал чем меньше скорость тем больше ошибок. Сеичас остановился на 57600  и всё вроде нормально работает.
Насчёт сопротивления как то не подумал. у меня в каждом ардуино на 120 Ом стоит.

Возможно Pullup и pulldown попробовать надо.

Изображение
Последний раз редактировалось Grafsaxar 12.02.2016{, 20:27}, всего редактировалось 1 раз.
Качество — это делать что-либо правильно, даже когда никто не смотрит

Аватара пользователя
Skull
Лейтенант
Сообщения: 424
Зарегистрирован: 08.09.2015{, 16:18}
Репутация: 3
Откуда: Мариуполь

Нужен - ли медленный модбас-мастер или продолжать поиски

#19

Сообщение Skull » 12.02.2016{, 20:53}

Grafsaxar писал(а):у меня в каждом ардуино на 120 Ом стоит.
Нужно только по краям

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 25
Откуда: Новосибирск

Нужен - ли медленный модбас-мастер или продолжать поиски

#20

Сообщение Слимпер » 13.02.2016{, 08:51}

Skull писал(а):Нужно только по краям
Полностью согласен
Grafsaxar, Вот почитайте 
Правильная разводка сетей RS-485
и еще
Подключение микроконтроллеров к шине RS-485

Ответить

Вернуться в «Протоколы»