Последовательный коммуникационный протокол DPM
(Dilbertian протокол изменения)
Обратите внимание на имя протокола
Имя “Dilbertiano” приходит от первой версии этого протокола, Мы назвали “ВПЛ Перевернутый Dilbertian протокол” (2010), где были представлены нулей с ячейкой “закрыть” и с ячейкой “большие” (“0” тощий и “1” жир – согласно следующим виньетка приходит от “Дилберт” от Scott Adams – www.Dilbert.com).
Потому что новый протокол ?
Theremino система призвана обеспечить простой системы ввода-вывода для ПК, дешевый и простой в использовании. Сделать это легко для использования автоматической нумерации необходимы и признание их типов, для упрощения и сведения к минимуму стоимости ссылки необходимо общаться на проволоку только.
Существует аналогичный протокол, мы должны были написать его. Текущая версия собирает лучших многих лет экспериментов и исследований.
Скачать документ в формате PDF:
DPM_Protocol_2015_ENG.PDF
DPM_Protocol_2015_ITA.PDF
Особенности
- Двунаправленный последовательный на одного провода.
- Автоматическая настройка.
- Автоматическое обнаружение подключенных устройств.
- Количество устройств, начиная от 1 в 200.
- Количество байтов, отправленных и полученных варьируется в зависимости от типа устройства.
- Скорость передачи данных до 4 Мегабит/сек для передачи большого объема данных с короткие кабели.
- Скорость передачи данных до 100 Килобит/сек для длинных кабелей (до 10 Км).
- Высокая эффективность коммуникации (От 10 в 20 раза больше, чем может).
Электрические ставни
Передача происходит на одного провода, но вам нужна ссылка массы и напряжения питания, туда, где провода обычно три.
Любое устройство, которое поддерживает DPM должен иметь входной разъем (Мастер) и один выход на выходе устройства (Рабы)
Обычно используются разъемы 3 Поли, с интервалов 2.54 мм.
На связи цепь должна иметь мастер (обеспечение питания и времени) и количество устройств, подключенных в каскад (под названием Slave).
Напряжение, что мастер предоставляет на линии 5 V, с же толерантности и же максимальный ток 5 V что снятие разъема USB.
Максимальный ток, который может предоставить мастер ограничивает количество и тип устройств, которые могут быть подключены. Этот ток, обычно 250 но, и может быть увеличена до 500 но. Идя над ним будет превышать емкости USB ’ и будет налагать необычных особенностей к разъемам.
Максимальное количество подключаемых устройств ограничен следующими факторами:
– Максимальный ток, “Мастер” может обеспечить.
– Максимальное количество байтов, которые линия несет в время цикла риса-передачи.
Оба “Мастер” что “Раб” подключены к линии с демпфирующих резисторов, Он также действует как низких частот, Защита радио помех и перенапряжения. Этот резистор обычно значение от 33 в 330 ом
Формат вещания
Используя формат номера-возвращение к нулю (NRZ) стандарт.
Формат по умолчанию = 8, N, 1
– 1 Начало немного
– 8 биты данных
– No-Parity
– 1 стоповый бит
Уровни данных линии “Линия com.”
Линии в сторону его на уровень вверх (3.3 V)
Сигнал “1” обозначается 3.3 V
Сигнал “0” обозначается 0 V
Повтор раз и пропускная способность
Скорость передачи данных
Использование низких скоростях когда длина, и поэтому возможности подключения кабелей, высоки. Когда расстояния короткие и высокие скорости может использоваться для взаимодействия с большим числом устройств (или взаимодействовать с устройствами, которые требуют большое количество байтов) Установленным именованным скорости от “1” (1 k бит/сек) до “12” (4 мега бит в секунду)
Максимальное количество байтов
В зависимости от скорости максимальное количество байтов, которые могут быть переданы перечислены в следующей таблице.
Раз, расстояние и количество байтов
Скорость
|
время
|
бит
для
второй
|
Байт
Каждый 15MS |
Байт каждый
30MS |
Максимальное расстояние
|
Максимальная емкость
|
Рабы
Макс.
номер
|
1
|
1 MS
|
1K
|
1
|
3
|
10 Км
|
1 UF
|
3
|
2
|
500 нас
|
2K
|
3
|
6
|
5 Км
|
500 NF
|
6
|
3
|
200 нас
|
5K
|
4
|
8
|
2 Км
|
200 NF
|
15
|
4
|
100 нас
|
10K
|
15
|
30
|
1 Км
|
100 NF
|
30
|
5
|
50 нас
|
20K
|
30
|
60
|
500 m
|
50 NF
|
60
|
6
|
20 нас
|
50K
|
40
|
80
|
200 m
|
20 NF
|
150
|
7
|
10 нас
|
100K
|
150
|
300
|
100 m
|
10 NF
|
160
|
8
|
5 нас
|
200K
|
300
|
600
|
50 m
|
5 NF
|
80
|
9
|
2 нас
|
500K
|
400
|
800
|
20 m
|
2 NF
|
32
|
10
|
1 нас
|
1M
|
1500
|
3000
|
10 m
|
1 NF
|
16
|
11
|
500 NS
|
2M
|
3000
|
6000
|
5 m
|
500 PF
|
8
|
12
|
250_nS
|
4M
|
6000
|
12000
|
2.5 m
|
250 PF
|
4
|
Все устройства должны реализовать по крайней мере скорость “7” что считается скорость по умолчанию. Если вы хотите задать различные скорость от “7” все устройства в цепочке должны поддерживать его.
В “Максимальное расстояние” зависит от характеристик кабелей, значения таблицы вычисляются для экранированного кабеля RG58 от 50 ом с возможностью 100pF на метр.
При низких скоростях количество “рабы” ограничено максимальное количество байтов, которое может быть передано в 30 миллисекунд. (каждый раб использует по крайней мере один байт и вы утверждаете повторения достаточно быстро сделать жидкости движений)
На высокой скорости, количество “рабы” ограничивается максимальная вместимость, Каждый “раб” Добавляет мощностью приблизительно 40..60 PF и уменьшает максимальное расстояние приблизительно 50 см.
Емкость была рассчитана на основе 30pF за “раб” плюс другие 20pF соединительный кабель от 20 см и другие 10pF принять во внимание дополнительные сопротивления “двусторонним выключатель” (Итого: 60PF)
Максимальная длина кабеля связи чем ток и сопротивления на метр
Кабель Тип —>
Максимальный ток
( пиковый ток )
|
H1500/H1000/H500/H155/КАБЕЛЬ RG11
20 ом Милли
или меньше
за метр
|
RG58 /RG59U / H155 /
NET Кабели
о
50 ом Милли
за метр
|
Кабель Rg59/RG6 /Телефон витой провод /
NET Кабели
о
100 ом Милли
за метр
|
10 но | 1 Км | 400 m | 200 m |
20 но | 500 m | 200 m | 100 m |
50 но | 200 m | 80 m | 40 m |
80 но | 125 m | 50 m | 25 m |
100 но | 100 m | 40 m | 20 m |
200 но | 50 m | 20 m | 10 m |
400 но | 25 m | 10 m | 5 m |
500 но | 20 m | 8 m | 4 m |
800 но | 12.5 m | 5 m | 2.5 m |
1 В | 10 m | 4 m | 2 m |
При расчете расстояния мы принимаем во внимание, что падение напряжения на земле, не превышает 200 MV. Падение напряжения на кабеле питания, не вызывает ошибок передачи, Она также может быть значительно выше (в 5 V может опускаться вниз до 3.3 V без создания проблем) В случае экранированных кабелей на земле является экран, которая, как правило, имеет меньшее сопротивление, чем объявленные, так что расстояние будет больше.
Емкость кабеля
Значения “Максимальная длина” указано в приведенной выше таблице действительны только для присоединения кабеля с мощностью около 100 PF на метр. В следующей таблице перечислены исправления для применяться для наиболее часто используемых кабелей.
Кабель
|
Внешние
Диаметр
( мм )
|
Импеданс
( ом )
|
Емкость
(pF/МТ.)
|
Сопротивление
(milliohm
/ метр)
|
Макс длина корректор
|
H1500
|
15
|
50
|
80
|
4
|
x 1.25
|
H1000
|
10.3
|
50
|
80
|
11
|
x 1.25
|
RG213
|
10.3
|
50
|
100
|
|
–
|
H500
|
9.8
|
50
|
82
|
15
|
x 1.22
|
H155
|
5.8
|
50
|
82
|
32
|
x 1.22
|
RG8
|
10
|
52
|
90
|
|
–
|
КАБЕЛЬ RG11 (ТЕЛЕВИЗОР)
|
10.3
|
75
|
60
|
21
|
x 1.7
|
КАБЕЛЬ RG59 (ТЕЛЕВИЗОР)
|
6.15
|
75
|
67
|
159
|
x 1.5
|
RG6_(TVsat)
|
6.8
|
75
|
51
|
100
|
x 2.0
|
RG56/в _(ТЕЛЕВИЗОР)
|
6.9
|
75
|
53
|
|
x 2.0
|
_ RG59/U(ТЕЛЕВИЗОР)
|
4.5
|
75
|
53
|
45
|
x 2.0
|
RG58
|
5.2
|
50
|
100
|
53
|
–
|
RG142
|
4.95
|
50
|
96
|
|
–
|
RG174
|
2.8
|
50
|
100
|
|
–
|
RG178
|
1.85
|
50
|
95
|
|
–
|
RG179
|
2.55
|
75
|
64
|
|
x 1.5
|
RG187
|
2.7
|
75
|
65
|
|
x 1.5
|
RG188
|
2.7
|
50
|
95
|
|
–
|
RG196
|
1.9
|
50
|
93
|
|
–
|
RG316
|
2.5
|
50
|
95
|
|
–
|
Сетевой кабель
|
|
|
мин 50
Макс. 130
|
мин 60
Макс. 200
|
x 2.0
x 0.7
|
PC аудио кабель
|
|
|
мин 120
Макс. 300
|
мин 500
Макс. 3000
|
x 0.8
x 0.5
|
Микрофонной
кабель
|
|
|
мин 60
Макс. 300
|
|
x 1.7
x 0.3
|
Телефонные витые провода
|
|
|
50
|
100
|
x 2.0
|
Есть также кабели малой емкости (мало используется и трудно найти):
- Rg62 – 93 ом – 44 PF/mt
- RG71 – 93 ом – 44 PF/mt
- Rg210 – 93 ом – 44 PF/mt
- RG63 – 125 ом – 33PF/mt
- RG114 – 185 ом – 27PF/mt
Мера способности неизвестного кабеля:
- Подготовить идеальный шкуры экранированного кабеля и сохраняя изолированные центральной стренге.
- Измерения между Центральной и внешний щит с метр или измерителя.
- Для повышения точности измерения, использовать пять или десять метров кабеля.
- Разделите значение измеряется количество метров кабеля Picofarads.
Типы устройств
Устройства помечены с числом от 0 в 199 определение ее «тип».
На этапе признания и нумерация каждого устройства идентифицирует себя с этим «Тип».
В настоящее время определены следующие устройства:
Тип устройства
|
Скорость
мин
|
Макс скорость
|
В из булавки
|
Мощность
|
Имя
|
0
|
Специальные “пользовательские” Тип
|
||||
1
|
1
|
12
|
1
|
12 но
|
Емкостный датчик
Привет качество
|
2
|
1
|
12
|
10
|
InOut сервопривода
|
|
3
|
1
|
12
|
12
|
InOut универсальный
|
|
4
|
1
|
12
|
12
|
InOut
|
|
5
|
6
|
Виртуальный Мастер ПИН
(Первая версия) |
|||
8
|
10
|
Виртуальный Мастер ПИН – V2
|
|||
9 | 12 | Виртуальный Мастер ПИН – V4 | |||
255 | Неизвестно |
Максимальное количество устройств
Ограничено максимальное количество подключаемых устройств:
– Максимальное количество байтов, которые могут быть переданы в зависимости от выбранной скорости.
– максимальный ток, который может обеспечить «мастер» (обычно 500 но)
– Максимальное количество устройств, поддерживаемых протоколом 200 (От 0 в 199)
Типы ПИН
Контакты помечены с числом от 0 в 255 определение ее «PinType».
Типы вывода Pin
Закрепление вывода
Тип
|
Имя
|
Мастер подчиненных
байт
|
Раб мастер
байт
|
0
|
НЕИСПОЛЬЗУЕМЫЕ
|
0
|
0
|
1
|
DIG_OUT
|
1
|
0
|
2
|
PWM_8
|
1
|
0
|
3
|
PWM_16
|
2
|
0
|
4
|
SERVO_8
|
1
|
0
|
5
|
SERVO_16
|
2
|
0
|
6 | СТЕППЕР | 4 | 0 |
7 | PWM_FAST | 5 | 0 |
Типы ввода ПИН-кода
Закрепление ввода
Тип
|
Имя
|
Мастер подчиненных
байт
|
Раб мастер
байт
|
129
|
DIG_IN
|
0
|
1
|
130
|
DIG_IN_PU
|
0
|
1
|
131
|
ADC_8
|
0
|
1
|
132
|
ADC_16
|
0
|
2
|
133
|
CAP_8
|
0
|
1
|
134
|
CAP_16
|
0
|
2
|
135
|
RES_8
|
0
|
1
|
136
|
RES_16
|
0
|
2
|
140
|
СЧЕТЧИК
|
0
|
2
|
141
|
COUNTER_PU
|
0
|
2
|
142
|
FAST_COUNTER
|
0
|
2
|
143
|
FAST_COUNTER_PU
|
0
|
2
|
144
|
ПЕРИОД
|
0
|
4
|
145
|
PERIOD_PU
|
0
|
4
|
146
|
SLOW_PERIOD
|
0
|
4
|
147
|
SLOW_PERIOD_PU
|
0
|
4
|
150
|
USOUND_SENSOR
|
0
|
2
|
160
|
CAP_SENSOR
|
0
|
3
|
165
|
STEPPER_DIR
|
0
|
4
|
180
|
ENCODER_A
|
0
|
2
|
181
|
ENCODER_A_PU
|
0
|
2
|
182
|
ENCODER_B
|
0
|
0
|
183
|
ENCODER_B_PU
|
0
|
0
|
175
|
ADC_24
|
0
|
1
|
176
|
ADC_24_DIN
|
0
|
0
|
177
|
ADC_24_DOUT
|
0
|
0
|
Связь между мастером и рабов (последовательный порт)
Первый байт | Тип передачи | Передача | Получение |
255 (*4) | Специальный расширенный (для будущего расширения) |
1 байт (расширение) >>>>> Таблица расширенного глаголов <<<<< |
— |
254 (*1) | RecogStart Раннее распознавание и нумерация |
1 байт (число байтов данных = 0) 1 байт (CRC Cmd / 0) |
— |
253 (*2) | Распознавания Введите порядковый номер и запрос типа |
1 байт (число байтов данных = 1) 1 байт (От 0 в 199) 1 байт (CRC/тип Cmd Nbytes) |
1 байт ( Тип ) 1 байт ( CRC ) |
251 (*3) | FastDataExchange Обмен данных. |
1 байт (число байтов данных = 0) 1 байт (CRC Cmd/0) От 0 в 60 байт данных |
От 0 в 63 байт данных |
249 (*4) | SetupSlavePins Введите параметры для один контакт “раб” |
1 байт (Индекс раб) 1 байт (количество байтов данных) NN байт (PinTypes: 1 байтов на PIN-код) 1 байт (CRC Cmd/SlaveId/и т.д...) |
1 байт (Индекс раб) 1 байт (CRC на байт Предыдущий) |
248 (*4) | SetMasterName Введите имя “Мастер” |
NN байт (символов имени прекращается на ноль) | — |
247 (*4) | GetMasterName Чтение имя “Мастер” |
— | NN байт (Персонажи имя, завершенной на ноль) |
246 (*4) | SendValuesToSlave Отправка “n” байт раб “m” (Макс. 56 байт) |
1 байт (Индекс раб) 1 байт (количество байтов) байт 1 . . . n байт 1 байт (CRC Cmd/SlaveId/nBytes/n) |
1 байт (Индекс раб) 1 байт (CRC на байт Предыдущий) |
245 (*4) | GetValuesFromSlave Запрос “n” байт для раб “m” (Макс. 56 байт) |
1 байт (Индекс раб) 1 байт (количество байтов) 1 байт (CRC Cmd/SlaveId/nBytes) |
байт1 . . n байт 1 байт (Индекс раб) 1 байт (CRC на n + 1 предыдущие байт) |
244 (*4) | SendBytesToSlave Отправка “n” байт для раб “m” (Макс. 56 байт) |
1 байт (Индекс раб) 1 байт (количество байтов) байт 1 . . . n байт 1 байт (CRC Cmd/SlaveId/nBytes/n) |
1 байт ( Индекс раб ) 1 байт ( CRC ) на байт Предыдущий |
243 (*4) | GetBytesFromSlave Запрос “n” байт для раб “m” (Макс. 56 байт) |
1 байт (Индекс раб) 1 байт (количество байтов) 1 байт (CRC Cmd/SlaveId/nBytes) |
байт 1 . . . n байт 1 байт (Индекс раб) 1 байт ( CRC ) о n + 1 предыдущие байт |
199 (*5) | SetSpeed | 1 байт (COMM. Скорость) 1 байт (CRC на скорости Cmd/Comm.) |
— |
0 | Никаких действий |
(*1) Сервис-команды.
(*2) Команда используется только мастер и рабы распознавания при распознавании.
(*3) Быстрая связь – Мастер обменивает значения всех рабов, используя только один USB обмен
(*4) Команды связи на одного раба
(*5) Специальные команды
SendValuesToSlave отправляет значения выходного контакта раба (Физические формы на Master или виртуальный рабов)
GetValuesFromSlave считывает значения из ввода Pin раба (Физические формы на Master или виртуальный рабов)
SendBytesToSlave отправить общий байт (Пример конфигурации), на пути к раб (Физические формы на Master или виртуальный рабов)
GetBytesFromSlave универсальный закон байт (Например, государства), с рабом (Физические формы на Master или виртуальный рабов)
Все команды имеют коды 200 в 255, для предотвращения, в случае ошибки, Идентификаторы и типы раб (От 0 в 199) может быть истолковано как команда. (Setspeed не рассчитывать, потому что он никогда не отправляется вниз по последовательной линии, но только ’ Хэл, Мастер, через USB)
Связь между компьютером и мастер (USB)
Comandi da “Хост” Версо “Мастер”
Имя команды | ID USB_TxData[0] |
ПАРАМЕТРЫ USB_TxData[1 до n] |
RecogStart | Идентификатор CommandID, | Nbytes |
FastDataExchange | Идентификатор CommandID, | От 0 Кому 60 байт данных |
SetupSlavePins | Идентификатор CommandID, | SlaveId, Nbytes |
SetMasterName | Идентификатор CommandID, | MasterName (нулевой прекращено) |
GetMasterName | Идентификатор CommandID, | – |
SendValuesToSlave | Идентификатор CommandID, | SlaveId, Nbytes, Байт1….Бытень |
GetValuesFromSlave | Идентификатор CommandID, | SlaveId, Nbytes |
SendBytesToSlave | Идентификатор CommandID, | SlaveId, Nbytes, Байт1….Бытень |
GetBytesFromSlave | Идентификатор CommandID, | SlaveId, Nbytes |
SetSpeed | Идентификатор CommandID, | CommSpeed |
Risposte да “Мастер” Версо “Хост”
Имя команды | ОТВЕТ USB_RxData[0] |
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ USB_RxData[1 до n] |
RecogStart | 0 = ОК | Nslaves, Type1 раб … Раб типа N |
FastDataExchange | 0 = ОК | От 0 Кому 63 байт данных |
SetupSlavePins | 0 = ОК | – |
SetMasterName | 0 = ОК | – |
GetMasterName | 0 = ОК | Название Мастер (нулевой прекращено) |
SendValuesToSlave | 0 = ОК | – |
GetValuesFromSlave | 0 = ОК | Байт 1 … Байт N |
SendBytesToSlave | 0 = ОК | – |
GetBytesFromSlave | 0 = ОК | Байт 1 … Байт N |
SetSpeed | 0 = ОК | – |
Нулевой позиции буфера USB указывает, была ли выполнена команда из “Мастер” успешно.
Вычисление CRC
Все используемые CRC рассчитываются за определенное количество последовательных байтов и CRC результат является байт. Вычисление CRC, используя алгоритм, основанный на «продольной избыточности проверки».
Проверка продольной избыточности
Dim CRC as Byte
CRC = 0
For each byte b
CRC = CRC Xor b
Next
Чтобы избежать «столкновения» между мирской последовательности ( Например, 0000 = 1111 или 123 = 321 ) и простой последовательности, которые производят действительный CRC ( Например, 0000 с КПР = 0 ) выше метод изменяется с перестановкой.
Вычисление CRC результатом эффективной и чрезвычайно простой.
Вычисление CRC, используемые в настоящем Протоколе
Dim CRC as Byte
CRC = 0
For each byte b
CRC = CRC Xor b
CRC = CRC + 1
Next
Настройка скорости
Если вы решите использовать скорость помимо по умолчанию, Затем «мастер» следует довести до всех устройств в цепочке Новая скорость.
Этот параметр должен быть возможным даже до принятия цикла распознавания устройств и должны быть также возможно с очень долго ЛЭП. Поэтому есть специальная команда, которая теперь отображается.
1 – Мастер поддерживает высокая линия для 50 MS
2 – Все рабы определенно размещаются до одного символа
3 – Мастер генерирует перерыв (низкий уровень линия 12 бит на минимальной скорости
4 – Мастер выдает 55 символов (01010101) нужную скорость
5 – Все рабы вывести скорость от этого байт (Авто бод)
6 – Мастер направляет один байт, которое указывает «Скорость» (От 1 в 12)
7 – Мастер направляет один байт КПР, рассчитанные на два байта (cmd/скорость)
8 – Если раб является ошибкой не изменить его скорость
Проверить скорость
Если скорость слишком высока для линии электропередачи в использовании некоторых устройств в цепочке может не сможет поддерживать параметр скорости и ошибки могут возникать при передаче данных.
Если ошибки передачи нуля или меньше чем 0.1% Затем набор скорость действителен.
Признание и нумерация
1 – Мастер выводит к подчиненному всю последовательность параметра «Скорость», чтобы убедиться, что все взаимодействовать с той же скоростью.
2 – Мастер не передавать команды 50 миллисекунд.
3 – На данный момент все рабы следует ждать для команды.
4 – Мастер выдает код «254″ (RecogStart).
5 – Все рабы, они положили слабых тянуть вверх (100-400 UA) по ввода вывода и открыть соединение выхода к течению устройств. Они больше не реагировать на любые команды, за исключением «253″ (Распознавания).
6 – Мастер выдает код «253″ (Тип запроса) и затем байт с числом 0″, первого устройства в цепочке встречает байт с его типом, Удаляет подтягивающий, подключиться к течению работорговли и не реагирует на команды.
7 – Мастер выдает код «253″ (Тип запроса) и затем байт с номером 1″, второе устройство в цепочке встречает байт с его типом, Удаляет подтягивающий, подключиться к течению работорговли и не реагирует на команды.
8 – Мастер выдает код «253″ (Тип запроса) и затем байт с номером "2″,
9 – Мастер выдает сторону рабов все последовательности параметр «Скорость», Это показывает все рабы в режиме нормальной связи.
10 – Мастер сообщает принимающей (PC) через USB Slave признано, количество и тип каждого.
Roberto_Cena & Livio_Cicala (2010 – 2016)