Что обозначает последовательность битов в DMX512 протоколе?

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Родился
Сообщения: 4
Зарегистрирован: Пт сен 04, 2015 14:12:34

Сообщение Noob_forever »

Здравствуйте, уважаемые!


Столкнулся с проблемой сложной, и, наверное, требующей определенного опыта. Google, Yandex, Bing и иже с ними уже не помощники в силу недостаточности моих познаний, поэтому решил пойти на форумы, к людям. Поиск по тегу DMX ничего, меня интересующего, не выдал, посему я здесь и создаю эту тему.
Мне необходимо понять, что обозначает каждый бит (и их последовательность) в протоколе передачи информации DMX512, хорошо подходящего для систем управления светом. Собственно, сейчас я расскажу, что уже накопал, но с чем не до конца разобрался.
Вот кусок информации, полученной сканированием Последовательного (COM) порта (получено с помощью программы Advanced Serial Port Monitor).
Спойлер<20150904174716.768 SYS>
COM открыт
<20150904174716.768 SYS>
Скорость передачи 250000
<20150904174716.768 SYS>
RTS включен
<20150904174716.768 SYS>
DTR включен
<20150904174716.769 SYS>
Биты данных=8, Стоповые биты=1, Четность=None
<20150904174716.769 SYS>
Служ. символы: Eof=0x00, Error=0x00, Break=0x00, Event=0x00, Xon=0x11, Xoff=0x13
<20150904174716.769 SYS>
Контроль передачи: ControlHandShake=(DTR_CONTROL), Замена=(TRANSMIT_TOGGLE, RTS_CONTROL), Лимит Xon=2048, Лимит Xoff=512
<20150904174716.769 SYS>
Таймауты: ReadInterval=-1, ReadTotalTimeoutMultiplier=0, ReadTotalTimeoutConstant=0, WriteTotalTimeoutMultiplier=0, WriteTotalTimeoutConstant=0
<20150904174716.796 TX>
9591 bytes trial version limit
<20150904174716.837 TX>
9591 bytes trial version limit
<20150904174716.876 TX>
9591 bytes trial version limit
<20150904174716.917 TX>
9591 bytes trial version limit
<20150904174716.957 TX>
9591 bytes trial version limit
<20150904174716.997 TX>
9591 bytes trial version limit
<20150904174717.037 TX>
9591 bytes trial version limit
<20150904174717.077 TX>
9591 bytes trial version limit
<20150904174717.117 TX>
9591 bytes trial version limit
<20150904174717.157 TX>
9591 bytes trial version limit
<20150904174717.197 TX>
9591 bytes trial version limit
<20150904174717.237 TX>
9591 bytes trial version limit
<20150904174717.277 TX>
9591 bytes trial version limit
<20150904174717.316 TX>
9591 bytes trial version limit
<20150904174717.356 TX>
9591 bytes trial version limit
<20150904174717.397 TX>
9591 bytes trial version limit
<20150904174717.436 TX>
9591 bytes trial version limit
<20150904174717.477 TX>
9591 bytes trial version limit
<20150904174717.517 TX>
9591 bytes trial version limit
<20150904174717.557 TX>
9591 bytes trial version limit
<20150904174717.596 TX>
9591 bytes trial version limit
<20150904174717.636 TX>
9591 bytes trial version limit
<20150904174717.676 TX>
9591 bytes trial version limit
<20150904174717.716 TX>
9591 bytes trial version limit
<20150904174717.756 TX>
9591 bytes trial version limit
<20150904174717.796 TX>
9591 bytes trial version limit
<20150904174717.836 TX>
9591 bytes trial version limit
<20150904174717.876 TX>
9591 bytes trial version limit
<20150904174717.916 TX>
9591 bytes trial version limit
<20150904174717.957 TX>
9591 bytes trial version limit
<20150904174717.996 TX>
9591 bytes trial version limit
<20150904174718.036 TX>
9591 bytes trial version limit
<20150904174718.076 TX>
9591 bytes trial version limit
<20150904174718.117 TX>
9591 bytes trial version limit
<20150904174718.157 TX>
9591 bytes trial version limit
<20150904174718.196 TX>
9591 bytes trial version limit
<20150904174718.237 TX>
9591 bytes trial version limit
<20150904174718.277 TX>
9591 bytes trial version limit
<20150904174718.317 TX>
9591 bytes trial version limit
<20150904174718.357 TX>
9591 bytes trial version limit
<20150904174718.397 TX>
9591 bytes trial version limit
<20150904174718.437 TX>
9591 bytes trial version limit
<20150904174718.477 TX>
9591 bytes trial version limit
<20150904174718.517 TX>
9591 bytes trial version limit
<20150904174718.556 TX>
9591 bytes trial version limit
<20150904174718.597 TX>
9591 bytes trial version limit
<20150904174718.637 TX>
9591 bytes trial version limit
<20150904174718.677 TX>
9591 bytes trial version limit
<20150904174718.717 TX>
9591 bytes trial version limit
<20150904174718.757 TX>
9591 bytes trial version limit
<20150904174718.796 TX>
9591 bytes trial version limit
<20150904174718.837 TX>
9591 bytes trial version limit
<20150904174718.877 TX>
9591 bytes trial version limit
<20150904174718.916 TX>
9591 bytes trial version limit
<20150904174718.956 TX>
9591 bytes trial version limit
<20150904174718.997 TX>
9591 bytes trial version limit
<20150904174719.008 TX>
9591 bytes trial version limit
<20150904174719.108 TX>
9591 bytes trial version limit
<20150904174719.311 SYS>
COM закрыт
А также http://ros-spb.ru/catalog/Telecom/statii/dmx-512/

