Перейти к содержанию
    

Детали разработки модуля Modbus

1 час назад, jcxz сказал:

Но если у вас в каждом устройстве есть USB, то можно сделать на USB (без UART-ов): Мастер - USB-host, ведомые - USB-slave.

ТС же пишет, что в eps32 нет usb, а есть USB Serial. Т.е. это урезанный usb, до usb-device cdc. ни каких хостов там нет. и писать там usb стек не придется. 

Цитата

USB Serial это устройство с фиксированной функцией, реализованной полностью аппаратно. Это значит, что USB Serial нельзя переконфигурировать на использование других функций, кроме как каналов обмена последовательными сообщениями (USB CDC) и отладки JTAG.

да даже если взять стм32ф103 CPU - на котором есть "полноценный" usb. Как этим одним усб подключиться одновременно к пк и к другому cpu?

Изменено пользователем razrab83

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 22.05.2023 в 16:10, razrab83 сказал:

ТС же пишет, что в eps32 нет usb, а есть USB Serial.

да человек не читает другие сообщения, в том числе и ТС. Но переодически набрасывает на вентилятор....

 

самый первый пост ТС, самая первая строчка

В 16.05.2023 в 22:37, Cirnas сказал:

С ПК будет использоваться две одинаковые платы.

vs

В 22.05.2023 в 14:30, jcxz сказал:

к тому же у вас разношёрстное железо

Изменено пользователем ericN

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 минут назад, razrab83 сказал:

ТС же пишет, что в eps32 нет usb

ТС как я понял - ещё не определился на чём будет делать.

37 минут назад, razrab83 сказал:

да даже если взять стм32ф103 CPU - на котором есть "полноценный" usb. Как этим одним усб подключиться одновременно к пк и к другому cpu?

Обоими можно подключиться к ПК. Но у ТС в исходном сообщении говорится о подключении 2-го ведомого через первый. Зачем это - непонятно, но может обосновано как-то конструктивно. И нужно именно так. Не знаю - как у него там и зачем. Гадать не берусь. Поэтому оставляю это на его выбор.

20 минут назад, ericN сказал:

да человек не читает другие сообщения, в том числе и ТС. Но переодически набрасывает на вентилятор....

В чём именно "набрасываю"? Конкретизируйте.

А не читаете - это скорее вы. Удосужьтесь прочитать немного дальше первого сообщения. Увидите там и другие схемы от ТС. В которых уже совсем не "две одинаковые платы".

В 17.05.2023 в 07:03, Cirnas сказал:

 

Screenshot_2.png

Это вот это "2 одинаковые платы"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 часов назад, mantech сказал:

Вот и я об этом. Даже представить не могу, что может так затормозить 12мегабит FS усб, чтобы он не смог передать 115200 бит\сек нужное кол-во байт с задержкой более, чем в байт... Ну разве, что полное зависание компа, причем на уровне драйвера, т.е. ядра системы)))))))

Может и тормозит иногда. Это вам просто везло.

bulk - это вам не изохронная передача. Если на той же шине есть другое устройство а в писюке оно скорее всего есть то жизнь становится намного разнообразнее потому что транзакции начинают задерживаться. Как результат - "фигвам" а не кадр целиком. Нет, оно все придет... когда нибудь и порезанное на кусочки произвольного размера по желанию USB стека и с непредсказуемыми паузами между кусочками.

Еще зависит от особенностей дров переходника USB-UART. У ftdi почему то любая транзакция - от 15 мс хоть 1 байт передавай на 921600 - все равно 15.

В 21.05.2023 в 14:15, mantech сказал:

 "USB <-> usb/uart <-> uart/485" - это просто переходник с одного интерфейса на другой, протокол там может быть и модбас и просто набор символов...

Просто набор символом может быть, modbus ASCII тоже а modbus RTU - нет потому что в этом убожестве жесткие тайминги являются обязательным элементом протокола а мост "USB <-> usb/uart <-> uart/485" не обеспечивает соблюдение надлежащих таймингов протокола RTU.

Изменено пользователем _3m

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

27 минут назад, _3m сказал:

bulk - это вам не изохронная передача. Если на той же шине есть другое устройство а в писюке оно скорее всего есть то жизнь становится намного разнообразнее потому что транзакции начинают задерживаться.

Если на той же шине сидит USB-FS с активной изохронной точкой размером == 1023 байта, то на все остальные interrupt-, bulk- и control-передачи остаётся ~64 байта пропускной способности шины. А если учесть, что из interrupt-, bulk- и control-передач - bulk обладают наименьшим приоритетом, а другие устройства на шине решат в это время пообмениваться control- и interrupt-пакетами, то для bulk-а может вообще времени не остаться. И весь CDC просто ляжет на некоторое время. Если он конечно control-передачи не использует (тут не уверен; хотя наличие bulk в дескрипторе намекает на это).

Это для тех кто "не задумывался, но ведь у меня работало": Нужно тестировать во всех возможных условиях работы, задумываясь - что может влиять на работу вашего решения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, jcxz said:

ТС как я понял - ещё не определился на чём будет делать.

Обоими можно подключиться к ПК. Но у ТС в исходном сообщении говорится о подключении 2-го ведомого через первый. Зачем это - непонятно, но может обосновано как-то конструктивно. И нужно именно так. Не знаю - как у него там и зачем. Гадать не берусь. Поэтому оставляю это на его выбор.

В чём именно "набрасываю"? Конкретизируйте.

А не читаете - это скорее вы. Удосужьтесь прочитать немного дальше первого сообщения. Увидите там и другие схемы от ТС. В которых уже совсем не "две одинаковые платы".

Это вот это "2 одинаковые платы"?

Я действительно не определился с МК - немного игрался с девбордами на ESP32, отсюда и склонность к ним. 

Изначально было две разные платы - одна больше с датчиками работает и находится непосредственно возле ПК, а у второй больше релюшек и находится на расстоянии 10-30м. Команды для обеих раздает ПК. После того как посмотрел на готовые модули для автоматизации свел обе платы к общему функционалу и описал максимально изалированно от предметной области - в итоге логика плат еще упростилась и вынеслась максимально на ПК, ну а там мне уже сильно проще писать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 часов назад, jcxz сказал:

Имеется один мастер и 2 ведомых (RS-485 например). Один ведомый подключен напрямую через свой UART к шине, второй - посредством моста USB-UART.

Смешались в кучу кони, люди...  Если имеется ОДИН мастер и 2 ведомых, то они могут быть только на ОДНОЙ шине, т.е. rs485, как один может получать напрямую, а второй через мост? У вас мост к ведомому подключен что-ли? Я говорю, что мост стоит только на ПК, который является мастером, с переходником на 485ю шину, остальные ведомые БЕЗ моста, и принимать они могут всегда одну и ту же инфу и ОДНОВРЕМЕННО...

1 час назад, Cirnas сказал:

Я действительно не определился с МК - немного игрался с девбордами на ESP32

Зачем вам этот esp? Он по факту нужен только, если осн. требование - вайфай, если нет, то лучше это вообще не использовать, ИМХО.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Cirnas сказал:

в итоге логика плат еще упростилась и вынеслась максимально на ПК

Да в-сие-выше озвученном, есть полное отсутствие  = логики . ПК-то, нафик ? У вас примитивный робот-поилка, с монетоприёмником ( картой), и зачем его опрашивать по USB ? Типа , а другое я (вы)-и-не видел ... ну-да, сейчас вас обучат ... нет, не обучат... вам не дали в сиём диспуте ни одного бесплатного-дельного совета . Знаете почему ?  Вижу, догадываетесь ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, _3m сказал:

Если на той же шине есть другое устройство а в писюке оно скорее всего есть то жизнь становится намного разнообразнее потому что транзакции начинают задерживаться.

Ну хорошо, возьмем макс. скорость 115200, имеем 12мегабит усб, допустим подключили его в корневой хаб, с 2 портами, а именно в корневом может быть только 2 порта, во второй воткнем комбик мышь+клава, в первый переходник на 485й. Далее, по скорости имеем приоритет в 2 порядка 12мбит - 100килобит, усб переходник работает пакетами по 64 байта за раз, что практически включает 1 пакет модбаса, ну если вы конечно не любите за раз читать \записывать по 100 регистров)))

