Protocolo serie DPM


Protocolo de comunicación serie DPM

(Protocolo de Dilbertian modificado)

Nota el nombre de protocolo
El nombre de “Dilbertiano” viene de la primera versión de este protocolo, Se llama “IDP invertida Dilbertian protocolo” (2010), donde representaron a ceros con un celular “cerrar” y con un celular “grandes” (“0” flaco y “1” grasa – según la viñeta siguiente proviene de “Dilbert” por Scott Adams – www.Dilbert.com).

Inglés

Italiano
dilbertian_one


Porque un nuevo protocolo ?

Theremino el sistema tiene como objetivo proporcionar un sistema simple de entrada-salida para PC, barato y fácil de usar. Para hacer fácil a utilizar la numeración automática se necesitan y el reconocimiento de sus tipos, para simplificar y minimizar el costo de los enlaces es necesario comunicarse en un cable de sólo.

Existe un protocolo similar que tuvimos que escribirlo. La versión actual recoge lo mejor de muchos años de experimentación e investigación.

Descargue este documento en formato PDF:
Sistema Theremino - DPM_Protocol_2015_ENG.pdf
Sistema Theremino - DPM_Protocol_2015_ITA.pdf


Características

  • Comunicación serial bidireccional sobre un solo cable.
  • Configuración automática.
  • Detección automática de dispositivos conectados.
  • Número de dispositivos que van desde 1 en 200.
  • Número de bytes transmitidos y recibidos varía dependiendo del tipo de dispositivo.
  • Velocidad de transmisión de hasta 4 Megabits/seg a transmitir muchos datos con cables cortos.
  • Velocidad de transmisión de hasta 100 Kilobits/sec para cables largos (hasta 10 Km).
  • Alta eficiencia de la comunicación (De 10 en 20 veces mayor que en puede).


Persianas eléctricas

La transmisión ocurre en un solo cable, pero necesita una referencia masa y una tensión de alimentación, a donde los cables son normalmente tres.

Cualquier dispositivo que admita DPM debe tener un conector de entrada (para el maestro) y una salida a los dispositivos downstream (Esclavos)

Los conectores son utilizados normalmente por 3 Poli, con separación de 2.54 mm.

En la comunicación de la cadena debe tener un maestro (provee de energía y tiempo) y un número de dispositivos conectados en cascada (llamado esclavo).

Es la tensión que proporciona el maestro en línea 5 V, con la misma tolerancia y con la misma corriente máxima de 5 V que retiran del conector USB.

La corriente máxima que puede proporcionar el maestro limita el número y tipo de dispositivos que pueden conectarse. Esta corriente, es normalmente 250 pero, y se puede aumentar hasta 500 pero. Va sobre ella excedería la capacidad de la USB ’ e impondría características inusuales a los conectores.

El número máximo de dispositivos conectables está limitado por los siguientes factores:
– La corriente máxima que el “Master” puede proporcionar.
– El número máximo de bytes que lleva la línea de tiempo del ciclo de transmisión de arroz.

Tanto la “Master” que la “Auxiliar” están conectados a la línea con una resistencia de amortiguación, También actúa como un paso bajo, Radio interferencia y sobretensión protección. El valor de esta resistencia es normalmente de 33 en 330 Ohm


Formato de difusión

Utilizando un formato de no retorno a cero (NRZ) estándar.

Formato predeterminado = 8, N, 1
– 1 comenzar poco
– 8 bits de datos
– no-Parity
– 1 bit de parada


Niveles de línea de datos “Línea de com.”

La línea a un lado que para subir de nivel (3.3 V)
La señal de “1” se denota por 3.3 V
La señal de “0” se denota por 0 Vdilbertian two


Rendimiento y repetición veces

Velocidad de transmisión
Utilizar bajas velocidades cuando la longitud, y así la capacidad de los cables de conexión, son altos. Cuando las distancias son cortas y de alta velocidad puede utilizarse para comunicarse con un gran número de dispositivos (o comunicarse con los dispositivos que necesitan una gran cantidad de bytes) Son velocidades nombre establecidos de “1” (1 k bits/seg.) hasta “12” (4 Mega bits por segundo)

Número máximo de bytes
Dependiendo de la velocidad en baudios se enumera el número máximo de bytes que se puede transmitir en la siguiente tabla.


