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

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

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

#1

Сообщение mrAlexx » 03.01.2021{, 01:25}

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

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

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

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

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

#2

Сообщение AlexCrane » 03.01.2021{, 12:27}

mrAlexx, Без приложенного проекта вряд ли кто поможет....
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03.01.2021{, 00:56}
Репутация: 0
Имя: Алексей

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

#3

Сообщение mrAlexx » 07.01.2021{, 12:47}


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

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

#4

Сообщение Rovki » 07.01.2021{, 13:03}

А чем вас не устраивает модбас ,что вы строки гоняете ?
Электронщик до мозга костей и не только

mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03.01.2021{, 00:56}
Репутация: 0
Имя: Алексей

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

#5

Сообщение mrAlexx » 07.01.2021{, 13:51}

К сожалению я не знаю как им пользоваться и в библиотеке не нашел такого компонента. UART показался оптимальным вариантом из доступных. Расстояние между контроллерами - около 12 м, уровни TTL. Команды исполнения всего 3, команды сообщения состояния системы - 6. Чем UART плох?

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

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

#6

Сообщение Rovki » 07.01.2021{, 14:02}

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

mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03.01.2021{, 00:56}
Репутация: 0
Имя: Алексей

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

#7

Сообщение mrAlexx » 07.01.2021{, 14:19}

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

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

Отправлено спустя 1 минуту 28 секунд:
Так, нашел как подключить. ) Буду разбираться.

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

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

#8

Сообщение Rovki » 07.01.2021{, 14:58}

ВЫ в дереве проекта смотрите ,слева ...коммуникации. Один контроллер у вас будет мастером , а второй слейвом modbus RTU и обмениваетесь сетевыми переменными
Электронщик до мозга костей и не только

mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03.01.2021{, 00:56}
Репутация: 0
Имя: Алексей

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

#9

Сообщение mrAlexx » 07.01.2021{, 15:05}

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

Ну и конечно проверю влезут ли все мои хотелки в нано.))

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

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

#10

Сообщение Rovki » 07.01.2021{, 16:15}

1. если соединение точка-точка , то можно Rx-Tx , Tx-Rx
2. если слейвов два то нужен интерфейс RS485 (конвертер rs485- uart) или используйте два уарта(железный и программный) ,при этом каждая ардуинка является и слейвом и мастером ...тогда напрямую
Электронщик до мозга костей и не только

mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03.01.2021{, 00:56}
Репутация: 0
Имя: Алексей

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

#11

Сообщение mrAlexx » 07.01.2021{, 16:25}

Спасибо огромное. Уже копаю в этом направлении )))

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

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

#12

Сообщение Rovki » 07.01.2021{, 16:42}

mrAlexx писал(а):
07.01.2021{, 16:25}
Спасибо огромное. Уже копаю в этом направлении )))
На лету схватываете ...
Электронщик до мозга костей и не только

kramar
Рядовой
Сообщения: 41
Зарегистрирован: 29.12.2020{, 13:53}
Репутация: -4
Имя: Виталий

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

#13

Сообщение kramar » 07.01.2021{, 20:15}

Rovki писал(а):
07.01.2021{, 16:42}
Спасибо огромное. Уже копаю в этом направлении
попадос на штукарь скоро будет)))

mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03.01.2021{, 00:56}
Репутация: 0
Имя: Алексей

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

#14

Сообщение mrAlexx » 09.01.2021{, 08:17}

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

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

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

#15

Сообщение Sancho » 09.01.2021{, 08:23}

mrAlexx, Выложите проект - поищем аппаратный.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

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

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

#16

Сообщение Rovki » 09.01.2021{, 09:39}

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

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

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

#17

Сообщение Sancho » 09.01.2021{, 12:00}

Rovki писал(а):
09.01.2021{, 09:39}
Дело не в интерфейсе - уарт или rs485 , а в совместном использовании нескольких интерфейсов в контроллере одновременно. Помочь сможет только новые блоки от ecoins
Не согласен. В корне.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

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

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

#18

Сообщение Rovki » 09.01.2021{, 12:18}

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

mrAlexx
Рядовой
Сообщения: 16
Зарегистрирован: 03.01.2021{, 00:56}
Репутация: 0
Имя: Алексей

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

#19

Сообщение mrAlexx » 11.01.2021{, 12:43}

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

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

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

#20

Сообщение Rovki » 11.01.2021{, 13:38}

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

Ответить

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