Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Modbus на STM8... Шумит?

Сб окт 12, 2019 09:15:29

Собрал на базе отладочной платы STM8 и пирёмо-передатчика USART-RS485 устройство, портировал FreeModbus. Подключаю к компу, через Modpoll всё работает, как надо. Устанавливаю устройство в рабочую сеть - смотрю в отладчике контроллера - соседние устройства в подсети начинают попеременно отваливаться. Отключаю от сети - всё работает... Такое впечатление, что устройство создаёт помехи в подсети. Как это тестировать? Есть ли какие, может программные анализаторы сети Modbus?

P.S. Ранее бывали ситуации, когда тоже сетка падала по какой-то причине - так же начинали валиться соседние - выявлял проблемное устройство (не самопал) - менял его на такое же - работа восстанавливалась. Производитель устройства рекомендовал тогда попробовать поменять чип RS485, но так руки и не дошли т.к. было ещё такое же устройство. Но в моей ситуации всё новое и на компе работает без видимых сбоев.

Re: Modbus на STM8... Шумит?

Сб окт 12, 2019 17:46:17

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

у меня с freemodbus-ом как-то не сложилось. Он не влазил в имеющиеся у меня китайские stm8 (флеш был сбойный после второго килобайта), и для них наковырял свой простой слейв. А потом просто подпилил его напильником пихал в другие контроллеры тоже) на avr, stm32 и esp8266 вполне работает. Руки не дошли куданить на гитхаб выложить.

UPD обновил архив, с более поздним вариантом
Вложения
mb_tiny.zip
(8.02 KiB) Скачиваний: 417

Re: Modbus на STM8... Шумит?

Сб окт 12, 2019 18:13:26

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


сложно сказать нормальный он или нет... может софт есть для анализа работы? По факту Modpoll опрашивает всё корректно -сбоев не наблюдаю, соответственно и промежутка со сбоями нет, а в рабочей линии похоже "фонит" и сбивает работу остальных модулей. Есть китайский "типа" осциллограф - попробую посмотреть уровни этим чудом...

За код спасибо, посмотрю...FreeModbus на младших контроллерах STM8 и STM32 отъедает много памяти - остаётся мало на реализацию основных функций. - приходится использовать только Holding Register.

Re: Modbus на STM8... Шумит?

Сб окт 12, 2019 18:33:42

может софт есть для анализа работы?
отдельные железки есть точно. Как водится, с негуманным ценником.
По факту Modpoll опрашивает всё корректно -сбоев не наблюдаю
ну с одним устройством на десятке сантиметров провода обычно все гладко и красиво)
FreeModbus на младших контроллерах STM8 и STM32 отъедает много памяти - остаётся мало на реализацию основных функций. - приходится использовать только Holding Register.
для этого и писал :dont_know: код отъедает меньше килобайта, если без таблицы для CRC - в принципе и у stm8 хватает мощи на расчетный метод.

Re: Modbus на STM8... Шумит?

Сб окт 12, 2019 19:42:21

для этого и писал :dont_know: код отъедает меньше килобайта, если без таблицы для CRC - в принципе и у stm8 хватает мощи на расчетный метод.


Посмотрел Ваш код по диагонали. Baudrate нужно прописывать жёстко в коде прошивки. У меня можно менять через Holding Register. Но из-за веса можно закрыть глаза или допилить при желании...

Re: Modbus на STM8... Шумит?

Сб окт 12, 2019 19:59:36

Baudrate нужно прописывать жёстко в коде прошивки.
необязательно. Так просто у меня в примере сделано. Эта реализация сама по себе вообще никак не управляет портом - функция mb_port_init() должна быть целиком определена для конкретного устройства :dont_know: Ничего не мешает в mb_port_write_register добавить обработку записи в один из регистров, которая будет менять бодрейт - там ж чего угодно можно делать, эти функции у меня тоже считаются платформозависимыми.

Re: Modbus на STM8... Шумит?

Вс окт 13, 2019 00:05:43

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


Воткнулся на линию (на столе), опрашиваю Modpull. Получил такие картинки:

Проблемное устройство
https://cloud.mail.ru/public/vb5A/3jUGAB2wu

Нормальное устройство
https://cloud.mail.ru/public/2Khz/352padENC

Не понял как тут картинки вставлять...

Re: Modbus на STM8... Шумит?

Вс окт 13, 2019 22:57:22

Продолжил свои изыскания... Есть рабочее устройство с таким же чипом (преобразователь). Посмотрел, у него сделана обвязка. На входе/выходе RS485 установлены диоды Шотке и линии подтянуты через резистор 5,1кОм. На моей плате есть только резистор между А и В 120Ом. Собрал такую же обвязку, убрал резистор между линий. Пытаюсь опрашивать Modpoll - вижу, что запросы идут (мигает светодиод), но в Modpoll ошибка Time Out Error. Не пойму в чём проблема...

Re: Modbus на STM8... Шумит?

Пн окт 14, 2019 12:34:44

стабилитроны там скорее всего, а не шотки - защита от выбросов напряжения от наводок или еще чего.
Терминатор (=резистор между линиями) не должен торчать в каждом слейве.

Re: Modbus на STM8... Шумит?

Пт окт 18, 2019 21:19:16

стабилитроны там скорее всего, а не шотки - защита от выбросов напряжения от наводок или еще чего.


