Твоя проблема в 53 строке... Сначала ты зачем то инициализируешь софтовый сериал, а модбас вешаешь на хардверный... Мне кажется, что ты вообще не осознаешь смысл своих действий. Какая у тебя ардуино ? Если нано, то на хардовом порте сидит конвертер, через который ты шьешь процессор. Пока его не уберешь, ничего работать не будет.
Хотел вставить скриншоты логанализатора, но не понял как вставить в пост картинку и в каком формате.
Логанализатор показал, что запрос в slave 1 отправляется: Device 1, Function 0x3, Start Address 0x0, Qty 0x2, ChkSum 0xBC4.
Через 48ms принимается ответ (пачку импульсов ответа анализатор не расшифровывает). Однако в массиве значения regs[0] и regs[1]
по прежнему равны нулю. Но и это еще не все. Логанализатор ловит эту пачку через несколько секунд после сброса контроллера и пока я не нажму снова сброс ни запрос мастера, ни ответ слейва не появляются. Чего-то я не понимаю.
Через 48ms принимается ответ (пачку импульсов ответа анализатор не расшифровывает). Однако в массиве значения regs[0] и regs[1]
Как сообщение модбас не расшифровывает? Или даже отдельные байты не читает? Если есть байты укажите
Цитата:
Логанализатор ловит эту пачку через несколько секунд после сброса контроллера и пока я не нажму снова сброс ни запрос мастера, ни ответ слейва не появляются. Чего-то я не понимаю.
Как сообщение модбас не расшифровывает? Это мой логанализатор дает расшифровку только запроса, а ответ показывает только как импульсы. этого я не понял (в смысле - ваше обьяснение). Это я не правильно объяснил. Один раз логгер фиксирует запрос и ответ потому, что я настроил его работу не циклически, а по изменению сигнала TxEnablePin. Но вот в циклическом режиме он видит пакеты каждые 15 сек. И вот не понятно почему такой цикл, если он должен быть 5 сек. В Loop() стоит задержка delay(5000). Содержимое regs[0], regs[1] - нули. Да, подскажите как вставить в пост картинку и в каком формате. Спасибо.
Проект не на Ардуино, а на Atmega328p. Но написан в среде Aruino ID 1.8.9.
На Serial - ST485, SoftSerial(RX(Pin4), TX(Pin5)), прошивка через SPI.
О каком резисторе R4 на восьмой ноге Вы говорите, если принципиальную схему я не приводил?
О какой помощи вы просите, если у вас не ардуино, а "не пойми чего" без схемы. Вы как считаете, вам решили помочь, а вы создаете лишние проблемы. Нафига загружать чужие мозги бредятиной ? Почитали бы вы правила форума, ну хотя бы ради прикола... Я же считаю, что зря потратил на вас время, в дальнейшем, вас не вижу в упор.
Твоя проблема в 53 строке... Сначала ты зачем то инициализируешь софтовый сериал, а модбас вешаешь на хардверный... Мне кажется, что ты вообще не осознаешь смысл своих действий. Какая у тебя ардуино ? Если нано, то на хардовом порте сидит конвертер, через который ты шьешь процессор. Пока его не уберешь, ничего работать не будет.
brokly, все там правильно. На хардовом у него модбас, а диагностический вывод печается в софтовый.
по проблеме - стоит взять логанализатор и посмотреть, что посылается и что приходит в ответ
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]
по прежнему равны нулю. Но и это еще не все. Логанализатор ловит эту пачку через несколько секунд после сброса контроллера и пока я не нажму снова сброс ни запрос мастера, ни ответ слейва не появляются. Чего-то я не понимаю.
Через 48ms принимается ответ (пачку импульсов ответа анализатор не расшифровывает). Однако в массиве значения regs[0] и regs[1]
Как сообщение модбас не расшифровывает? Или даже отдельные байты не читает? Если есть байты укажите
этого я не понял (в смысле - ваше обьяснение).
Как сообщение модбас не расшифровывает? Это мой логанализатор дает расшифровку только запроса, а ответ показывает только как импульсы. этого я не понял (в смысле - ваше обьяснение). Это я не правильно объяснил. Один раз логгер фиксирует запрос и ответ потому, что я настроил его работу не циклически, а по изменению сигнала TxEnablePin. Но вот в циклическом режиме он видит пакеты каждые 15 сек. И вот не понятно почему такой цикл, если он должен быть 5 сек. В Loop() стоит задержка delay(5000). Содержимое regs[0], regs[1] - нули. Да, подскажите как вставить в пост картинку и в каком формате. Спасибо.
ответ покажите в виде байт. если видите
Как вставить картинку в сообщение - читайте тут
Пояснения к логам:
Channel 0: TX
Channel 1: TxEnablePin
Channel 2: RX
Так какие байты в ответ-то прилетают? Логанализатор должен распознать их.
А вообще - удивительно, конечно, как в regs[1] принимается два регистра.
А можно рисунок подетальнее. Пока на первый взгляд скорости разные.
Пояснения к логам:
Channel 0: TX
Channel 1: TxEnablePin
Channel 2: RX
Леонид, если вы думаете что на ваших картинках что-то видно. то я вас разочарую - нифига.
И еще раз спрашиваю - ответ слейва в виде байт читается? выложите в форум
Я приведенный мною скетч загрузил на другую плату и он заработал. Очевидно в плате есть ошибка.
Теперь занимаюсь ее поиском. Когда найду - отпишусь.
Всем спасибо.
brokly, все там правильно. На хардовом у него модбас, а диагностический вывод печается в софтовый.
по проблеме - стоит взять логанализатор и посмотреть, что посылается и что приходит в ответ
Что правильно то ? Ты точно мою реплику дочитал ?
У него на хардовом сериале висит UART-USB , он его не отключает. Ну ты даешь :)
Но учитывая, что ТС говорит о неком голом проце, то возможно проблемма не в этом, а в резисторе R4, который висит на восьмой ноге.
[/quote]
Что правильно то ? Ты точно мою реплику дочитал ?
У него на хардовом сериале висит UART-USB , он его не отключает. Ну ты даешь :)
Но учитывая, что ТС говорит о неком голом проце, то возможно проблем, еслия схему а не в этом, а в резисторе R4, который висит на восьмой ноге.
[/quote]
Еще раз повторю:
Проект не на Ардуино, а на Atmega328p. Но написан в среде Aruino ID 1.8.9.
На Serial - ST485, SoftSerial(RX(Pin4), TX(Pin5)), прошивка через SPI.
О каком резисторе R4 на восьмой ноге Вы говорите, если принципиальную схему я не приводил?
Еще раз повторю:
Проект не на Ардуино, а на Atmega328p. Но написан в среде Aruino ID 1.8.9.
На Serial - ST485, SoftSerial(RX(Pin4), TX(Pin5)), прошивка через SPI.
О каком резисторе R4 на восьмой ноге Вы говорите, если принципиальную схему я не приводил?
О какой помощи вы просите, если у вас не ардуино, а "не пойми чего" без схемы. Вы как считаете, вам решили помочь, а вы создаете лишние проблемы. Нафига загружать чужие мозги бредятиной ? Почитали бы вы правила форума, ну хотя бы ради прикола... Я же считаю, что зря потратил на вас время, в дальнейшем, вас не вижу в упор.
Привожу схему: