Страница 1 из 2
Обработка данных в UART
Добавлено: 03 янв 2021, 01:25
mrAlexx
Доброго времени суток, знатоки. Делаю проект в котором два контроллера обмениваются через UART командами.
Сама схема находится тут:
посмотреть
Контроллер формирует строку вида t20 u78 p0 k0 h80 a0 CRC12.13 s, где передаются некие параметры (пробелы вставлены для наглядности)
Буквы обозначают тот или иной параметр. принимающая сторона может управлять частью этих параметров (отправлять обратно другие числа). На схеме я попытался вырезать из строки входящих данных методом поиска подстроки (ищутся 3 параметра p0 k0 h80), но вышло как-то странно. В мониторе видно что если я отсылаю значение h35a, по которым должен сработать нижний блок поиска (он срабатывает правильно, возвращает 3, т.к. для наглядности я отрезаю на один символ меньше), но так же срабатывают и первые два блока, присваивая число 35 соответствующим переменным (мы видим в строке новые значения p35 k35 h3)
Что я делаю не так? Или тут каким-то иным способом нужно решить? Уже всю голову сломал, надежда только на вас.

Обработка данных в UART
Добавлено: 03 янв 2021, 12:27
AlexCrane
[ref]mrAlexx[/ref], Без приложенного проекта вряд ли кто поможет....
Обработка данных в UART
Добавлено: 07 янв 2021, 12:47
mrAlexx
Обработка данных в UART
Добавлено: 07 янв 2021, 13:03
Rovki
А чем вас не устраивает модбас ,что вы строки гоняете ?
Обработка данных в UART
Добавлено: 07 янв 2021, 13:51
mrAlexx
К сожалению я не знаю как им пользоваться и в библиотеке не нашел такого компонента. UART показался оптимальным вариантом из доступных. Расстояние между контроллерами - около 12 м, уровни TTL. Команды исполнения всего 3, команды сообщения состояния системы - 6. Чем UART плох?
Обработка данных в UART
Добавлено: 07 янв 2021, 14:02
Rovki
mrAlexx писал(а): 07 янв 2021, 13:51
К сожалению я не знаю как им пользоваться и в библиотеке не нашел такого компонента. UART показался оптимальным вариантом из доступных. Расстояние между контроллерами - около 12 м, уровни TTL. Команды исполнения всего 3, команды сообщения состояния системы - 6. Чем UART плох?
Модбас находится не в библиотеках ,а в коммуникациях .! Это тоже обмен по уарту Данными , но по штатному протоколу ,нет заморочек со строками .

Обработка данных в UART
Добавлено: 07 янв 2021, 14:36
mrAlexx
Простите великодушно, но я не пойму что искать....
В коммуникациях у меня 5 блоков:
- SendVariableFromCommunication
- RessiveVariableFromCommunication
- WebServerPage
- WebClient
- Текущий IP адрес Ethernet устройства
И что-то мне подсказывает что это все не то, потому как все это работает через Ethernet или wifi.
Отправлено спустя 15 минут 38 секунд:
Ой! Нашел. Только почему-то строки выбора серые и написано, что не подключено.
Отправлено спустя 1 минуту 28 секунд:
Так, нашел как подключить. ) Буду разбираться.
Обработка данных в UART
Добавлено: 07 янв 2021, 14:58
Rovki
ВЫ в дереве проекта смотрите ,слева ...коммуникации. Один контроллер у вас будет мастером , а второй слейвом modbus RTU и обмениваетесь сетевыми переменными
Обработка данных в UART
Добавлено: 07 янв 2021, 15:05
mrAlexx
Соглашусь, что коммуникация получается проще, но возникли 2 вопроса:
- можно ли обойтись без преобразователей 465 если в схеме всего 2 устройства (один мастер, один слейв)
- можно ли подключить несколько таких независимых шин к меге (у меня 2 будет слейва, абсолютно одинаковых [не хочу морочится в будущем с адресами, а номер слейва будет определяться пинами подключения на меге ])
Ну и конечно проверю влезут ли все мои хотелки в нано.))
Обработка данных в UART
Добавлено: 07 янв 2021, 16:15
Rovki
1. если соединение точка-точка , то можно Rx-Tx , Tx-Rx
2. если слейвов два то нужен интерфейс RS485 (конвертер rs485- uart) или используйте два уарта(железный и программный) ,при этом каждая ардуинка является и слейвом и мастером ...тогда напрямую
Обработка данных в UART
Добавлено: 07 янв 2021, 16:25
mrAlexx
Спасибо огромное. Уже копаю в этом направлении )))
Обработка данных в UART
Добавлено: 07 янв 2021, 16:42
Rovki
mrAlexx писал(а): 07 янв 2021, 16:25
Спасибо огромное. Уже копаю в этом направлении )))
На лету схватываете ...
Обработка данных в UART
Добавлено: 07 янв 2021, 20:16
kramar
Rovki писал(а): 07 янв 2021, 16:42
Спасибо огромное. Уже копаю в этом направлении
попадос на штукарь скоро будет)))
Обработка данных в UART
Добавлено: 09 янв 2021, 08:17
mrAlexx
Приветствую всех. Опять возникли вопросы.
Соединил 2 НАНЫ напрямую (как подсказали выше) крестом через пины D2 и D3. Организовал мастер/слейв посредством модбас. На слейве тот скетч, что приведен выше. Если не включать мастер, то слейв работает нормально, но при включении мастера на слейве падает частота динамической индикации до неприличного уровня (причем это происходит как-то рывками). Один раз слейв завис со слетом загрузчика.
Теперь собственно вопросы: может все же нельзя соединять напрямую ардуины, а нужен преобразователь 485? Или так происходит от повышенной загрузки НАНЫ потому что serial софтовый и у нее не хватает мощи и на модбас, и на индикацию, и на измерения. (Правда я не знаю как использовать аппаратный сериал- его нет в списке доступных). Может ли исправить эту ситуацию применение регистра типа 74РС595?
Обработка данных в UART
Добавлено: 09 янв 2021, 08:23
Sancho
[ref]mrAlexx[/ref], Выложите проект - поищем аппаратный.
Обработка данных в UART
Добавлено: 09 янв 2021, 09:39
Rovki
mrAlexx писал(а): 09 янв 2021, 08:17
Приветствую всех. Опять возникли вопросы.
Соединил 2 НАНЫ напрямую (как подсказали выше) крестом через пины D2 и D3. Организовал мастер/слейв посредством модбас. На слейве тот скетч, что приведен выше. Если не включать мастер, то слейв работает нормально, но при включении мастера на слейве падает частота динамической индикации до неприличного уровня (причем это происходит как-то рывками). Один раз слейв завис со слетом загрузчика.
Теперь собственно вопросы: может все же нельзя соединять напрямую ардуины, а нужен преобразователь 485? Или так происходит от повышенной загрузки НАНЫ потому что serial софтовый и у нее не хватает мощи и на модбас, и на индикацию, и на измерения. (Правда я не знаю как использовать аппаратный сериал- его нет в списке доступных). Может ли исправить эту ситуацию применение регистра типа 74РС595?
Дело не в интерфейсе - уарт или rs485 , а в совместном использовании нескольких интерфейсов в контроллере одновременно. Помочь сможет только новые блоки от ecoins
Обработка данных в UART
Добавлено: 09 янв 2021, 12:00
Sancho
Rovki писал(а): 09 янв 2021, 09:39
Дело не в интерфейсе - уарт или rs485 , а в совместном использовании нескольких интерфейсов в контроллере одновременно. Помочь сможет только новые блоки от ecoins
Не согласен. В корне.
Обработка данных в UART
Добавлено: 09 янв 2021, 12:18
Rovki
Sancho писал(а): 09 янв 2021, 12:00
Rovki писал(а): 09 янв 2021, 09:39
Дело не в интерфейсе - уарт или rs485 , а в совместном использовании нескольких интерфейсов в контроллере одновременно. Помочь сможет только новые блоки от ecoins
Не согласен. В корне.
Александр ,я как и вы привык верить глазам . Без теоретических изысков - Много постов о проблемах совместного использования "штатного" модбаса и других интерфейсов . Но также есть видео и куча постов ,где при "штатном" модбасе ФЛ удается подключить кучу интерфейсов (устройств) ,где нет глюков и все летает с помощью механизмов , блоков, библиотек от ecoins.Вот такие "корни" в одной и той же почве, но с подкормкой . Не исключаю ,что можно это решить другими способами, но пока не видел

,но читал...
Обработка данных в UART
Добавлено: 11 янв 2021, 12:43
mrAlexx
И все таки контроллеру не хватает быстродействия.Переключил с софтового на аппаратный UART (я его нашел

) - глюки с индикацией уменьшились, хотя и не пропали совсем. Но возникло другое неудобство: не заливается прошивка, если подключен мастер. Приходится рвать Тх от мастера.
И снова появились вопросы:
1. регистры хранения двусторонние? иными словами мы пихаем туда данные, чтоб они ушли в шину модбас и данные помещаются туда, если они приходят из шины?
2 Есть ли способ узнать, что из шины прищли какие-то данные (типа флага). Можно приколхозить еще один регистр и присылать этот флаг с мастера, а после обработки слейвам его сбрасывать, но это как то не эстетично.

Обработка данных в UART
Добавлено: 11 янв 2021, 13:38
Rovki
Коилс и холдинг регистры работают на запись и чтение . Если пишите в нулевой регистр ,а потом читаете , то вы видите что передалось туда и обратно.