Modbus помогите советом

Использование протоколов Modbus, SPI, I2c и прочих, проблемы и решения
confiden
Рядовой
Сообщения: 22
Зарегистрирован: 23.09.2016{, 22:23}
Репутация: 0
Откуда: Великие Луки

Modbus помогите советом

#1

Сообщение confiden » 23.09.2016{, 22:41}

Здравствуйте. нужна помощь.
не могу осуществить двухсторонний обмен. С мастера отправляется значение АЦП в слейв, а вот одновременно получить значение температуры со слейва в мастер никак. В чем дело? подскажиете
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось confiden 23.09.2016{, 22:42}, всего редактировалось 1 раз.

Аватара пользователя
Tehnics
Рядовой
Сообщения: 34
Зарегистрирован: 06.09.2015{, 11:18}
Репутация: 0
Откуда: Нововоронеж
Имя: Константин

Modbus помогите советом

#2

Сообщение Tehnics » 23.09.2016{, 23:28}

У Вас в настройках слейва и мастера скорость 19200, а настройки скорости в платах 9600.
Для скачивания вложений Вы должны быть зарегистрированы.

confiden
Рядовой
Сообщения: 22
Зарегистрирован: 23.09.2016{, 22:23}
Репутация: 0
Откуда: Великие Луки

Modbus помогите советом

#3

Сообщение confiden » 23.09.2016{, 23:39}

Сейчас сменил настройки портов и привел их в соответствие. Полагаю что при настройке модбаса, скорость выставленная в блоке идет в приоритете. Результата нет. Мастер не получает от слэйва данные о температуре , но при этом передает значение АЦП. прилагаю измененные файлы  Flprog.
Что то я делаю не так, но не понимаю что.
Нужны советы опытных
Для скачивания вложений Вы должны быть зарегистрированы.

Аватара пользователя
Sancho
Полковник
Сообщения: 3811
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 528
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Modbus помогите советом

#4

Сообщение Sancho » 24.09.2016{, 09:37}

confiden, Вам жизненно необходимо слать Float, или всё-таки умножить переменную на 10 или 100, преобразовать в INT и отправить одним регистром. В мастере восстановить не проблема.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

confiden
Рядовой
Сообщения: 22
Зарегистрирован: 23.09.2016{, 22:23}
Репутация: 0
Откуда: Великие Луки

Modbus помогите советом

#5

Сообщение confiden » 24.09.2016{, 09:52}

Да нет можно и int переменную. Я уже перепробовал все что возможно. Интересно что если с мастера не слать код ацп. То я могу получать температуру со слэйва. У меня не получается именно двухсторонний обмен. Толи я что забываю сделать , толи баг программы

Аватара пользователя
Sancho
Полковник
Сообщения: 3811
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 528
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Modbus помогите советом

#6

Сообщение Sancho » 24.09.2016{, 09:58}

confiden, Да, ещё. Вы как-то странно, излишне много рисуете всяких блоков передачи данных в порт. На мой взгляд.
Попробуйте так.
У меня, к сожалению, Ваш код мастера не открывается.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

confiden
Рядовой
Сообщения: 22
Зарегистрирован: 23.09.2016{, 22:23}
Репутация: 0
Откуда: Великие Луки

Modbus помогите советом

#7

Сообщение confiden » 24.09.2016{, 10:55}

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

Аватара пользователя
Sancho
Полковник
Сообщения: 3811
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 528
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Modbus помогите советом

#8

Сообщение Sancho » 24.09.2016{, 11:30}

Сори, обновлюсь до 1.15...

Добавлено (24.09.2016, 11:30)
---------------------------------------------
На слэйве всё отображается?
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

confiden
Рядовой
Сообщения: 22
Зарегистрирован: 23.09.2016{, 22:23}
Репутация: 0
Откуда: Великие Луки

Modbus помогите советом

#9

Сообщение confiden » 24.09.2016{, 11:50}

Да на слайве отражается код ацп мастера. Что интересно . Если убрать из мастера функцию передавать ацп и оставить только возможность забирать у слэйва данные о температуре- то тоже все нормально. И int и float отлично передаётся . Но одновременно отправить и принять ступор

Добавлено (24.09.2016, 11:50)
---------------------------------------------
Возникает ощущение что адаптер 485 не производит переключение приём передача. Может есть какие то ограничения по Пину используемому для переключения приём передача? Не ясен мне этот вопрос

Аватара пользователя
Sancho
Полковник
Сообщения: 3811
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 528
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Modbus помогите советом

#10

Сообщение Sancho » 24.09.2016{, 11:52}

Слэйв не успевает между запросами мастера. Нужно разнести запросы чтения и записи в мастере по циклам. Сейчас подумаю..
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
Sancho
Полковник
Сообщения: 3811
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 528
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Modbus помогите советом

#11

Сообщение Sancho » 24.09.2016{, 12:04}

Попробуй вот так

Добавлено (24.09.2016, 12:04)
---------------------------------------------
Пин не причём. Если есть обмен - значит пин работает.
Для скачивания вложений Вы должны быть зарегистрированы.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

confiden
Рядовой
Сообщения: 22
Зарегистрирован: 23.09.2016{, 22:23}
Репутация: 0
Откуда: Великие Луки

Modbus помогите советом

#12

Сообщение confiden » 24.09.2016{, 12:52}

Я сейчас не могу глянуть проект. Но честно говоря не представляю как разнести по циклам. Полагаю блок должен формировать паузы при переключении

Аватара пользователя
Sancho
Полковник
Сообщения: 3811
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 528
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Modbus помогите советом

#13

Сообщение Sancho » 24.09.2016{, 13:27}

Не спешим с циклами. Попробуешь ver2 - посмотрим...
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

confiden
Рядовой
Сообщения: 22
Зарегистрирован: 23.09.2016{, 22:23}
Репутация: 0
Откуда: Великие Луки

Modbus помогите советом

#14

Сообщение confiden » 24.09.2016{, 21:05}

Попробовал загрузил данный код. Результат тот же самый.
Полагаю при компиляции проекта нет разницы.
Хотя честно говоря не проверял.
Что то не так все.
Есть что то еще видимо что не дает нормально в данном случае функционировать

Добавлено (24.09.2016, 21:05)
---------------------------------------------
Парни помогите еще кто нибудь каким советом. Может кто попробует смоделировать, ну не идет никак из головы данная проблема

Аватара пользователя
Rovki
Полковник
Сообщения: 4099
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 194
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Modbus помогите советом

#15

Сообщение Rovki » 25.09.2016{, 08:05}

Мастер не должен посылать запросы слейву чаще чем слейв ответит на первый запрос ,причем если измеритель медленный ,то нет смысла чаще считывать данные ..
Электронщик до мозга костей и не только

confiden
Рядовой
Сообщения: 22
Зарегистрирован: 23.09.2016{, 22:23}
Репутация: 0
Откуда: Великие Луки

Modbus помогите советом

#16

Сообщение confiden » 25.09.2016{, 09:30}

Ну это вобщем понятно у меня тоже были мысли что слэйв просто не успевает дать ответ как идёт новый запрос. Пробовал увеличить время синхронизация сажам в десять раз. Это не решает проблему не коем образом.

Добавлено (25.09.2016, 09:26)
---------------------------------------------
Может кто то может собрать на столе и провести эксперимент на этот счёт .

Добавлено (25.09.2016, 09:30)
---------------------------------------------
Может кто то может собрать на столе и провести эксперимент на этот счёт .

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

Modbus помогите советом

#17

Сообщение Слимпер » 25.09.2016{, 13:29}

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

confiden
Рядовой
Сообщения: 22
Зарегистрирован: 23.09.2016{, 22:23}
Репутация: 0
Откуда: Великие Луки

Modbus помогите советом

#18

Сообщение confiden » 25.09.2016{, 22:33}

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

Добавлено (25.09.2016, 19:26)
---------------------------------------------
я могу получать например данные из слейва о температуре. но только в том случае если мастер не отсылает значение АЦП , а всего лишь производит опрос регистра

Добавлено (25.09.2016, 22:33)
---------------------------------------------
полагаю данную тему можно закрывать . Так как проблема исключительно аппаратная. При отключение провод RE от адаптера RS485. контроллер мастер получил значение температуры от слэйв. При подлючение данного провода получить не удавалось. После замены преобразователя ,обмен данными начал работать в обе стороны.Проверены все элементы на плате адаптера. Вывод глюк микросхемы MAX485. Хотя она была получена в антистатическом пакете. Но как видимо бывает всякое.
Всем большое спасибо за отклик и помощь
Для скачивания вложений Вы должны быть зарегистрированы.

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

Modbus помогите советом

#19

Сообщение Слимпер » 26.09.2016{, 05:43}

confiden, Поздравляю, что разобрались.
Единственно, еще вчера хотел спросить, но форум глючил, выдавал временно недоступно.
А почему на схеме не нарисовано питание модулей TTL-RS485?
И еще, если вы используете готовые китайские модули, и их в сети больше 2 штук, там надо выпаивать терминальные резисторы на всех платах кроме перовой и последней в линии.

confiden
Рядовой
Сообщения: 22
Зарегистрирован: 23.09.2016{, 22:23}
Репутация: 0
Откуда: Великие Луки

Modbus помогите советом

#20

Сообщение confiden » 26.09.2016{, 08:20}

Слимпер, Да конечно же питание есть. Как то вылетело просто из головы  нарисовать.
Насчет терминальных резисторов Это все ясно и понятно.
Но вот хотел сказать что сколько мы не соединяли на работе блоки по modbus все без резисторов
работало отлично, хотя по стандарту они нужны.

У меня возник теперь вот такой вопрос может ответит кто возможность и способ как создать . В моем случае я могу сделать свое мастер устройство (RS485) , одновременно Slave в стандарте Modbus TCP . Хочется увести попробовать на верхний уровень.

И вот еще какой вопрос  . Например по продукции Овен . Модуль ввода аналоговый МВА-8.
Насколько я понимаю можно организовать обмен между данными блоками и ардуино.
Таблица регистров всегда имеется в шестандцатиричном коде.
Достаточно но ли просто перевести в десятичный и проводить опрос? Или есть иное что то?

Добавлено (26.09.2016, 08:20)
---------------------------------------------
Слимпер, Да конечно же питание есть. Как то вылетело просто из головы  нарисовать.
Насчет терминальных резисторов Это все ясно и понятно.
Но вот хотел сказать что сколько мы не соединяли на работе блоки по modbus все без резисторов
работало отлично, хотя по стандарту они нужны.

У меня возник теперь вот такой вопрос может ответит кто возможность и способ как создать . В моем случае я могу сделать свое мастер устройство (RS485) , одновременно Slave в стандарте Modbus TCP . Хочется увести попробовать на верхний уровень.

И вот еще какой вопрос  . Например по продукции Овен . Модуль ввода аналоговый МВА-8.
Насколько я понимаю можно организовать обмен между данными блоками и ардуино.
Таблица регистров всегда имеется в шестандцатиричном коде.
Достаточно но ли просто перевести в десятичный и проводить опрос? Или есть иное что то?

Ответить

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