Заголовок сообщения: Что обозначает последовательность битов в DMX512 протоколе?
Добавлено: Пт сен 04, 2015 14:26:59
Родился
Зарегистрирован: Пт сен 04, 2015 14:12:34 Сообщений: 4
Рейтинг сообщения:0
Здравствуйте, уважаемые!
Столкнулся с проблемой сложной, и, наверное, требующей определенного опыта. 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 закрыт
И, честно говоря, даже при наличии у меня поисковых систем я не могу решить поставленную задачу. Если вдруг вы сможете дать какой-то направляющий совет, буду очень рад. С уважением, Noob_forever.
Проблема не сложная, вполне себе решаемая, информации в открытых источниках много. 1. Напишите, какое устройство с каким соединено по этой шине (подозреваю что с одной стороны комп - со второй стороны ничего нет, т.к. протокол только на передачу без квитирования) 2. Сканировалось на компе или в физической линии? Если на компе, то какая программа (название, версия) осуществляла передачу по протоколу DMX512? 3. тот ли порт сканировался? 4. Нужна версия программы-сканера. Найдите не триал версию.
навскидку: 1. DMX512 физически это RS485, логическая часть протокола есть в описании. 2. при сканировании надо все старт и стоп биты не учитывать, у вас при сканировании установлено наличие стоп-бита
Здесь есть ещё одна "подлянка": Не факт, что компьютерный порт RS-232 (с переходником на RS-485) реально удастся сконфигурить на скорость 250000 бит/с. Без этого - любые программы анализа протокола не имеют смысла.
эт точно. Сейчас Putty в связке с монитором помучаю, будет видно...
Есть один момент. Если используется компьютерная программа с адаптером, то, скорее всего будет передача rs232 -> адаптер. Здесь уже будет передача на осмысленной скорости и на этой врезке можно посмотреть.
Сейчас можно только гадать что делал ТС. Пока что, он не ответил на вопросы по программно-аппаратной части. По моему опыту, мне не попадались контроллеры RS-232, (на MB), которым можно было бы установить нестандартную скорость. Лично себе я брал PCI-E плату портов на контроллере MCS9901. Вот у неё можно выставить нестандартную скорость.
дмх тут не при чем, т.к. базируется на другом протоколе, а он еще на третьем а те биты это стандартные биты любого трансивера юарт и для разных протоколов они разные зачем такой гимор - хер знает, раньше особых стандартов не было и каждый клепал как хочет
старт-стоповые биты сигнализируют о начале и конце данных, т.к. юарт имеет только один провод и синхронизируется только за счет заранее известной скорости на обоих концах поэтому там используются импульсы определенной длительности, и эту длительность отмеряет счетчик в самом модуле юарт конкретно для дмх там эта длительность нестандартная и скорость в 250кбит тоже нестандартная, поэтому используют адаптеры
что касается самого дмх, то там передается 512 байт максимум каждый байт несет инфу о яркости одного канала номер байта и есть адрес, а передается число от 0 до 255, типа 255 градаций яркости можно использовать
например у меня есть лента ргб светодиодов и их там 50 штук т.к. цвета у нас 3 и 50 диодов, то 3*50 = 150 каналов света и на каждый можно выставить свою яркость так что если ты правильно настроеш сниффер, то увидиш просто кучу цифр
_________________ тематические ответы только в форуме, в приват не пишите
....что касается самого дмх, то там передается 512 байт максимум... ....типа 255 градаций яркости можно использовать....
Не надо так шутить. Неужели вам не попадались световые приборы, которые после 512-го адреса (байта) занимают ещё пару десятков байт для своих параметров? Да и значения параметров, очень часто, уже передаются в два байта... Почти все (современные) световые пульты могут работать с адресацией до 1024. Я уже не говорю про системы, где пульт может получать полную информацию о световых приборах (серийник, имя, состояние и т.д.). Ушли те времена, когда DMX-512 ограничивался только односторонней передачей данных и 512-ью байтами в посылке... /Обычно, в документации на такие системы пишут "DMX-512 Compatible"/......
Заголовок сообщения: Re: Что обозначает последовательность битов в DMX512 протоко
Добавлено: Сб сен 05, 2015 11:11:29
Родился
Зарегистрирован: Пт сен 04, 2015 14:12:34 Сообщений: 4
Рейтинг сообщения:0
Шурики писал(а):
Проблема не сложная, вполне себе решаемая, информации в открытых источниках много. 1. Напишите, какое устройство с каким соединено по этой шине (подозреваю что с одной стороны комп - со второй стороны ничего нет, т.к. протокол только на передачу без квитирования) 2. Сканировалось на компе или в физической линии? Если на компе, то какая программа (название, версия) осуществляла передачу по протоколу DMX512? 3. тот ли порт сканировался? 4. Нужна версия программы-сканера. Найдите не триал версию.
навскидку: 1. DMX512 физически это RS485, логическая часть протокола есть в описании. 2. при сканировании надо все старт и стоп биты не учитывать, у вас при сканировании установлено наличие стоп-бита
1. Соединен ПК и Rainbowduino 2. Сканировалось с помощью программы, в стартовом посту написано, какой именно. Программа контроллер Jinx! Версию сейчас, к сожалению, добыть не смогу. 3. Порт сканировался 100% тот, что нужен. 4. С версией программы сканера тоже напряги, т.к. я ненадолго уехал с места работы. Подскажите, пожалуйста, что именно вы хотите найти в описаниях программ? Алгоритм считывания\отправления?
Классический DMX-512 представляет собой UART, дополненный состоянием BREAK, немного нестандартным для "обычного" UART'а. Скорость линии - 250 кБод, mark-after-break + стартовый бит, восемь бит данных, два стоповых бита, физический уровень - RS-485. Я как-то раз делал DMX-диммер.
Ведущий в цикле передает посылку из 516 байт.
Первый байт - тип посылки. В 99% случаев - ноль, означающий данные для диммеров. Дальше идут данные, соответствующие последовательным адресам. Ведомое устройство читает сколько ему надо байт, начиная с байта N, где N - стартовый адрес устройства, и интерпретирует их как хочет. Вот, тут даже с анимацией показано, как все происходит.
Цитата:
Мне необходимо понять, что обозначает каждый бит (и их последовательность) в протоколе передачи информации DMX512, хорошо подходящего для систем управления светом. ... Соединен ПК и Rainbowduino
В свете сказанного, берите документацию на Rainbowduino и смотрите, как она интерпретирует данные по своим каналам. Это и будет то, что вас интересует. Другое устройство будет интерпретировать данные по-своему, единого стандарта на это нет.
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
...Мне необходимо понять, что обозначает каждый бит (и их последовательность)...
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?
Заголовок сообщения: Re: Что обозначает последовательность битов в DMX512 протоко
Добавлено: Пн сен 07, 2015 04:24:28
Родился
Зарегистрирован: Пт сен 04, 2015 14:12:34 Сообщений: 4
Рейтинг сообщения:0
Вообще говоря, для исполнения моих замыслов не обязательно использовать именно DMX512. Просто в программах-контроллерах есть возможность выбрать тип Output device'a. Там есть DMX, Art-net, tpm2, tpm2-net, glediator от solderlab, и так далее. При выборе любого протокола данные на плату идут, но что с ними делать, контроллер не знает. Поэтому я и хотел разобраться с тем, что именно и в каком порядке шлет Jinx! чтобы попробовать как-то это контроллеру объяснить...
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения