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

Нужно разобраться в протоколе RS485 беговой дорожки.

15 minutes ago, MiD said:

Какое ПО лучше использовать для отправки пакетов ?

ТУТ  выбирайте любой. Я пользую первый в списке. Вам понадобится работа с макросами, чтобы пакет уходил "слитно", без пауз.

Но и это может не сработать, если контролируются таймауты на задержку ответа.

Хотя для этого этапа уже лучше переходить на свою (C, pas . . .) утилиту + PC с двумя портами. Это на порядок упростит анализ протокола и начало работы с шиной вашего "девайса". (Можно периодически переключать свой софт из режима "моста" на полное или частичное управление, отключая COM-порт с родным "мастером" и передавая свои пакеты управления.)

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


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

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

Длительности 5 секунд, в которой всего 9 пакетов (80 30 9F ...) недостаточно, нужно хотя бы пол минуты для начала.

Естественно не путать дампы.

Как работают кнопки тоже не понятно. Позволяют ли кнопки длительное нажатие, при котором скорость (наклон) дорожки изменяется. Или одно нажатие приводит к одному шагу изменения скорости (наклона) дорожки, вне зависимости от длительности нажатия.

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

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


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

 
1 hour ago, MiD said:

А я могу отправлять пакеты подключившись парралельно

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

Как на коленке решить эту проблему, не знаю - нужно писать софтинку, отслеживать "тишину".

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

 

 

44 minutes ago, k155la3 said:

ТУТ  выбирайте любой. Я пользую первый в списке.

Bray terminal, хоть и достаточно удобен в плане интерфейса, с ком-портом работает через ж., т.е. побайтово. Грузит процессор и теряет символы при приёме на больших объемах, вставляет произвольные паузы при отправке. Я com port toolkit использовал, когда надо было пачку байт без пауз отправить.

 

Ну или действительно сразу на каком-нибудь питоне ваять. 

 

50 minutes ago, k155la3 said:

утилиту + PC с двумя портами

Сомневаюсь, что эта конструкция уменьшит количество коллизий.

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


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

9 minutes ago, esaulenka said:
Сомневаюсь, что эта конструкция уменьшит количество коллизий.

ну, тут "как пойдет". Если на шине один мастер - то коллизии исключаются (ответы периферии только по запросу).

 

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


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

19 hours ago, vguard said:

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

Длительности 5 секунд, в которой всего 9 пакетов (80 30 9F ...) недостаточно, нужно хотя бы пол минуты для начала.

Естественно не путать дампы.

Как работают кнопки тоже не понятно. Позволяют ли кнопки длительное нажатие, при котором скорость (наклон) дорожки изменяется. Или одно нажатие приводит к одному шагу изменения скорости (наклона) дорожки, вне зависимости от длительности нажатия.

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

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

Кнопки именно так и работают ( Есть еще кнопки фикс скорость 12 км\ч или наклон 5% их не трогаю пока) 

19 hours ago, esaulenka said:

Ну или действительно сразу на каком-нибудь питоне ваять.

Я накидал для арудуино чередование 2-х коротких пакетов, так как это делает дорожка, но тут несколько базовых вопросов появилось:

1. В ардуино я делаю через серийный порт и получается, что у меня только 1 канал, а не как RS485 два с инверсией. Тут вопрос, что лучше сделать, купить переходник для RS485 (не USB, а с контактами помонтаж\пайку) и отправлять через него. Или лучше использовать любые два пина и попробовать эмулировать RS485, отправля два инвертированных пакета на два разных пина? 

2. Данные с дорожки, которые я анализировал были с учетом  "Most Significant Bit sent", a то что отправляет Арудино - "Least Significant Bit Sent". Тут, несмотря на то, что я почитал инет - плаваю. Если я правильно понял, то нужно сдвинуть регистр отправляемых данных, но результата пока не достинг. Там сложная для меня теория и просто >>1 не прокатывает. Может кто-то делал?

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


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

40 minutes ago, MiD said:

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

Подключитесь только нормально, на блоке кнопок между контроллером и драйвером. И помех не будет, и гадать, кто что передаёт, не надо.

43 minutes ago, MiD said:

купить переходник для RS485

Да, однозначно. Программно, в принципе, сделать можно, но а) нетривиально б) защит никаких нет.

 

46 minutes ago, MiD said:

отправляет Арудино - "Least Significant Bit Sent"

Вы что-то путаете. UART всегда и везде отправляет первым старший бит. Я не очень хорошо знаком с ардуино-библиотеками, но вряд-ли кто-то реализовывал переворот порядка бит "младшим вперёд".

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


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

11 hours ago, esaulenka said:

Подключитесь только нормально, на блоке кнопок между контроллером и драйвером. И помех не будет, и гадать, кто что передаёт, не надо.

Если я правильно понял то речь идет об основном контроллере и драйвером это Max... Честно говоря я слабо представлю что смогу куда-то тут подпояться до MAX

Даже к его ножкам вряд ли.  ( на фото часть переферии поотключал чтобы провода не мешали. Шлейфы наверху и внизу - это к блокам кнопок. ДЛя экрана отдельная плата.

 

RS485 заказал, доставка только в среду.

TeadMill_board_lowres.jpg

TeadMill_Max_Board_lowres.jpg

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


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

22 minutes ago, MiD said:

Честно говоря я слабо представлю что смогу куда-то тут подпояться до MAX

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

Ну или к MAX'у, к 1,3 и 4 ногам. Они достаточно большие и рядом есть пятачки (для ремонтников, видимо).

 

PS Horizon Adventure 4 Plus стоит сотню килорублей. Жесть какая...

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


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

+1 к тому, что нужны "длинные" логи

чтобы уменьшить их размер стоит понизить частоту семплирования (для адекватной декодировки UART достаточно будет 4...8х к скорости интерфейса).

 

такое впечатление, что контрольная плата является централизованным модулем управления, а исполнительная часть на приводах просто выполняет "мгновенные команды", т.е. нет высокоуровневой команды "сделать наклон 15гр", но есть низкоуровневые команды "поднять/наклонить полотно на 1 единицу дискрета" и  контрольная плата сама высчитывает число и время за которые должна выдать всю пачку на исполнительный модуль - для проверки этой догадки и нужны длинные (по несколько минут) логи.

 

ЗЫЖ из логов надо будет вырезать некий heartbeat СMD - выше было указано, что при обрыве связи девайс переходит в нерабочий режим до восстановления связи и перезагрузки

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


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

13 hours ago, esaulenka said:

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

Ну или к MAX'у, к 1,3 и 4 ногам. Они достаточно большие и рядом есть пятачки (для ремонтников, видимо).

 

PS Horizon Adventure 4 Plus стоит сотню килорублей. Жесть какая...

на MAX не решился припаиваться, у меня очень базовый навык пайки :(  Подключился к входным контактам платы передачи данных.

В атаче дамп, сюдя по всему без помех. Я думаю в такой конфигарации сделать все большие дампы с разнными сценариями.

From_Board_Nothing60s.logicdata

IMG_9978.jpg

12 hours ago, Doka said:

ЗЫЖ из логов надо будет вырезать некий heartbeat СMD - выше было указано, что при обрыве связи девайс переходит в нерабочий режим до восстановления связи и перезагрузки

Да, это повырежу на результирующих файлах в Excel.

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


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

On 4/11/2020 at 11:37 AM, esaulenka said:

UART всегда и везде отправляет первым старший бит.

Я вот тут фигню сказал, а меня никто не поправил. Правильно - в UART первым уходит младший бит. Предлагаю анализатор настроить так же.

Подсчёт CRC, правда, будет по-другому. Как соберёте данные, попробую подобрать алгоритм.

 

1 hour ago, MiD said:

В атаче дамп, сюдя по всему без помех.

Да, стало гораздо лучше.

Channel3 - DE. Когда там единичка, пульт занимает линию, когда ноль - слушает.

Channel5 - приемник, данные с нижней платы

Channel7 - передатчик, данные с пульта.

 

Идея с передачей данных с третьего устройства, скорее всего, потерпит неудачу - пульт отпускает DE очень редко, вероятность коллизий очень высокая.

Можно попробовать пульт вовсе оторвать и "проиграть" в шину последовательность байт с 7-го канала (по возможности, выдерживая паузы).

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


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

Я, сегодня сломал весь мозг себе.

Начал делать дампы, и один из каналов больше не отображается (тот, что был Channel5). Самое интересное, я не трогал ничего со вчерашнего дня там. Перепроверил все провода, спайки, контакты - все сто раз перевоткнул. Нет и всё. А еще понял, что при разных конфигурациях подключния проводов выдает разную картинку на анализаторе. Но "красивый вариант" только такой. В итоге остался DE как я вижу и данные с пульта. Может есть идеи что могло не так пойти или где я туплю.

А второй момент, если во вчерашнем дампе пакеты на Channel7  чередовались один за другим, то сегодня они идут пачками по 8 пакетов одного вида 8 пакетов другого.

Мне кажется что-то опять у меня с подключением не так.

DefaultStartSpeed_NoButtons.logicdata

Treadmill_DefaultSpeed_NoButtons.xlsx

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


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

Дорожка то работает? Может передатчик механической (приводной) части сдох, и не пересылаются ответы по RS485. Этим объясняется и то, что пакеты пересылаются по 8 раз повторно. Центральный контроллер не получает ответ от приводов и повторяет запрос 8 раз. Приводная часть кстати может работать, потому что ее микроконтроллер не знает что передатчик сдох.

Подключитесь снова к шине RS485 и посмотрите там трафик.

Если даже такое произошло, то лечится заменой микросхемы драйвера RS485.

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

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


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

Дорожка работала и работает сейчас. Я вернулся к нормальным измерениям. Как именно я сам до конца не понял. Там контактов больше, чем у меня ножек на анализаторе и, видимо, методом перебора, я достиг дзена. Точно высянил, что 12вольт тоже нужно подать на анализатор с платы иначе чушь получается.

В итоге, как мне кажется я нашел закономерность, но появилось предположение-вопрос.

Я измерял состояния дорожки на разных скоростях без нажатия кнопок. Всегда менялся один пакет из 3-х.

Затем я менял высоту наклона дорожки без нажатия кнопок. Всегда менялся другой пакет из 3-х.

Отсюда я сделал выводы какой пакет отвечает за скорость, а какой за наклон. Что делает "Короткий" пакет, пока не ясно. Возможно он как раз  и есть "пульс"

Я сделал замеры и изменил скорость единовременным нажатием. В логе небыло видно никаких аномалий. Просто начиная с этого места пакет скорости стал другим, соотвевующем пакету именно этой скорости.

Отсюда вопрос. Либо дорожка постоянно шлет на мотор скорость, с какой тот должен работать и нажатие кнопки просто меняет ее и продолжает слать. Либо всё-таки я анализировал не команды от пульта, а ответ о состоянии от силового блока внизу. Пару дампов на всякий случай приложу.

image.thumb.png.27ec6a080430497cd3714f3644e10534.png

Speed08-09OneButtonPress.logicdata

Speed09_NoButtons.logicdata

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


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

Ваши рассуждения верны. Пульт шлет скорость и наклон, для чего еще шлет пакет F9/9F Вам до лампочки, просто шлите его также.
Соответственно для решения задачи Вам нужно примерно с теми же паузами между пакетами слать 3 пакета:
00 FF F1 02 00 (скорость) CRC
00 FF F6 02 00 (наклон) CRC
00 FF F9 00 90 - запрос непонятно чего, скорее всего защита от применения пульта с другими дорожками, потому что в ответе 6-й байт формируется явно по какому-то хитрому алгоритму.
Почему-то относительно ранее присылаемых логов у Вас байты в новых логах развернулись (старший бит стал младшим и наоборот). Но это не принципиально байты развернете как нужно без проблем.

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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