всё подключено,сделано по примеру но в real, через регистр данные есть,через строку нули и подключение падает через минуту.проект приложил1.png
Во первых, зачем вы сделали 2 UMD ( Универсал модбас девайс) для одного модуля 8А ?
Во вторых стринг вы читаете функцией 0х70, а во всех примерах функция 0х03. Ну и в третьих, часть полученных REAL будут неадекватные, выберите нужные.
Конкретно у вас в программе MV8A_1 [3] будет неадекватный.
Да на скрине у вас ещё Старт на нажат.
Ну и напоследок, все модули в программе могут спокойно работать на скорости 115200, зачем вам скорость 9600 ?
Последний раз редактировалось kondor3000; 20.04.2023 в 18:13.
1)Чтобы проверять что через конфигурацию данные получаются, а строкой нет (т.е. просто для проверки, это тестовый проект)
2)Было не очевидно что байты нужно читать функцией чтения регистров, но да, так данные появились,спасибо
3)В карте регистров 8А значение первого аналогового входа в формате обозначено в регистрах 4 и 5 начиная с 0,должно попадать во второй,но там отображается число в формате е в степени
4)Скорость маленькая потому что приборы будут разнесены по двум щитам на расстояние около 20 метров или более
Если переменная REAL отображается не правильно, значит в ней переставлены регистры (байты).
Это часто бывает при передаче Float по модбас.
В моём примере по ссылке (уже давал), есть ФБ перестановки регистров. Вот его и примените, чуть переделав код. 1 Перестановка регистров.jpg
Вход REAL там закомментирован, но он вам и нужен, а 2 входа WORD, наоборот закомментируйте.
На скрине 4 возможных варианта перестановки регистров (байт) и работа блока Swap_WORD ниже.
Последний раз редактировалось kondor3000; 25.04.2023 в 23:23.