Veces, Distancias y el número de bytes

Velocidad
poco tiempo
poco
para
segundo
Bytes
cada
15MS
Bytes cada
30MS
Distancia máxima
Capacidad máxima
Esclavos
Max
número
1
1 MS
1K
1
3
10 Km
1 UF
3
2
500 nos
2K
3
6
5 Km
500 NF
6
3
200 nos
5K
4
8
2 Km
200 NF
15
4
100 nos
10K
15
30
1 Km
100 NF
30
5
50 nos
20K
30
60
500 m
50 NF
60
6
20 nos
50K
40
80
200 m
20 NF
150
7
10 nos
100K
150
300
100 m
10 NF
160
8
5 nos
200K
300
600
50 m
5 NF
80
9
2 nos
500K
400
800
20 m
2 NF
32
10
1 nos
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

Todos los dispositivos deben implementar al menos la velocidad “7” se considera que la velocidad por defecto. Si desea establecer una velocidad distinta de la “7” todos los dispositivos de la cadena deben apoyarla.

El “distancia máxima” depende de las características de los cables, los valores de la tabla están calculados para un blindado cable RG58 de 50 Ohm con capacidad de 100pF por metro.

A bajas velocidades el número de “esclavos” está limitado por el número máximo de bytes que se puede transmitir en 30 milisegundos. (cada esclavo usa al menos un byte y reclamar una rápida repetición suficiente para hacer movimientos fluidos)

A alta velocidad, el número de “esclavos” está limitada por la capacidad máxima, cada “auxiliar” Agrega una capacidad de aproximadamente 40..60 PF y reduce la distancia máxima de aproximadamente 50 cm.

La capacidad se calculó sobre la base de 30pF por “auxiliar” Además de otros 20pF a un cable de conexión de 20 cm y otros 10pF a tener en cuenta la resistencia adicional debido a “interruptor bilateral” (total: 60PF)


Longitud máxima del cable de comunicación de la corriente y la resistencia por metro

Cable tipo —>
Corriente máxima
( corriente máxima )
H1500/H1000/H500/H155/RG11
20 Mili ohms
o menos
por metro
Rg58 /Rg59u/H155 /
cables de red
Acerca de
50 Mili ohms
por metro
Rg59/RG6 /teléfono trenzado de alambre /
cables de red
Acerca de
100 Mili ohms
por metro
10 pero 1 Km 400 m 200 m
20 pero 500 m 200 m 100 m
50 pero 200 m 80 m 40 m
80 pero 125 m 50 m 25 m
100 pero 100 m 40 m 20 m
200 pero 50 m 20 m 10 m
400 pero 25 m 10 m 5 m
500 pero 20 m 8 m 4 m
800 pero 12.5 m 5 m 2.5 m
1 En 10 m 4 m 2 m

En el cálculo de la distancia tenemos en cuenta que la tensión cae en la tierra, no exceda de 200 MV. La caída de tensión en el cable de alimentación, no causa errores de transmisión, También puede ser mucho mayor (el 5 V puede caer abajo a 3.3 V sin crear problemas) En el caso de cables blindados en terreno es la pantalla, que generalmente tiene menos resistencia que declaró, para que la distancia sea mayor.


Capacidad de cable

Los valores de “longitud máxima” indicado en la tabla anterior son válidos sólo para la conexión de cable con una capacidad de aprox. 100 PF por metro. La siguiente tabla muestra las correcciones a aplicar para los cables más utilizados.

Cable
Externo
diámetro
( mm )
Impedancia
( Ohm )
Capacidad
(PF/mt.)
Resistencia
(miliohmio
/ medidor de)
Corrector de longitud máxima
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 (TV)
10.3
75
60
21
x 1.7
RG59 (TV)
6.15
75
67
159
x 1.5
RG6_(TV vía satélite)
6.8
75
51
100
x 2.0
RG56/en _(TV)
6.9
75
53
x 2.0
RG59/U _(TV)
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
Cable de red
min 50
Max 130
min 60
Max 200
x 2.0
x 0.7
Cable de Audio de la PC
min 120
Max 300
min 500
Max 3000
x 0.8
x 0.5
Microfónicos de la coclea
cable
min 60
Max 300
x 1.7
x 0.3
Cable telefónico trenzado
50
100
x 2.0