мышь с клавой прерывают порт каждую мсек, с запросом интеррупт трансфера, допустим тоже по 64 байта, т.е. грубо мы занимаем канал каждые 500мксек, и отправляем\принимаем 64 байта, которые при 12мбит уходят в порт за 60-70мксек, т.е. при скорости посылок 1 раз в 500мксек и загрузке канала 70мксек мы имеем почти 430мксек "паузы", как тут можно не успеть - для меня загадка...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, mantech сказал:

посылок 1 раз в 500мксек и загрузке канала 70мксек мы имеем почти 430мксек "паузы", как тут можно не успеть - для меня загадка...

Для меня тоже загадка как в дровах ftdi пересылка 1 байта занимает от 15мс независимо от битрейта но оно есть.

Вы рассматриваете загрузку с точки зрения UART а надо с точки зрения USB стека и планировщика задач ОС.

22 минуты назад, mantech сказал:

Зачем вам этот esp? Он по факту нужен только, если осн. требование - вайфай, если нет, то лучше это вообще не использовать, ИМХО.

ESP это не только wifi но и микроконтроллер причем дешевый, мощный и распространенный. Если он освоен - почему бы его не использовать ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

35 минут назад, _3m сказал:

в дровах ftdi пересылка 1 байта занимает от 15мс независимо от битрейта но оно есть.

Наверно цепляется к какому-то шедулеру в ядре ОС. Тут еще вопрос, что за ОС винда или линукс...

35 минут назад, _3m сказал:

а надо с точки зрения USB стека и планировщика задач ОС.

Да без разницы, делайте пакет модбаса не больше 64х байт и он будет улетать за раз, без разницы от ОС и пр. хозяйства.

Ну а если цель ответственная промавтоматика, то лучше не экономьте и купите комп с аппаратным уарт или плату аппаратного уарта. На своем опыте уяснил - усб и промавтоматика вещи трудносовместимые...

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, mantech сказал:

как тут можно не успеть - для меня загадка...

Если загадка, то советую ещё раз перечитать:

6 часов назад, jcxz сказал:

Если на той же шине сидит USB-FS с активной изохронной точкой размером == 1023 байта, то на все остальные interrupt-, bulk- и control-передачи остаётся ~64 байта пропускной способности шины. А если учесть, что из interrupt-, bulk- и control-передач - bulk обладают наименьшим приоритетом, а другие устройства на шине решат в это время пообмениваться control- и interrupt-пакетами, то для bulk-а может вообще времени не остаться. И весь CDC просто ляжет на некоторое время. Если он конечно control-передачи не использует (тут не уверен; хотя наличие bulk в дескрипторе намекает на это).

А также наконец-то открыть какое-нить толковое описание USB-шины и прочитать что такое "изохронные передачи". Да и про другие типы передач прочитать. И про их приоритеты. И как оно всё там работает. И тогда может наконец-то развеятся влажные мечты про микросекунды...

4 часа назад, mantech сказал:

Да без разницы, делайте пакет модбаса не больше 64х байт и он будет улетать за раз, без разницы от ОС и пр. хозяйства.

Видно, что документацию на USB вы не открывали никогда. Вот после такого и рождаются "фобос-в-грунты"  :unknw:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 5/22/2023 at 8:28 AM, Arlleex said:

ничего не мешает прокинуть CAN

как будто по 8 байт пересылать это нормально.

On 5/22/2023 at 7:47 AM, razrab83 said:

Как ваше приложение на ПК в одном булке разделит на пакеты эти 10 байт? 

По загаловку, не?

Вы про нормальные протоколы хоть что-то слышали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, siargy сказал:

как будто по 8 байт пересылать это нормально.

И в чем проблема? Ну по 64 передавайте, в CAN FD. Бонусом еще и быстрее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 hours ago, jcxz said:

кольцо на UART.

в одном месте проводок оборвался - все отвалилось. надежность100% )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...