Не пойму, почему с ними не работает этот драйвер? Я их отпаял, собрал такую же схему - сигнал визуально проходит от компа, но обратно - нет. чудеса... Time Out Error... Без них, напрямую - всё работает, но в сети шумит...
Заказал на Али другие драйвера RS485

Re: Modbus на STM8... Шумит?

Сб окт 19, 2019 01:11:30

они на довольно большой номинал должны быть, вольт эдак на 15 или выше.

а что за драйвер? на не очень длинных линиях - метров двадцать - большинство чипов долго и счастливо работают безо всякой обвязки на сигнальных выводах.

на остальных слейвах нигде терминатор лишний не затесался?

можно бодрейт еще уменьшить и посмотреть, чего будет.

Re: Modbus на STM8... Шумит?

Сб окт 19, 2019 09:36:54

они на довольно большой номинал должны быть, вольт эдак на 15 или выше.

Дак я взял рабочее устройство, с которым нет проблем, отпаял эти стабилитроны, впаял их на проблемную плату, добавил резисторы подтяжки (они есть на рабочем устройстве) - результат - сигнал не проходит (хотя без всей этой обвязки устройство работает, сигнал проходит, но при включении в сеть падают соседние устройства). На рабочем устройстве и на моём чипы одинаковые - SP3485

а что за драйвер? на не очень длинных линиях - метров двадцать - большинство чипов долго и счастливо работают безо всякой обвязки на сигнальных выводах.

Такой
https://sc02.alicdn.com/kf/HTB12LLDr9YT ... J8pXay.jpg
Кстати на фото видно терминальный резистор 120ом - возле надписи RTS. Сейчас я его убрал.
Думал ещё, что драйвер бракованный - я их несколько заказывал из разных партий (в разное время) - с остальными такая же беда...

на остальных слейвах нигде терминатор лишний не затесался?

Этого не проверял. Сеть до этого работала без проблем уже в течении минимум года. Решил некоторые устройства заменить на свои "поделки"))). И столкнулся с такой проблемой.

можно бодрейт еще уменьшить и посмотреть, чего будет.

Можно, конечно. Сейчас сеть работает на скорости 38400. В описании драйвера - он может скорости и повыше...

Re: Modbus на STM8... Шумит?

Сб окт 19, 2019 11:05:11

терминаторы должны быть тока на концах шлейфа в средине нельзя
подтяжка? хватает и 1 на всю линию но не мешает если на несколких
а вот чипы у вас страные мож кривые клоны?

Re: Modbus на STM8... Шумит?

Сб окт 19, 2019 11:31:50

терминаторы должны быть тока на концах шлейфа в средине нельзя
подтяжка? хватает и 1 на всю линию но не мешает если на несколких
а вот чипы у вас страные мож кривые клоны?


Терминаторы вообще не использую в сети. Ранее, когда собирал сеть, пробовал подключать терминаторы - не замечал разницы - поэтому убрал их. Длина сети около 60-80 метров.
Подтяжка, я заметил, присутствует практически во всех модулях (слейвах).

По поводу чипов. Что Вы имеете в виду "странные"? На рабочих устройствах стоит SP3485E, на проблемных драйверах SP3485EE. Отличие - одна буква Е.

Re: Modbus на STM8... Шумит?

Сб окт 19, 2019 12:30:47

с этим "брендом" SPxxxxxx не работал ставилтока фирму ADM485 ;мож в этом дело а териминаторы на концах обязателны (см апноты и дш на 485шину) если вы не видите разницы тол это не значит что это так в лини начингют летать отраженые сигналч и стоячие волны и толка АЛЛАХ предвидит ка они сложатся в конкретном узле и когда всеэто вдрух взлюкнет
СТАНДАРТЫ НАДО СОБЛЮДАТЬ

Re: Modbus на STM8... Шумит?

Сб окт 19, 2019 13:20:48

а с управляющими выводами (DE и RE) все по даташиту делаете? мб трансивер просто не встает на прием

Терминаторы вообще не использую в сети.
ненене, так не пойдет) терминаторы там не просто так. Отражения сигнала - как раз из разряда трудноуловимых глюков, когда в основном все работает, но иногда - нет)

Re: Modbus на STM8... Шумит?

Сб окт 19, 2019 16:57:07

а с управляющими выводами (DE и RE) все по даташиту делаете? мб трансивер просто не встает на прием


Дело в том, что на столе, подключив комп, и опросом через Modpool, всё работает как надо. Втыкаю в сеть - падают почти все слейвы в сети. Навешиваю обвязку стабилитроны + резисторы подтяжки - слейвы не падают, но моё устройство не работает...

Re: Modbus на STM8... Шумит?

Сб окт 19, 2019 17:31:41

постафь на крайние концы терминаторы

Re: Modbus на STM8... Шумит?

Сб окт 19, 2019 18:01:40

постафь на крайние концы терминаторы


:)) Это первое, что сделал...
Потом убрал т.к. ничего не изменилось.

Re: Modbus на STM8... Шумит?

Вс окт 20, 2019 19:58:34

постафь


Кстати, в документации на используемый контроллер есть такая фраза:

>Максимальная длина линии связи между крайними устройствами может
>составлять до 1200м (и более с использованием повторителей). При длине линии связи
>более 100м в максимально удаленных друг от друга точках сети рекомендуется
>устанавливать оконечные согласующие резисторы номиналом от 100 до 250 Ом,
>позволяющие компенсировать волновое сопротивление кабеля и минимизировать
>амплитуду отраженного сигнала.

А т.к. у меня линия меньше 100м... "Стафить" не обязательно.
Ответить