И, честно говоря, даже при наличии у меня поисковых систем я не могу решить поставленную задачу.
Если вдруг вы сможете дать какой-то направляющий совет, буду очень рад.
С уважением, Noob_forever.
Реклама
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

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

навскидку:
1. DMX512 физически это RS485, логическая часть протокола есть в описании.
2. при сканировании надо все старт и стоп биты не учитывать, у вас при сканировании установлено наличие стоп-бита
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

Здесь есть ещё одна "подлянка":
Не факт, что компьютерный порт RS-232 (с переходником на RS-485) реально удастся сконфигурить на скорость 250000 бит/с.
Без этого - любые программы анализа протокола не имеют смысла.
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

эт точно. Сейчас Putty в связке с монитором помучаю, будет видно...

Есть один момент. Если используется компьютерная программа с адаптером, то, скорее всего будет передача rs232 -> адаптер. Здесь уже будет передача на осмысленной скорости и на этой врезке можно посмотреть.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

Сейчас можно только гадать что делал ТС.
Пока что, он не ответил на вопросы по программно-аппаратной части.
По моему опыту, мне не попадались контроллеры RS-232, (на MB), которым можно было бы установить нестандартную скорость.
Лично себе я брал PCI-E плату портов на контроллере MCS9901.
Вот у неё можно выставить нестандартную скорость.
Реклама
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

Опять же согласен, поэтому нужен ответ ТС. Или можно вклиниться программно, или сниффер городить...
Реклама
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

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

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

что касается самого дмх, то там передается 512 байт максимум
каждый байт несет инфу о яркости одного канала
номер байта и есть адрес, а передается число от 0 до 255, типа 255 градаций яркости можно использовать

например у меня есть лента ргб светодиодов и их там 50 штук
т.к. цвета у нас 3 и 50 диодов, то 3*50 = 150 каналов света и на каждый можно выставить свою яркость
так что если ты правильно настроеш сниффер, то увидиш просто кучу цифр
тематические ответы только в форуме, в приват не пишите
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

kalobyte писал(а):....что касается самого дмх, то там передается 512 байт максимум...
....типа 255 градаций яркости можно использовать....
Не надо так шутить. :)
Неужели вам не попадались световые приборы, которые после 512-го адреса (байта) занимают ещё пару десятков байт для своих параметров?
Да и значения параметров, очень часто, уже передаются в два байта...
Почти все (современные) световые пульты могут работать с адресацией до 1024.
Я уже не говорю про системы, где пульт может получать полную информацию о световых приборах (серийник, имя, состояние и т.д.).
Ушли те времена, когда DMX-512 ограничивался только односторонней передачей данных и 512-ью байтами в посылке...
/Обычно, в документации на такие системы пишут "DMX-512 Compatible"/......
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

это уже идут расширения протокола, вплоть до 2х сторонней передачи и передачи по сети
я тоже знаю много умных вещей и словей 8)
тематические ответы только в форуме, в приват не пишите
Родился
Сообщения: 4
Зарегистрирован: Пт сен 04, 2015 14:12:34

Сообщение Noob_forever »

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

навскидку:
1. DMX512 физически это RS485, логическая часть протокола есть в описании.
2. при сканировании надо все старт и стоп биты не учитывать, у вас при сканировании установлено наличие стоп-бита
1. Соединен ПК и Rainbowduino
2. Сканировалось с помощью программы, в стартовом посту написано, какой именно. Программа контроллер Jinx! Версию сейчас, к сожалению, добыть не смогу.
3. Порт сканировался 100% тот, что нужен.
4. С версией программы сканера тоже напряги, т.к. я ненадолго уехал с места работы.
Подскажите, пожалуйста, что именно вы хотите найти в описаниях программ? Алгоритм считывания\отправления?
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Почти все (современные) световые пульты могут работать с адресацией до 1024.
Это уже все расширения, а иногда и раскидывание по разным физическим каналам. Есть такое понятие, как "вселенная DMX" - 512 individual device addresses available per universe.

Классический DMX-512 представляет собой UART, дополненный состоянием BREAK, немного нестандартным для "обычного" UART'а. Скорость линии - 250 кБод, mark-after-break + стартовый бит, восемь бит данных, два стоповых бита, физический уровень - RS-485. Я как-то раз делал DMX-диммер. :)

Ведущий в цикле передает посылку из 516 байт.

Первый байт - тип посылки. В 99% случаев - ноль, означающий данные для диммеров. Дальше идут данные, соответствующие последовательным адресам. Ведомое устройство читает сколько ему надо байт, начиная с байта N, где N - стартовый адрес устройства, и интерпретирует их как хочет. Вот, тут даже с анимацией показано, как все происходит.
Мне необходимо понять, что обозначает каждый бит (и их последовательность) в протоколе передачи информации DMX512, хорошо подходящего для систем управления светом. ... Соединен ПК и Rainbowduino
В свете сказанного, берите документацию на Rainbowduino и смотрите, как она интерпретирует данные по своим каналам. Это и будет то, что вас интересует. Другое устройство будет интерпретировать данные по-своему, единого стандарта на это нет.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

Noob_forever писал(а):...Мне необходимо понять, что обозначает каждый бит (и их последовательность)...
COM открыт //событие
<20150904174716.768 SYS> //20150904 - дата 04,09,2015 174716 - время; 17:47:17.768 в миллисекундах; SYS - признак системного сообщения
Скорость передачи 250000
...
...
9591 bytes trial version limit //напоминание о пробной версии о её ограничениях
<20150904174716.796 TX> //то же самое дата время и TX - признак передачи
9591 bytes trial version limit
<20150904174716.837 TX>
...
...
<20150904174719.311 SYS> //здесь уже понятно
COM закрыт //закрыли порт

спешу обрадовать, в этом куске нет никаких данных. Лучше просматривать данные в режиме HEX, там будет видно всё. Интересует подсвеченное желтым. Или сохранить в файл протокол обмена.
Изображение

Далее, программа Advansed как там её, перехватывает на уровне драйвера. Поэтому программа-инициатор передачи, при указании параметров порта пишет все свои хотелки, которые монитор и мониторит. Т.е. отобразит любую лабуду, любые скорости обмена. В связке PUTTY - монитор выставлял произвольные скорости: и 250000 и 9000 и 9001 и всё это видел в мониторе. как реально ведет себя физическое устройство, пока не смотрел, но по кольцу возвращает значения в терминал.

Если используется Rainbowduino - то это клон Arduino с ATMega168/328 + FT232RL. Это к тому, что чудес не бывает данные к Rainbowduino должны идти в нормальном виде.
Это был раз.

Два:
Noob_forever писал(а):Подскажите, пожалуйста, что именно вы хотите найти в описаниях программ? Алгоритм считывания\отправления?
Возник один странный вопрос: как этот Rainbowduino подключен к компу? не обычным ли USB шнуром? И что, на словах, представляет из себя всё устройство целиком. Где было в устройстве указано DMX512?
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

скорей всего обычный шнурок и юарт, а контроллер упавляет светодиодами
я так и делал без рс485
трансивер меги может работать на 250кбит
тематические ответы только в форуме, в приват не пишите
Родился
Сообщения: 4
Зарегистрирован: Пт сен 04, 2015 14:12:34

Сообщение Noob_forever »

Вообще говоря, для исполнения моих замыслов не обязательно использовать именно DMX512. Просто в программах-контроллерах есть возможность выбрать тип Output device'a. Там есть DMX, Art-net, tpm2, tpm2-net, glediator от solderlab, и так далее. При выборе любого протокола данные на плату идут, но что с ними делать, контроллер не знает. Поэтому я и хотел разобраться с тем, что именно и в каком порядке шлет Jinx! чтобы попробовать как-то это контроллеру объяснить...
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

Ну тогда вот мануал на Jinx! и сама программа.

http://www.live-leds.de/downloads/
Поддерживаемые протоколы на странице 23.

Там есть протокол, например, MiniDMX. Находим пример реализации устройства с разжёвыванием.
http://www.dzionsko.de/index.php?n=MiniDMX.Startseite

Ну как-то так...
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

Noob_forever писал(а): При выборе любого протокола данные на плату идут, но что с ними делать, контроллер не знает.
естественно, нужно же понимать, что ожидает твоя плата на входе
http://www.seeedstudio.com/wiki/Rainbowduino_v3.0

это просто контроллер со светодиодами, там нет никакой прошивки по дефолту и подразумевается, что ты сам пишеш
:facepalm:
тематические ответы только в форуме, в приват не пишите
Родился
Сообщения: 4
Зарегистрирован: Пт сен 04, 2015 14:12:34

Сообщение Noob_forever »

kalobyte писал(а):там нет никакой прошивки по дефолту и подразумевается, что ты сам пишеш
:facepalm:
Noob_forever писал(а):Поэтому я и хотел разобраться с тем, что именно и в каком порядке шлет Jinx! чтобы попробовать как-то это контроллеру объяснить...
Спасибо за ценный комментарий
Ответить

Вернуться в «Интеграция с ПК»