También hay cables de baja capacidad (poco utilizado y difícil de encontrar):

  • Rg62 – 93 Ohm – 44 PF/mt
  • RG71 – 93 Ohm – 44 PF/mt
  • Rg210 – 93 Ohm – 44 PF/mt
  • RG63 – 125 Ohm – 33PF/mt
  • RG114 – 185 Ohm – 27PF/mt

Medir la capacidad de un cable desconocido:

  • Preparar el perfecto pelar cable blindado y aislado filamento central de retención.
  • Medir entre escudo Central y externa con un metro o medidor de capacitancia.
  • Para mejorar la exactitud de la medida, utilizar cinco o diez metros de cable.
  • Dividir el valor de los picofaradios medido por el número de metros de cable.


Tipos de dispositivos de

Los dispositivos están marcados con un número de 0 en 199 identificar su "tipo".
En la etapa de reconocimiento y numeración de cada dispositivo identifica con este "Tipo".

Actualmente están definidos los siguientes dispositivos:

Tipo de dispositivo
Velocidad
min
Velocidad max
En hacia fuera los pernos
Energía
Nombre
0
Especial “personalizados” tipo
1
1
12
1
12 pero
Sensor capacitivo
Alta calidad
2
1
12
10
InOut Servo
3
1
12
12
InOut genérico
4
1
12
12
InOut
5
6
Virtual Master Pins
(primera versión)
8
10
Virtual Master Pins – V2
9 12 Virtual Master Pins – V4
255 Desconocido

Número máximo de dispositivos
Es limitado el número máximo de dispositivos conectables por:
– el número máximo de bytes que se puede transmitir dependiendo de la velocidad seleccionada.
– la corriente máxima que puede proporcionar el "maestro" (normalmente 500 pero)
– es el número máximo de dispositivos compatibles con el protocolo 200 (De 0 en 199)


Tipos de perno

Los pernos están marcados con un número de 0 en 255 identificar su "PinType".

Tipos de Pin de salida

Pin de salida
Tipo
Nombre
Master a esclavo
bytes
Esclavo a maestro
bytes
0
SIN USAR
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 PASO A PASO 4 0
7 PWM_FAST 5 0

Tipos de entrada de Pin

Entrada de Pin
Tipo
Nombre
Master a esclavo
bytes
Esclavo a maestro
bytes
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
CONTADOR
0
2
141
COUNTER_PU
0
2
142
FAST_COUNTER
0
2
143
FAST_COUNTER_PU
0
2
144
PERÍODO DE
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


Comunicación entre maestro y esclavos (línea serie)

Primer byte Tipo de transmisión Transmisión Recibir
255 (*4) Especial extendido
(para una futura ampliación)
1 bytes (extensión)
>>>>> Consulte la tabla de verbos extendidos <<<<<
254 (*1) RecogStart
Reconocimiento temprano
y numeración
1 bytes (número de bytes de datos = 0)
1 bytes (CRC de Cmd / 0)
253 (*2) Tuación
Introduzca el número de secuencia y de la solicitud tipo
1 bytes (número de bytes de datos = 1)
1 bytes (De 0 en 199)
1 bytes (CRC de Cmd, Nbytes, tipo)
1 bytes ( tipo )
1 bytes ( CRC )
251 (*3) FastDataExchange
Intercambio de datos rápido.
1 bytes (número de bytes de datos = 0)
1 bytes (CRC de Cmd/0)
De 0 en 60 bytes de datos
De 0 en 63 bytes de datos
249 (*4) SetupSlavePins
Acceder a los ajustes para el
uno de los pines “auxiliar”
1 bytes (Índice de esclavo)
1 bytes (número de bytes de datos)
Bytes NN (PinTypes: 1 bytes por pin)
1 bytes (CRC de Cmd/SlaveId/etc...)
1 bytes (Índice de esclavo)
1 bytes (CRC en bytes
anterior)
248 (*4) SetMasterName
Introduzca el nombre de la “Master”
Bytes NN (caracteres del nombre terminadas en cero)
247 (*4) GetMasterName
Leyendo el nombre de la “Master”
Bytes NN (caracteres de
nombre terminada en cero)
246 (*4) SendValuesToSlave
Envío de “n” bytes
un esclavo “m”
(Max 56 bytes)
1 bytes (Índice de esclavo)
1 bytes (número de bytes)
bytes 1 . . . byte n
1 bytes (CRC
CMD/SlaveId/nBytes/n)
1 bytes (Índice de esclavo)
1 bytes (CRC en bytes
anterior)
245 (*4) GetValuesFromSlave
Solicitud de “n” bytes a esclavo “m”
(Max 56 bytes)
1 bytes (Índice de esclavo)
1 bytes (número de bytes)
1 bytes (CRC de Cmd/SlaveId/nBytes)
byte1 . . byte n
1 bytes (Índice de esclavo)
1 bytes (CRC en
n + 1 anterior bytes)
244 (*4) SendBytesToSlave
Envío de “n” bytes a esclavo “m”
(Max 56 bytes)
1 bytes (Índice de esclavo)
1 bytes (número de bytes)
bytes 1 . . . byte n
1 bytes (CRC
CMD/SlaveId/nBytes/n)
1 bytes ( Índice de esclavo )
1 bytes ( CRC ) en bytes
anterior
243 (*4) GetBytesFromSlave
Solicitud de “n” bytes a esclavo “m”
(Max 56 bytes)
1 bytes (Índice de esclavo)
1 bytes (número de bytes)
1 bytes (CRC de Cmd/SlaveId/nBytes)
bytes 1 . . . byte n
1 bytes (Índice de esclavo)
1 bytes ( CRC ) Acerca de
n + 1 anterior bytes
199 (*5) SetSpeed 1 bytes (COMM. Velocidad)
1 bytes (CRC en velocidad de Cmd/COMM.)
0 Ninguna acción

(*1) Comandos de servicio.
(*2) El comando es utilizado por el maestro y los esclavos oriundos durante el reconocimiento.
(*3) Comunicación rápida – el maestro intercambia los valores de todos los esclavos usando solamente una USB intercambio
(*4) Comandos de comunicación al único esclavo
(*5) Comandos especiales

SendValuesToSlave envía los valores al Pin de salida de un esclavo (Forma física en el Master o esclavos virtuales)

GetValuesFromSlave Lee los valores de la clavija de entrada de un esclavo (Forma física en el Master o esclavos virtuales)

SendBytesToSlave enviar bytes genéricos (ejemplo de configuración), a un esclavo (Forma física en el Master o esclavos virtuales)

GetBytesFromSlave bytes genérico derecho (por ejemplo del estado), de un esclavo (Forma física en el Master o esclavos virtuales)

Todos los comandos tienen códigos de 200 en 255, para evitar que, en caso de errores, Identificadores y tipos de esclavos (De 0 en 199) podría interpretarse como un comando. (SETSPEED no cuenta, porque nunca se envía abajo de la línea serial pero solamente ’ HAL, para el maestro, a través de USB)


Comunicación entre el ordenador y maestro (USB)

Da de carretel “Host” verso “Master”

Nombre de comando ID
USB_TxData[0]
PARÁMETROS
USB_TxData[1 a n]
RecogStart CommandID, Nbytes
FastDataExchange CommandID, De 0 Para 60 bytes de datos
SetupSlavePins CommandID, SlaveId, Nbytes
SetMasterName CommandID, MasterName (cero terminada)
GetMasterName CommandID,
SendValuesToSlave CommandID, SlaveId, Nbytes, Byte1….ByteN
GetValuesFromSlave CommandID, SlaveId, Nbytes
SendBytesToSlave CommandID, SlaveId, Nbytes, Byte1….ByteN
GetBytesFromSlave CommandID, SlaveId, Nbytes
SetSpeed CommandID, CommSpeed

Da respuestas “Master” verso “Host”

Nombre de comando RESPUESTA
USB_RxData[0]
DEVOLVER VALORES
USB_RxData[1 a n]
RecogStart 0 = OK Nslaves, Esclava tipo 1 … Tipo de esclavo N
FastDataExchange 0 = OK De 0 Para 63 bytes de datos
SetupSlavePins 0 = OK
SetMasterName 0 = OK
GetMasterName 0 = OK Nombre del maestro (cero terminada)
SendValuesToSlave 0 = OK
GetValuesFromSlave 0 = OK Bytes 1 … Byte N
SendBytesToSlave 0 = OK
GetBytesFromSlave 0 = OK Bytes 1 … Byte N
SetSpeed 0 = OK

La posición cero del búfer USB indica si se ejecuta el comando de “Master” con éxito.


Cálculo de la CRC

Todos CRC utilizado se calculan sobre un cierto número de bytes consecutivos y el resultado de la CRC es un byte. Cálculo de CRC utilizando un algoritmo basado en "comprobación de redundancia Longitudinal".

Verificación de redundancia longitudinal

Dim CRC as Byte  CRC = 0  For each byte b      CRC = CRC Xor b  Next

Para evitar "choques" entre secuencias mundanas ( Por ejemplo, 0000 = 1111 o 123 = 321 ) y secuencias simples que producen CRC válido ( Por ejemplo, 0000 con CRC = 0 ) el método anterior es modificado con una permutación.

Cálculo de la CCR resulta eficaz y extremadamente simple.

Cálculo de la CRC utilizado en este protocolo

Dim CRC as Byte  CRC = 0  For each byte b      CRC = CRC Xor b      CRC = CRC + 1  Next 


Ajuste la velocidad en baudios

Si usted decide utilizar una velocidad distinta de la predeterminada una, luego el "maestro" debe comunicarse a todos los dispositivos en la cadena de la nueva velocidad.

Este ajuste debería ser posible incluso antes de hacer un reconocimiento del dispositivo de bucle y debe también ser posible con líneas de transmisión muy largo. Por lo tanto hay un comando especial que se muestra.

1 – El maestro mantiene la línea de alta 50 MS
2 – Todos los esclavos se colocan definitivamente espera un carácter
3 – El maestro genera un descanso (línea de nivel bajo 12 bits a velocidad mínima
4 – El maestro emite un personaje 55 (01010101) la velocidad deseada
5 – Todos los esclavos deducir la velocidad de este bytes (Auto-baud)
6 – El maestro envía un byte que especifica la "velocidad" (De 1 en 12)
7 – El maestro envía un byte de CRC calculado en dos bytes (CMD/velocidad)
8 – Si el esclavo es un error no cambia su velocidad

dilbertian eig

Compruebe la velocidad

Si establece una velocidad demasiado alta para línea de transmisión en uso algunos dispositivos en la cadena pueden no ser capaces de soportar el ajuste de velocidad y errores pueden ocurrir cuando la transmisión de datos.

Si los errores de transmisión son cero o menor que el 0.1% entonces la velocidad es válida.


Reconocimiento y enumeración

1 – El maestro de las salidas a la esclava toda la secuencia de ajuste de "Velocidad" para asegurarse de que todos comunican a la misma velocidad.
2 – El maestro no transmite órdenes a 50 milisegundos.
3 – En este punto todos los esclavos debe esperando un comando.
4 – El maestro emite un código "254″ (RecogStart).
5 – Todos los esclavos pusieron el débil-pull-up (100-400 UA) en la entrada-salida y abrir la conexión de salida a los dispositivos downstream. Ya no responden a los comandos excepto "253″ (Tuación).
6 – El maestro emite un código "253″ (solicitud tipo) y luego un byte con el número 0″, el primer dispositivo de la cadena cumple un octeto con el tipo de, Elimina la tensión, Conecte el esclavo aguas abajo y no responde a ningún comando.
7 – El maestro emite un código "253″ (solicitud tipo) y luego un byte con el número 1″, el segundo dispositivo en la cadena cumple un octeto con el tipo de, Elimina la tensión, Conecte el esclavo aguas abajo y no responde a ningún comando.
8 – El maestro emite un código "253″ (solicitud tipo) y luego un byte con el número "2″,

…. el “253” (solicitud tipo) se repite hasta 200 veces
Cuando no responde más a una duración superior a 10 poco en el rendimiento actual, significa que la cadena es más. Para evitar este cálculo, Se puede utilizar un tiempo de espera de 12 MS que siempre funciona, incluso en la velocidad más baja.

9 – El maestro emite hacia los esclavos todos secuencia de configuración "Velocidad", muestra a todos los esclavos en el modo de comunicación normal.
10 – El maestro informa al Host (PC) Via USB esclavo reconoce el número y tipo de cada uno.

Roberto_Cena & Livio_Cicala (2010 – 2016)

Los comentarios están cerrados.