Modbus на STM8... Шумит?
Modbus на STM8... Шумит?
Собрал на базе отладочной платы STM8 и пирёмо-передатчика USART-RS485 устройство, портировал FreeModbus. Подключаю к компу, через Modpoll всё работает, как надо. Устанавливаю устройство в рабочую сеть - смотрю в отладчике контроллера - соседние устройства в подсети начинают попеременно отваливаться. Отключаю от сети - всё работает... Такое впечатление, что устройство создаёт помехи в подсети. Как это тестировать? Есть ли какие, может программные анализаторы сети Modbus?
P.S. Ранее бывали ситуации, когда тоже сетка падала по какой-то причине - так же начинали валиться соседние - выявлял проблемное устройство (не самопал) - менял его на такое же - работа восстанавливалась. Производитель устройства рекомендовал тогда попробовать поменять чип RS485, но так руки и не дошли т.к. было ещё такое же устройство. Но в моей ситуации всё новое и на компе работает без видимых сбоев.
P.S. Ранее бывали ситуации, когда тоже сетка падала по какой-то причине - так же начинали валиться соседние - выявлял проблемное устройство (не самопал) - менял его на такое же - работа восстанавливалась. Производитель устройства рекомендовал тогда попробовать поменять чип RS485, но так руки и не дошли т.к. было ещё такое же устройство. Но в моей ситуации всё новое и на компе работает без видимых сбоев.
- Реклама
Re: Modbus на STM8... Шумит?
а сам преобразователь точно нормальный? проблемы в линии зачастую физические.
можно воткнуться логанализатором на линию, записать промежуток со сбоем и посмотреть, чо происходило с уровнями.
у меня с freemodbus-ом как-то не сложилось. Он не влазил в имеющиеся у меня китайские stm8 (флеш был сбойный после второго килобайта), и для них наковырял свой простой слейв. А потом просто подпилил его напильником пихал в другие контроллеры тоже) на avr, stm32 и esp8266 вполне работает. Руки не дошли куданить на гитхаб выложить.
UPD обновил архив, с более поздним вариантом
можно воткнуться логанализатором на линию, записать промежуток со сбоем и посмотреть, чо происходило с уровнями.
у меня с freemodbus-ом как-то не сложилось. Он не влазил в имеющиеся у меня китайские stm8 (флеш был сбойный после второго килобайта), и для них наковырял свой простой слейв. А потом просто подпилил его напильником пихал в другие контроллеры тоже) на avr, stm32 и esp8266 вполне работает. Руки не дошли куданить на гитхаб выложить.
UPD обновил архив, с более поздним вариантом
- Вложения
-
- mb_tiny.zip
- (8.02 КБ) 468 скачиваний
Re: Modbus на STM8... Шумит?
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3717055#p3717055"]а сам преобразователь точно нормальный? проблемы в линии зачастую физические.
можно воткнуться логанализатором на линию, записать промежуток со сбоем и посмотреть, чо происходило с уровнями.[/uquote]
сложно сказать нормальный он или нет... может софт есть для анализа работы? По факту Modpoll опрашивает всё корректно -сбоев не наблюдаю, соответственно и промежутка со сбоями нет, а в рабочей линии похоже "фонит" и сбивает работу остальных модулей. Есть китайский "типа" осциллограф - попробую посмотреть уровни этим чудом...
За код спасибо, посмотрю...FreeModbus на младших контроллерах STM8 и STM32 отъедает много памяти - остаётся мало на реализацию основных функций. - приходится использовать только Holding Register.
можно воткнуться логанализатором на линию, записать промежуток со сбоем и посмотреть, чо происходило с уровнями.[/uquote]
сложно сказать нормальный он или нет... может софт есть для анализа работы? По факту Modpoll опрашивает всё корректно -сбоев не наблюдаю, соответственно и промежутка со сбоями нет, а в рабочей линии похоже "фонит" и сбивает работу остальных модулей. Есть китайский "типа" осциллограф - попробую посмотреть уровни этим чудом...
За код спасибо, посмотрю...FreeModbus на младших контроллерах STM8 и STM32 отъедает много памяти - остаётся мало на реализацию основных функций. - приходится использовать только Holding Register.
Re: Modbus на STM8... Шумит?
[uquote="Sergeba",url="/forum/viewtopic.php?p=3717079#p3717079"]может софт есть для анализа работы?[/uquote]отдельные железки есть точно. Как водится, с негуманным ценником.
[uquote="maliiv",url="/forum/viewtopic.php?p=3716994#p3716994"]По факту Modpoll опрашивает всё корректно -сбоев не наблюдаю[/uquote]ну с одним устройством на десятке сантиметров провода обычно все гладко и красиво)
[uquote="maliiv",url="/forum/viewtopic.php?p=3716994#p3716994"]FreeModbus на младших контроллерах STM8 и STM32 отъедает много памяти - остаётся мало на реализацию основных функций. - приходится использовать только Holding Register.[/uquote]для этого и писал
код отъедает меньше килобайта, если без таблицы для CRC - в принципе и у stm8 хватает мощи на расчетный метод.
[uquote="maliiv",url="/forum/viewtopic.php?p=3716994#p3716994"]По факту Modpoll опрашивает всё корректно -сбоев не наблюдаю[/uquote]ну с одним устройством на десятке сантиметров провода обычно все гладко и красиво)
[uquote="maliiv",url="/forum/viewtopic.php?p=3716994#p3716994"]FreeModbus на младших контроллерах STM8 и STM32 отъедает много памяти - остаётся мало на реализацию основных функций. - приходится использовать только Holding Register.[/uquote]для этого и писал
Re: Modbus на STM8... Шумит?
[uquote="maliiv",url="/forum/viewtopic.php?p=3716994#p3716994"]для этого и писал
код отъедает меньше килобайта, если без таблицы для CRC - в принципе и у stm8 хватает мощи на расчетный метод.[/uquote]
Посмотрел Ваш код по диагонали. Baudrate нужно прописывать жёстко в коде прошивки. У меня можно менять через Holding Register. Но из-за веса можно закрыть глаза или допилить при желании...
Посмотрел Ваш код по диагонали. Baudrate нужно прописывать жёстко в коде прошивки. У меня можно менять через Holding Register. Но из-за веса можно закрыть глаза или допилить при желании...
- Реклама
Re: Modbus на STM8... Шумит?
[uquote="Sergeba",url="/forum/viewtopic.php?p=3717136#p3717136"]Baudrate нужно прописывать жёстко в коде прошивки.[/uquote]необязательно. Так просто у меня в примере сделано. Эта реализация сама по себе вообще никак не управляет портом - функция mb_port_init() должна быть целиком определена для конкретного устройства
Ничего не мешает в mb_port_write_register добавить обработку записи в один из регистров, которая будет менять бодрейт - там ж чего угодно можно делать, эти функции у меня тоже считаются платформозависимыми.
Re: Modbus на STM8... Шумит?
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3717055#p3717055"]можно воткнуться логанализатором на линию, записать промежуток со сбоем и посмотреть, чо происходило с уровнями.[/uquote]
Воткнулся на линию (на столе), опрашиваю Modpull. Получил такие картинки:
Проблемное устройство
https://cloud.mail.ru/public/vb5A/3jUGAB2wu
Нормальное устройство
https://cloud.mail.ru/public/2Khz/352padENC
Не понял как тут картинки вставлять...
Воткнулся на линию (на столе), опрашиваю Modpull. Получил такие картинки:
Проблемное устройство
https://cloud.mail.ru/public/vb5A/3jUGAB2wu
Нормальное устройство
https://cloud.mail.ru/public/2Khz/352padENC
Не понял как тут картинки вставлять...
Re: Modbus на STM8... Шумит?
Продолжил свои изыскания... Есть рабочее устройство с таким же чипом (преобразователь). Посмотрел, у него сделана обвязка. На входе/выходе RS485 установлены диоды Шотке и линии подтянуты через резистор 5,1кОм. На моей плате есть только резистор между А и В 120Ом. Собрал такую же обвязку, убрал резистор между линий. Пытаюсь опрашивать Modpoll - вижу, что запросы идут (мигает светодиод), но в Modpoll ошибка Time Out Error. Не пойму в чём проблема...
Re: Modbus на STM8... Шумит?
стабилитроны там скорее всего, а не шотки - защита от выбросов напряжения от наводок или еще чего.
Терминатор (=резистор между линиями) не должен торчать в каждом слейве.
Терминатор (=резистор между линиями) не должен торчать в каждом слейве.
Re: Modbus на STM8... Шумит?
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3718158#p3718158"]стабилитроны там скорее всего, а не шотки - защита от выбросов напряжения от наводок или еще чего.[/uquote]
Не пойму, почему с ними не работает этот драйвер? Я их отпаял, собрал такую же схему - сигнал визуально проходит от компа, но обратно - нет. чудеса... Time Out Error... Без них, напрямую - всё работает, но в сети шумит...
Заказал на Али другие драйвера RS485
Не пойму, почему с ними не работает этот драйвер? Я их отпаял, собрал такую же схему - сигнал визуально проходит от компа, но обратно - нет. чудеса... Time Out Error... Без них, напрямую - всё работает, но в сети шумит...
Заказал на Али другие драйвера RS485
Re: Modbus на STM8... Шумит?
они на довольно большой номинал должны быть, вольт эдак на 15 или выше.
а что за драйвер? на не очень длинных линиях - метров двадцать - большинство чипов долго и счастливо работают безо всякой обвязки на сигнальных выводах.
на остальных слейвах нигде терминатор лишний не затесался?
можно бодрейт еще уменьшить и посмотреть, чего будет.
а что за драйвер? на не очень длинных линиях - метров двадцать - большинство чипов долго и счастливо работают безо всякой обвязки на сигнальных выводах.
на остальных слейвах нигде терминатор лишний не затесался?
можно бодрейт еще уменьшить и посмотреть, чего будет.
Re: Modbus на STM8... Шумит?
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3720977#p3720977"]они на довольно большой номинал должны быть, вольт эдак на 15 или выше.[/uquote]
Дак я взял рабочее устройство, с которым нет проблем, отпаял эти стабилитроны, впаял их на проблемную плату, добавил резисторы подтяжки (они есть на рабочем устройстве) - результат - сигнал не проходит (хотя без всей этой обвязки устройство работает, сигнал проходит, но при включении в сеть падают соседние устройства). На рабочем устройстве и на моём чипы одинаковые - SP3485
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3720977#p3720977"]а что за драйвер? на не очень длинных линиях - метров двадцать - большинство чипов долго и счастливо работают безо всякой обвязки на сигнальных выводах.[/uquote]
Такой
https://sc02.alicdn.com/kf/HTB12LLDr9YT ... J8pXay.jpg
Кстати на фото видно терминальный резистор 120ом - возле надписи RTS. Сейчас я его убрал.
Думал ещё, что драйвер бракованный - я их несколько заказывал из разных партий (в разное время) - с остальными такая же беда...
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3720977#p3720977"]на остальных слейвах нигде терминатор лишний не затесался?[/uquote]
Этого не проверял. Сеть до этого работала без проблем уже в течении минимум года. Решил некоторые устройства заменить на свои "поделки"))). И столкнулся с такой проблемой.
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3720977#p3720977"]можно бодрейт еще уменьшить и посмотреть, чего будет.[/uquote]
Можно, конечно. Сейчас сеть работает на скорости 38400. В описании драйвера - он может скорости и повыше...
Дак я взял рабочее устройство, с которым нет проблем, отпаял эти стабилитроны, впаял их на проблемную плату, добавил резисторы подтяжки (они есть на рабочем устройстве) - результат - сигнал не проходит (хотя без всей этой обвязки устройство работает, сигнал проходит, но при включении в сеть падают соседние устройства). На рабочем устройстве и на моём чипы одинаковые - SP3485
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3720977#p3720977"]а что за драйвер? на не очень длинных линиях - метров двадцать - большинство чипов долго и счастливо работают безо всякой обвязки на сигнальных выводах.[/uquote]
Такой
https://sc02.alicdn.com/kf/HTB12LLDr9YT ... J8pXay.jpg
Кстати на фото видно терминальный резистор 120ом - возле надписи RTS. Сейчас я его убрал.
Думал ещё, что драйвер бракованный - я их несколько заказывал из разных партий (в разное время) - с остальными такая же беда...
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3720977#p3720977"]на остальных слейвах нигде терминатор лишний не затесался?[/uquote]
Этого не проверял. Сеть до этого работала без проблем уже в течении минимум года. Решил некоторые устройства заменить на свои "поделки"))). И столкнулся с такой проблемой.
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3720977#p3720977"]можно бодрейт еще уменьшить и посмотреть, чего будет.[/uquote]
Можно, конечно. Сейчас сеть работает на скорости 38400. В описании драйвера - он может скорости и повыше...
- musor
- Друг Кота
- Сообщения: 39197
- Зарегистрирован: Сб сен 13, 2014 16:27:32
- Откуда: СпиртоГонск созвездия Омега
Re: Modbus на STM8... Шумит?
терминаторы должны быть тока на концах шлейфа в средине нельзя
подтяжка? хватает и 1 на всю линию но не мешает если на несколких
а вот чипы у вас страные мож кривые клоны?
подтяжка? хватает и 1 на всю линию но не мешает если на несколких
а вот чипы у вас страные мож кривые клоны?
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Re: Modbus на STM8... Шумит?
[uquote="musor",url="/forum/viewtopic.php?p=3721132#p3721132"]терминаторы должны быть тока на концах шлейфа в средине нельзя
подтяжка? хватает и 1 на всю линию но не мешает если на несколких
а вот чипы у вас страные мож кривые клоны?[/uquote]
Терминаторы вообще не использую в сети. Ранее, когда собирал сеть, пробовал подключать терминаторы - не замечал разницы - поэтому убрал их. Длина сети около 60-80 метров.
Подтяжка, я заметил, присутствует практически во всех модулях (слейвах).
По поводу чипов. Что Вы имеете в виду "странные"? На рабочих устройствах стоит SP3485E, на проблемных драйверах SP3485EE. Отличие - одна буква Е.
подтяжка? хватает и 1 на всю линию но не мешает если на несколких
а вот чипы у вас страные мож кривые клоны?[/uquote]
Терминаторы вообще не использую в сети. Ранее, когда собирал сеть, пробовал подключать терминаторы - не замечал разницы - поэтому убрал их. Длина сети около 60-80 метров.
Подтяжка, я заметил, присутствует практически во всех модулях (слейвах).
По поводу чипов. Что Вы имеете в виду "странные"? На рабочих устройствах стоит SP3485E, на проблемных драйверах SP3485EE. Отличие - одна буква Е.
- musor
- Друг Кота
- Сообщения: 39197
- Зарегистрирован: Сб сен 13, 2014 16:27:32
- Откуда: СпиртоГонск созвездия Омега
Re: Modbus на STM8... Шумит?
с этим "брендом" SPxxxxxx не работал ставилтока фирму ADM485 ;мож в этом дело а териминаторы на концах обязателны (см апноты и дш на 485шину) если вы не видите разницы тол это не значит что это так в лини начингют летать отраженые сигналч и стоячие волны и толка АЛЛАХ предвидит ка они сложатся в конкретном узле и когда всеэто вдрух взлюкнет
СТАНДАРТЫ НАДО СОБЛЮДАТЬ
СТАНДАРТЫ НАДО СОБЛЮДАТЬ
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Re: Modbus на STM8... Шумит?
а с управляющими выводами (DE и RE) все по даташиту делаете? мб трансивер просто не встает на прием
[uquote="Sergeba",url="/forum/viewtopic.php?p=3721160#p3721160"]Терминаторы вообще не использую в сети.[/uquote]ненене, так не пойдет) терминаторы там не просто так. Отражения сигнала - как раз из разряда трудноуловимых глюков, когда в основном все работает, но иногда - нет)
[uquote="Sergeba",url="/forum/viewtopic.php?p=3721160#p3721160"]Терминаторы вообще не использую в сети.[/uquote]ненене, так не пойдет) терминаторы там не просто так. Отражения сигнала - как раз из разряда трудноуловимых глюков, когда в основном все работает, но иногда - нет)
Re: Modbus на STM8... Шумит?
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3721228#p3721228"]а с управляющими выводами (DE и RE) все по даташиту делаете? мб трансивер просто не встает на прием[/uquote]
Дело в том, что на столе, подключив комп, и опросом через Modpool, всё работает как надо. Втыкаю в сеть - падают почти все слейвы в сети. Навешиваю обвязку стабилитроны + резисторы подтяжки - слейвы не падают, но моё устройство не работает...
Дело в том, что на столе, подключив комп, и опросом через Modpool, всё работает как надо. Втыкаю в сеть - падают почти все слейвы в сети. Навешиваю обвязку стабилитроны + резисторы подтяжки - слейвы не падают, но моё устройство не работает...
- musor
- Друг Кота
- Сообщения: 39197
- Зарегистрирован: Сб сен 13, 2014 16:27:32
- Откуда: СпиртоГонск созвездия Омега
Re: Modbus на STM8... Шумит?
постафь на крайние концы терминаторы
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Re: Modbus на STM8... Шумит?
[uquote="musor",url="/forum/viewtopic.php?p=3721361#p3721361"]постафь на крайние концы терминаторы[/uquote]
Это первое, что сделал...
Потом убрал т.к. ничего не изменилось.
Потом убрал т.к. ничего не изменилось.
Re: Modbus на STM8... Шумит?
[uquote="musor",url="/forum/viewtopic.php?p=3721361#p3721361"]постафь[/uquote]
Кстати, в документации на используемый контроллер есть такая фраза:
>Максимальная длина линии связи между крайними устройствами может
>составлять до 1200м (и более с использованием повторителей). При длине линии связи
>более 100м в максимально удаленных друг от друга точках сети рекомендуется
>устанавливать оконечные согласующие резисторы номиналом от 100 до 250 Ом,
>позволяющие компенсировать волновое сопротивление кабеля и минимизировать
>амплитуду отраженного сигнала.
А т.к. у меня линия меньше 100м... "Стафить" не обязательно.
Кстати, в документации на используемый контроллер есть такая фраза:
>Максимальная длина линии связи между крайними устройствами может
>составлять до 1200м (и более с использованием повторителей). При длине линии связи
>более 100м в максимально удаленных друг от друга точках сети рекомендуется
>устанавливать оконечные согласующие резисторы номиналом от 100 до 250 Ом,
>позволяющие компенсировать волновое сопротивление кабеля и минимизировать
>амплитуду отраженного сигнала.
А т.к. у меня линия меньше 100м... "Стафить" не обязательно.


