Arduino Nano в качестве мастера modbus rtu

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Твоя проблема в 53 строке... Сначала ты зачем то инициализируешь софтовый сериал, а модбас вешаешь на хардверный... Мне кажется, что ты вообще не осознаешь смысл своих действий. Какая у тебя ардуино ? Если нано, то на хардовом порте сидит конвертер, через который ты шьешь процессор. Пока его не уберешь, ничего работать не будет.

b707
Offline
Зарегистрирован: 26.05.2017

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

по проблеме - стоит взять логанализатор и посмотреть, что посылается и что приходит в ответ

Leonid Kuksin
Offline
Зарегистрирован: 08.01.2022

To brokly: 

На хард сериал у меня модбас, софт сериал на D4, D5. Прошиваю через SPI. 

 Использую не Ардуино, а в среде Arduino ID програаммирую микроконтроллер Atmega328P.

​//--------------------------------------------------------------------------------------------------------------

To b707:

Хотел вставить скриншоты логанализатора, но не понял как вставить в пост  картинку и в каком формате.

Логанализатор показал, что запрос в slave 1 отправляется: Device 1, Function 0x3, Start Address 0x0, Qty 0x2, ChkSum 0xBC4.

Через 48ms принимается ответ (пачку импульсов ответа анализатор не расшифровывает). Однако в массиве значения regs[0] и regs[1]

по прежнему равны нулю. Но и это еще не все. Логанализатор ловит эту пачку через несколько секунд после сброса контроллера и пока я не нажму снова сброс ни запрос мастера, ни ответ слейва не появляются. Чего-то я не понимаю.

b707
Offline
Зарегистрирован: 26.05.2017

Leonid Kuksin пишет:

Через 48ms принимается ответ (пачку импульсов ответа анализатор не расшифровывает). Однако в массиве значения regs[0] и regs[1]

Как сообщение модбас не расшифровывает? Или даже отдельные байты не читает? Если есть байты укажите

Цитата:
Логанализатор ловит эту пачку через несколько секунд после сброса контроллера и пока я не нажму снова сброс ни запрос мастера, ни ответ слейва не появляются. Чего-то я не понимаю.

этого я не понял (в смысле - ваше обьяснение).

Leonid Kuksin
Offline
Зарегистрирован: 08.01.2022

Как сообщение модбас не расшифровывает? Это мой логанализатор дает расшифровку только запроса, а ответ показывает только как импульсы. этого я не понял (в смысле - ваше обьяснение). Это я не правильно объяснил. Один раз логгер фиксирует запрос и ответ потому, что я настроил его работу не циклически, а по изменению сигнала TxEnablePin. Но вот в циклическом режиме он видит пакеты каждые 15 сек. И вот не понятно почему такой цикл, если он должен быть 5 сек. В Loop() стоит задержка delay(5000). Содержимое regs[0], regs[1] - нули. Да, подскажите как вставить в пост картинку и в каком формате. Спасибо.

b707
Offline
Зарегистрирован: 26.05.2017

ответ покажите в виде байт. если видите

Как вставить картинку в сообщение - читайте тут

Leonid Kuksin
Offline
Зарегистрирован: 08.01.2022

  

Leonid Kuksin
Offline
Зарегистрирован: 08.01.2022

Leonid Kuksin
Offline
Зарегистрирован: 08.01.2022

Leonid Kuksin
Offline
Зарегистрирован: 08.01.2022

Пояснения к логам:

Channel 0: TX

Channel 1: TxEnablePin

Channel 2: RX

sadman41
Offline
Зарегистрирован: 19.10.2016

Так какие байты в ответ-то прилетают? Логанализатор должен распознать их.

А вообще - удивительно, конечно, как в regs[1] принимается два регистра.

nik182
Offline
Зарегистрирован: 04.05.2015

А можно рисунок подетальнее. Пока на первый взгляд скорости разные.

b707
Offline
Зарегистрирован: 26.05.2017

Leonid Kuksin пишет:

Пояснения к логам:

Channel 0: TX

Channel 1: TxEnablePin

Channel 2: RX

Леонид, если вы думаете что на ваших картинках что-то видно. то я вас разочарую - нифига.

И еще раз спрашиваю - ответ слейва в виде байт читается? выложите в форум

Leonid Kuksin
Offline
Зарегистрирован: 08.01.2022

Я приведенный мною скетч загрузил на другую плату и он заработал. Очевидно в плате есть ошибка.

Теперь занимаюсь ее поиском. Когда найду - отпишусь.

Всем спасибо.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

b707 пишет:

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

по проблеме - стоит взять логанализатор и посмотреть, что посылается и что приходит в ответ

Что правильно то ? Ты точно мою реплику дочитал ?

У него на хардовом сериале висит UART-USB , он его не отключает. Ну ты даешь :)

Но учитывая, что ТС говорит о неком голом проце, то возможно проблемма не в этом, а в резисторе R4, который висит на восьмой ноге.

Leonid Kuksin
Offline
Зарегистрирован: 08.01.2022

[/quote]

Что правильно то ? Ты точно мою реплику дочитал ?

У него на хардовом сериале висит UART-USB , он его не отключает. Ну ты даешь :)

Но учитывая, что ТС говорит о неком голом проце, то возможно проблем, еслия схему а не в этом, а в резисторе R4, который висит на восьмой ноге.

[/quote]

Еще раз повторю:

Проект не на Ардуино, а на Atmega328p. Но написан в среде Aruino ID 1.8.9.

На Serial - ST485, SoftSerial(RX(Pin4), TX(Pin5)), прошивка через SPI.

О каком резисторе R4 на восьмой ноге  Вы говорите, если принципиальную схему я не приводил?  

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Leonid Kuksin пишет:

Еще раз повторю:

Проект не на Ардуино, а на Atmega328p. Но написан в среде Aruino ID 1.8.9.

На Serial - ST485, SoftSerial(RX(Pin4), TX(Pin5)), прошивка через SPI.

О каком резисторе R4 на восьмой ноге  Вы говорите, если принципиальную схему я не приводил?  

О какой помощи вы просите, если у вас не ардуино, а "не пойми чего" без схемы. Вы как считаете, вам решили помочь, а вы создаете лишние проблемы. Нафига загружать чужие мозги бредятиной ? Почитали бы вы правила форума, ну хотя бы ради прикола... Я же считаю, что зря потратил на вас время, в дальнейшем, вас не вижу в упор.

Leonid Kuksin
Offline
Зарегистрирован: 08.01.2022

Привожу схему: