Обработка данных в UART

На этом форуме Вы можете задать вопросы знатокам программы и автору.
mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03 янв 2021, 00:56
Имя: Алексей

Обработка данных в UART

Сообщение mrAlexx »

Доброго времени суток, знатоки. Делаю проект в котором два контроллера обмениваются через UART командами.

Сама схема находится тут:посмотреть

Контроллер формирует строку вида t20 u78 p0 k0 h80 a0 CRC12.13 s, где передаются некие параметры (пробелы вставлены для наглядности)
Буквы обозначают тот или иной параметр. принимающая сторона может управлять частью этих параметров (отправлять обратно другие числа). На схеме я попытался вырезать из строки входящих данных методом поиска подстроки (ищутся 3 параметра p0 k0 h80), но вышло как-то странно. В мониторе видно что если я отсылаю значение h35a, по которым должен сработать нижний блок поиска (он срабатывает правильно, возвращает 3, т.к. для наглядности я отрезаю на один символ меньше), но так же срабатывают и первые два блока, присваивая число 35 соответствующим переменным (мы видим в строке новые значения p35 k35 h3)
Что я делаю не так? Или тут каким-то иным способом нужно решить? Уже всю голову сломал, надежда только на вас. :smile14:
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

Обработка данных в UART

Сообщение AlexCrane »

[ref]mrAlexx[/ref], Без приложенного проекта вряд ли кто поможет....
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03 янв 2021, 00:56
Имя: Алексей

Обработка данных в UART

Сообщение mrAlexx »

Аватара пользователя
Rovki
Полковник
Сообщения: 5747
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 69 раз
Поблагодарили: 225 раз
Контактная информация:

Обработка данных в UART

Сообщение Rovki »

А чем вас не устраивает модбас ,что вы строки гоняете ?
Электронщик до мозга костей и не только
mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03 янв 2021, 00:56
Имя: Алексей

Обработка данных в UART

Сообщение mrAlexx »

К сожалению я не знаю как им пользоваться и в библиотеке не нашел такого компонента. UART показался оптимальным вариантом из доступных. Расстояние между контроллерами - около 12 м, уровни TTL. Команды исполнения всего 3, команды сообщения состояния системы - 6. Чем UART плох?
Аватара пользователя
Rovki
Полковник
Сообщения: 5747
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 69 раз
Поблагодарили: 225 раз
Контактная информация:

Обработка данных в UART

Сообщение Rovki »

mrAlexx писал(а): 07 янв 2021, 13:51 К сожалению я не знаю как им пользоваться и в библиотеке не нашел такого компонента. UART показался оптимальным вариантом из доступных. Расстояние между контроллерами - около 12 м, уровни TTL. Команды исполнения всего 3, команды сообщения состояния системы - 6. Чем UART плох?
Модбас находится не в библиотеках ,а в коммуникациях .! Это тоже обмен по уарту Данными , но по штатному протоколу ,нет заморочек со строками . :smile427:
Электронщик до мозга костей и не только
mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03 янв 2021, 00:56
Имя: Алексей

Обработка данных в UART

Сообщение mrAlexx »

Простите великодушно, но я не пойму что искать....
В коммуникациях у меня 5 блоков:
- SendVariableFromCommunication
- RessiveVariableFromCommunication
- WebServerPage
- WebClient
- Текущий IP адрес Ethernet устройства
И что-то мне подсказывает что это все не то, потому как все это работает через Ethernet или wifi.

Отправлено спустя 15 минут 38 секунд:
Ой! Нашел. Только почему-то строки выбора серые и написано, что не подключено.

Отправлено спустя 1 минуту 28 секунд:
Так, нашел как подключить. ) Буду разбираться.
Аватара пользователя
Rovki
Полковник
Сообщения: 5747
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 69 раз
Поблагодарили: 225 раз
Контактная информация:

Обработка данных в UART

Сообщение Rovki »

ВЫ в дереве проекта смотрите ,слева ...коммуникации. Один контроллер у вас будет мастером , а второй слейвом modbus RTU и обмениваетесь сетевыми переменными
Электронщик до мозга костей и не только
mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03 янв 2021, 00:56
Имя: Алексей

Обработка данных в UART

Сообщение mrAlexx »

Соглашусь, что коммуникация получается проще, но возникли 2 вопроса:
- можно ли обойтись без преобразователей 465 если в схеме всего 2 устройства (один мастер, один слейв)
- можно ли подключить несколько таких независимых шин к меге (у меня 2 будет слейва, абсолютно одинаковых [не хочу морочится в будущем с адресами, а номер слейва будет определяться пинами подключения на меге ])

Ну и конечно проверю влезут ли все мои хотелки в нано.))
Аватара пользователя
Rovki
Полковник
Сообщения: 5747
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 69 раз
Поблагодарили: 225 раз
Контактная информация:

Обработка данных в UART

Сообщение Rovki »

1. если соединение точка-точка , то можно Rx-Tx , Tx-Rx
2. если слейвов два то нужен интерфейс RS485 (конвертер rs485- uart) или используйте два уарта(железный и программный) ,при этом каждая ардуинка является и слейвом и мастером ...тогда напрямую
Электронщик до мозга костей и не только
mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03 янв 2021, 00:56
Имя: Алексей

Обработка данных в UART

Сообщение mrAlexx »

Спасибо огромное. Уже копаю в этом направлении )))
Аватара пользователя
Rovki
Полковник
Сообщения: 5747
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 69 раз
Поблагодарили: 225 раз
Контактная информация:

Обработка данных в UART

Сообщение Rovki »

mrAlexx писал(а): 07 янв 2021, 16:25 Спасибо огромное. Уже копаю в этом направлении )))
На лету схватываете ...
Электронщик до мозга костей и не только
kramar
Рядовой
Сообщения: 41
Зарегистрирован: 29 дек 2020, 13:53
Имя: Виталий

Обработка данных в UART

Сообщение kramar »

Rovki писал(а): 07 янв 2021, 16:42 Спасибо огромное. Уже копаю в этом направлении
попадос на штукарь скоро будет)))
mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03 янв 2021, 00:56
Имя: Алексей

Обработка данных в UART

Сообщение mrAlexx »

Приветствую всех. Опять возникли вопросы.
Соединил 2 НАНЫ напрямую (как подсказали выше) крестом через пины D2 и D3. Организовал мастер/слейв посредством модбас. На слейве тот скетч, что приведен выше. Если не включать мастер, то слейв работает нормально, но при включении мастера на слейве падает частота динамической индикации до неприличного уровня (причем это происходит как-то рывками). Один раз слейв завис со слетом загрузчика.
Теперь собственно вопросы: может все же нельзя соединять напрямую ардуины, а нужен преобразователь 485? Или так происходит от повышенной загрузки НАНЫ потому что serial софтовый и у нее не хватает мощи и на модбас, и на индикацию, и на измерения. (Правда я не знаю как использовать аппаратный сериал- его нет в списке доступных). Может ли исправить эту ситуацию применение регистра типа 74РС595?
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Обработка данных в UART

Сообщение Sancho »

[ref]mrAlexx[/ref], Выложите проект - поищем аппаратный.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Rovki
Полковник
Сообщения: 5747
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 69 раз
Поблагодарили: 225 раз
Контактная информация:

Обработка данных в UART

Сообщение Rovki »

mrAlexx писал(а): 09 янв 2021, 08:17 Приветствую всех. Опять возникли вопросы.
Соединил 2 НАНЫ напрямую (как подсказали выше) крестом через пины D2 и D3. Организовал мастер/слейв посредством модбас. На слейве тот скетч, что приведен выше. Если не включать мастер, то слейв работает нормально, но при включении мастера на слейве падает частота динамической индикации до неприличного уровня (причем это происходит как-то рывками). Один раз слейв завис со слетом загрузчика.
Теперь собственно вопросы: может все же нельзя соединять напрямую ардуины, а нужен преобразователь 485? Или так происходит от повышенной загрузки НАНЫ потому что serial софтовый и у нее не хватает мощи и на модбас, и на индикацию, и на измерения. (Правда я не знаю как использовать аппаратный сериал- его нет в списке доступных). Может ли исправить эту ситуацию применение регистра типа 74РС595?
Дело не в интерфейсе - уарт или rs485 , а в совместном использовании нескольких интерфейсов в контроллере одновременно. Помочь сможет только новые блоки от ecoins
Электронщик до мозга костей и не только
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Обработка данных в UART

Сообщение Sancho »

Rovki писал(а): 09 янв 2021, 09:39 Дело не в интерфейсе - уарт или rs485 , а в совместном использовании нескольких интерфейсов в контроллере одновременно. Помочь сможет только новые блоки от ecoins
Не согласен. В корне.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Rovki
Полковник
Сообщения: 5747
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 69 раз
Поблагодарили: 225 раз
Контактная информация:

Обработка данных в UART

Сообщение Rovki »

Sancho писал(а): 09 янв 2021, 12:00
Rovki писал(а): 09 янв 2021, 09:39 Дело не в интерфейсе - уарт или rs485 , а в совместном использовании нескольких интерфейсов в контроллере одновременно. Помочь сможет только новые блоки от ecoins
Не согласен. В корне.
Александр ,я как и вы привык верить глазам . Без теоретических изысков - Много постов о проблемах совместного использования "штатного" модбаса и других интерфейсов . Но также есть видео и куча постов ,где при "штатном" модбасе ФЛ удается подключить кучу интерфейсов (устройств) ,где нет глюков и все летает с помощью механизмов , блоков, библиотек от ecoins.Вот такие "корни" в одной и той же почве, но с подкормкой . Не исключаю ,что можно это решить другими способами, но пока не видел :smile427:,но читал...
Электронщик до мозга костей и не только
mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03 янв 2021, 00:56
Имя: Алексей

Обработка данных в UART

Сообщение mrAlexx »

И все таки контроллеру не хватает быстродействия.Переключил с софтового на аппаратный UART (я его нашел :smile44: ) - глюки с индикацией уменьшились, хотя и не пропали совсем. Но возникло другое неудобство: не заливается прошивка, если подключен мастер. Приходится рвать Тх от мастера.
И снова появились вопросы:
1. регистры хранения двусторонние? иными словами мы пихаем туда данные, чтоб они ушли в шину модбас и данные помещаются туда, если они приходят из шины?
2 Есть ли способ узнать, что из шины прищли какие-то данные (типа флага). Можно приколхозить еще один регистр и присылать этот флаг с мастера, а после обработки слейвам его сбрасывать, но это как то не эстетично. :smile171:
Аватара пользователя
Rovki
Полковник
Сообщения: 5747
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 69 раз
Поблагодарили: 225 раз
Контактная информация:

Обработка данных в UART

Сообщение Rovki »

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

Вернуться в «Спросить у знатоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость