Protocole série DPM


Protocole de communication série DPM

(Dilbertian protocole modifié)

Notez que le nom de protocole
Le nom “Dilbertiano” s'agit de la première version du présent protocole, Nous avons appelé “IDP inversé Dilbertian protocole” (2010), où les zéros sont représentées avec une cellule “fermer” et avec une cellule “grande” (“0” maigre et “1” matières grasses – selon la vignette suivante vient de “Dilbert” par Scott Adams – www.Dilbert.com).

Anglais

Italien
dilbertian_one


Parce qu'un nouveau protocole ?

Theremino le système vise à fournir un système d'entrées-sorties simples pour PC, bon marché et facile à utiliser. Assurez-vous qu'il est facile d'utiliser la numérotation automatique sont nécessaires et la reconnaissance de leurs types, afin de simplifier et de réduire au minimum le coût des liens est nécessaire de communiquer sur un fil uniquement.

Il existe un protocole similaire, que nous avons eu à l'écrire. La version actuelle rassemble le meilleur des nombreuses années d'expérimentation et de recherche.

Télécharger ce document au format PDF:
Système Theremino - DPM_Protocol_2015_ENG.pdf
Système Theremino - DPM_Protocol_2015_ITA.pdf


Caractéristiques

  • Communication série bidirectionnelle sur un seul fil.
  • Configuration automatique.
  • Détection automatique des périphériques connectés.
  • Nombre d'appareils allant de 1 dans 200.
  • Nombre d'octets transmis et reçus varie en fonction du type d'appareil.
  • Vitesse de transmission jusqu'à 4 Mégabits/s afin de transmettre une grande quantité de données avec des câbles courts.
  • Vitesse de transmission jusqu'à 100 Kilobits par seconde pour câbles longs (jusqu'à 10 Km).
  • Haute efficacité de la communication (De 10 dans 20 fois plus grande que dans peut).


Volets roulants électriques

La transmission se fait sur un seul fil, mais vous avez besoin d'une référence masse et une tension d'alimentation, là où les fils sont normalement trois.

N'importe quel appareil supportant le DPM doit avoir un connecteur d'entrée (pour le maître) et une sortie aux dispositifs en aval (Esclaves)

Les connecteurs sont normalement utilisés par 3 poli, avec un espacement de 2.54 mm.

Sur la communication de la chaîne devrait avoir un Master (fournissant la puissance et du temps) et un certain nombre de périphériques connectés en cascade (appelé esclave).

Est la tension qui le maître fournit en ligne 5 V, avec la même tolérance et avec le même courant maximal de 5 V que retire le connecteur USB de.

Le courant maximum que peut fournir le maître limite le nombre et le type d'appareils qui peuvent être connectés. Ce courant, est normalement 250 mais, et peut être augmenté jusqu'à 500 mais. Va sur elle dépasserait la capacité de l'USB ’ et imposerait des caractéristiques inhabituelles aux connecteurs.

Le nombre maximal de périphériques connectables est limité par les facteurs suivants:
– Le courant maximum que la “Master” peut fournir.
– Le nombre maximal d'octets qui porte de la ligne dans les temps de cycle du riz-transmission.

Les deux les “Master” qui le “Esclave” sont connectés à la ligne avec une résistance d'amortissement, Il agit également comme un passe-bas, protection des interférences et des surtensions de radio. La valeur de cette résistance est normalement de 33 dans 330 Ohm


Format de diffusion

À l'aide d'un format Non-Retour à zéro (NRZ) norme.

Format par défaut = 8, N, 1
– 1 commencer peu
– 8 bits de données
– no-parity
– 1 bit d'arrêt


Niveaux de la ligne de données “Ligne de com.”

La ligne de côté il monter de niveau (3.3 V)
Le signal “1” est désignée par 3.3 V
Le signal “0” est désignée par 0 Vdilbertian two


Débit et temps de répétition

Vitesse de transmission
En utilisant des vitesses faibles lorsque la longueur, et donc la capacité les câbles de raccordement, sont élevés. Lorsque les distances sont courtes et haute vitesse peut servir à communiquer avec un grand nombre de dispositifs (ou communiquer avec les périphériques qui requièrent un grand nombre d'octets) Sont établies les vitesses nommés de “1” (1 k bits/Sec) jusqu'à “12” (4 méga bits par seconde)

Nombre maximal d'octets
Selon la vitesse de transmission, le nombre maximal d'octets pouvant être transmise est répertorié dans le tableau suivant.


Fois, les distances et le nombre d'octets

Vitesse
peu de temps
bit
pour
seconde
Octets
chaque
15MS
Octets chaque
30MS
Distance max
Capacité maximum
Esclaves
Max
nombre
1
1 MS
1K
1
3
10 Km
1 UF
3
2
500 Nous
2K
3
6
5 Km
500 NF
6
3
200 Nous
5K
4
8
2 Km
200 NF
15
4
100 Nous
10K
15
30
1 Km
100 NF
30
5
50 Nous
20K
30
60
500 m
50 NF
60
6
20 Nous
50K
40
80
200 m
20 NF
150
7
10 Nous
100K
150
300
100 m
10 NF
160
8
5 Nous
200K
300
600
50 m
5 NF
80
9
2 Nous
500K
400
800
20 m
2 NF
32
10
1 Nous
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

Tous les appareils doivent implémenter au moins la vitesse “7” qui est considéré comme la vitesse par défaut. Si vous souhaitez définir une vitesse différente de la “7” tous les appareils dans la chaîne doivent prendre en charge.

Le “distance maximale” dépend des caractéristiques des câbles, les valeurs du tableau sont calculés pour un blindé câble RG58 50 Ohm avec possibilité de 100pF par mètre.

À basse vitesse le nombre de “esclaves” est limitée par le nombre maximal d'octets pouvant être transmises en 30 millisecondes. (chaque esclave utilise au moins un octet et de vous demander une rapide répétition assez pour faire des mouvements fluides)

À grande vitesse, le nombre de “esclaves” est limitée par la capacité maximale, chaque “esclave” Ajoute une capacité d'environ 40..60 PF et réduit la distance maximale d'environ 50 cm.

La capacité a été calculée sur la base de 30pF par “esclave” plus autres 20pF à un câble de raccordement de 20 cm et autres 10pF pour tenir compte de la résistance supplémentaire due à “interrupteur bilatéral” (total: 60pF)


Longueur maximale du câble de communication que le courant d'alimentation et de la résistance par mètre

Câble type de —>
Courant maximal
( courant de crête )
H1500/H1000/H500/H155/RG11
20 Milli ohm
ou moins
par mètre
RG58 /RG59U / H155 /
câbles nets
sur
50 Milli ohm
par mètre
Rg59/RG6 /Téléphone twisted wire /
câbles nets
sur
100 Milli ohm
par mètre
10 mais 1 Km 400 m 200 m
20 mais 500 m 200 m 100 m
50 mais 200 m 80 m 40 m
80 mais 125 m 50 m 25 m
100 mais 100 m 40 m 20 m
200 mais 50 m 20 m 10 m
400 mais 25 m 10 m 5 m
500 mais 20 m 8 m 4 m
800 mais 12.5 m 5 m 2.5 m
1 Dans 10 m 4 m 2 m

Dans le calcul de la distance, nous prenons en compte que la tension chute sur le sol, ne dépasse pas 200 MV. La chute de tension sur le câble d'alimentation, ne causant ne pas d'erreurs de transmission, Il peut aussi être beaucoup plus élevé (le 5 V peut descendre vers le bas 3.3 V sans créer de problèmes) Dans le cas des câbles blindés sur terre est l'écran, qui a généralement moins de résistance que déclarée, Si la distance sera plus grande.


Capacité de câble

Les valeurs de “longueur maximale” indiqué dans le tableau ci-dessus sont valables uniquement pour le câble de connexion avec une capacité d'env. 100 PF par mètre. Le tableau suivant indique les corrections à appliquer pour les câbles plus couramment utilisés.

Câble
External
diamètre
( mm )
Impédance
( Ohm )
Capacité
(pF/mt.)
Résistance
(milliohm
/ compteur)
Correcteur de longueur max
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_(TVsat)
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
Câble net
min 50
Max 130
min 60
Max 200
x 2.0
x 0.7
Câble PC Audio
min 120
Max 300
min 500
Max 3000
x 0.8
x 0.5
Microphonique
câble
min 60
Max 300
x 1.7
x 0.3
Fil téléphonique torsadée
50
100
x 2.0

Il y a aussi des câbles de faible capacité (peu utilisé et difficiles à trouver):

  • 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

Mesurer la capacité d'un câble inconnu:

  • Préparer le parfait dépouillement câble blindé et conservant le brin central isolé.
  • Mesurez entre le bouclier Central et extérieur avec un compteur ou un compteur de capacité.
  • Pour améliorer la précision des mesures, Utilisez les cinq ou dix mètres de câble.
  • Diviser la valeur des Picofarads mesurée par le nombre de mètres de câble.


Types d'appareils

Les appareils sont étiquetés avec un certain nombre de 0 dans 199 identifier son « Type ».
Au stade de la reconnaissance et la numérotation de chaque périphérique s'identifie avec ce « Type ».

Actuellement sont définis les dispositifs suivants:

Type d'appareil
Vitesse
min
Vitesse max
Dans les Pins
Puissance
Nom
0
Spécial “personnalisé” type de
1
1
12
1
12 mais
Capteur capacitif
Salut qualité
2
1
12
10
InOut Servo
3
1
12
12
InOut générique
4
1
12
12
InOut
5
6
Pins maître virtuels
(première version)
8
10
Pins maître virtuels – V2
9 12 Pins maître virtuels – V4
255 Inconnu

Nombre maximal de périphériques
Le nombre maximal de périphériques connectables est limité par:
– le nombre maximal d'octets pouvant être transmises selon la vitesse choisie.
– le courant maximum que peut fournir le « maître » (normalement 500 mais)
– le nombre maximal de périphériques pris en charge par le protocole est 200 (De 0 dans 199)


Types de broches

Les broches sont étiquetés avec un certain nombre de 0 dans 255 identifier ses « PinType ».

Types de broches de sortie

Broche de sortie
Type de
Nom
Master Slave
octets
Esclave de maître
octets
0
INUTILISÉS
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 MOTEURS PAS À PAS 4 0
7 PWM_FAST 5 0

Types de broches d'entrée

Broche d'entrée
Type de
Nom
Master Slave
octets
Esclave de maître
octets
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
COMPTEUR
0
2
141
COUNTER_PU
0
2
142
FAST_COUNTER
0
2
143
FAST_COUNTER_PU
0
2
144
PÉRIODE
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


Communications entre le maître et les esclaves (ligne série)

Premier octet Type de transmission Transmission Recevant
255 (*4) Extraordinaire étendue
(pour l'expansion future)
1 octets (extension)
>>>>> consultez le tableau des verbes étendus <<<<<
254 (*1) RecogStart
Reconnaissance précoce
et la numérotation
1 octets (nombre de bytes de données = 0)
1 octets (CRC de Cmd / 0)
253 (*2) Recon
Entrez le numéro de séquence et de la demande de type
1 octets (nombre de bytes de données = 1)
1 octets (De 0 dans 199)
1 octets (CRC de Cmd/Nbytes/Type)
1 octets ( type de )
1 octets ( CRC )
251 (*3) FastDataExchange
Échange rapide des données.
1 octets (nombre de bytes de données = 0)
1 octets (CRC de Cmd/0)
De 0 dans 60 octets de données
De 0 dans 63 octets de données
249 (*4) SetupSlavePins
Entrez les paramètres du
une broche “esclave”
1 octets (index de l'esclave)
1 octets (nombre d'octets de données)
Octets de NN (PinTypes: 1 octets par pin)
1 octets (CRC de Cmd/SlaveId/etc...)
1 octets (index de l'esclave)
1 octets (CRC sur octets
précédent)
248 (*4) SetMasterName
Entrez le nom de la “maître”
Octets de NN (caractères du nom terminé par zéro)
247 (*4) GetMasterName
Lire le nom de la “maître”
Octets de NN (personnages de
nom terminé par zéro)
246 (*4) SendValuesToSlave
Envoi “n” octets
un esclave “m”
(Max 56 octets)
1 octets (index de l'esclave)
1 octets (nombre d'octets)
octets 1 . . . n octets
1 octets (CRC
Cmd/SlaveId/nBytes/n)
1 octets (index de l'esclave)
1 octets (CRC sur octets
précédent)
245 (*4) GetValuesFromSlave
Demande de “n” octets à l'esclave “m”
(Max 56 octets)
1 octets (index de l'esclave)
1 octets (nombre d'octets)
1 octets (CRC de Cmd/SlaveId/nBytes)
octet1 . . n octets
1 octets (index de l'esclave)
1 octets (CRC sur
n + 1 octet précédent)
244 (*4) SendBytesToSlave
Envoi “n” octets à l'esclave “m”
(Max 56 octets)
1 octets (index de l'esclave)
1 octets (nombre d'octets)
octets 1 . . . n octets
1 octets (CRC
Cmd/SlaveId/nBytes/n)
1 octets ( index de l'esclave )
1 octets ( CRC ) sur octets
précédent
243 (*4) GetBytesFromSlave
Demande de “n” octets à l'esclave “m”
(Max 56 octets)
1 octets (index de l'esclave)
1 octets (nombre d'octets)
1 octets (CRC de Cmd/SlaveId/nBytes)
octets 1 . . . n octets
1 octets (index de l'esclave)
1 octets ( CRC ) sur
n + 1 octet précédent
199 (*5) SetSpeed 1 octets (Comm. Vitesse)
1 octets (CRC sur Cmd-comm. Vitesse)
0 Aucune action

(*1) Commandes de service.
(*2) La commande est utilisée uniquement par le maître et les esclaves Recon lors de la reconnaissance.
(*3) Communication rapide – le capitaine échange les valeurs de tous les esclaves à l'aide d'un seul échange de USB
(*4) Commandes de communication pour le seul esclave
(*5) Commandes spéciales

SendValuesToSlave envoie les valeurs sur la broche de sortie d'un esclave (Formes physiques sur le capitaine ou pratiquement des esclaves)

GetValuesFromSlave lit les valeurs de l'axe de l'entrée d'un esclave (Formes physiques sur le capitaine ou pratiquement des esclaves)

SendBytesToSlave Envoyer des octets génériques (exemple de configuration), vers un esclave (Formes physiques sur le capitaine ou pratiquement des esclaves)

GetBytesFromSlave génériques octets droit (exemple d'État), d'un esclave (Formes physiques sur le capitaine ou pratiquement des esclaves)

Toutes les commandes ont des codes de 200 dans 255, afin d'éviter, en cas d'erreurs, ID et les types de l'esclave (De 0 dans 199) pourrait être interprété comme une commande. (SETSPEED ne compte pas parce qu'il n'est jamais envoyé sur la ligne série mais seulement par HAL, pour le maître, via le port USB)


Communication entre l'ordinateur hôte et maître (USB)

Comandi da “Hôte” verso “Master”

Nom de la commande ID
USB_TxData[0]
PARAMÈTRES
USB_TxData[1 à n]
RecogStart CommandID, Nbytes
FastDataExchange CommandID, De 0 À 60 octets de données
SetupSlavePins CommandID, SlaveId, Nbytes
SetMasterName CommandID, MasterName (zéro terminée)
GetMasterName CommandID,
SendValuesToSlave CommandID, SlaveId, Nbytes, Octet1….ByteN
GetValuesFromSlave CommandID, SlaveId, Nbytes
SendBytesToSlave CommandID, SlaveId, Nbytes, Octet1….ByteN
GetBytesFromSlave CommandID, SlaveId, Nbytes
SetSpeed CommandID, CommSpeed

Risposte da “Master” verso “Hôte”

Nom de la commande RÉPONSE
USB_RxData[0]
VALEURS DE RETOUR
USB_RxData[1 à n]
RecogStart 0 = OK Nslaves, Esclave Type1 … Esclave, Type N
FastDataExchange 0 = OK De 0 À 63 octets de données
SetupSlavePins 0 = OK
SetMasterName 0 = OK
GetMasterName 0 = OK Maître nom (zéro terminée)
SendValuesToSlave 0 = OK
GetValuesFromSlave 0 = OK Octets 1 … Octet N
SendBytesToSlave 0 = OK
GetBytesFromSlave 0 = OK Octets 1 … Octet N
SetSpeed 0 = OK

La position zéro de la mémoire tampon USB indique si la commande a été exécutée de “Master” avec succès.


Calcul du CRC

Tous les CRC utilisés sont calculés sur un certain nombre d'octets consécutifs et le résultat de la CRC est un octet. Calcul de CRC à l'aide d'un algorithme basé sur le « contrôle de redondance longitudinale ».

Contrôle de redondance longitudinale

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

Pour éviter les « collisions » entre séquences banals ( Par exemple, 0000 = 1111 ou 123 = 321 ) et des séquences simples qui produisent des CRC valide ( Par exemple, 0000 avec le CRC = 0 ) la méthode ci-dessus est modifiée avec une permutation.

Calcul de la CRC résultat est extrêmement simple et efficace.

Calcul du CRC utilisé dans le présent protocole

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


Réglage du débit en bauds

Si vous décidez d'utiliser une vitesse de transmission autre que celui par défaut, puis le « maître » devrait communiquer à tous les périphériques de la chaîne la nouvelle vitesse.

Ce paramètre devrait être possible même avant d'effectuer une reconnaissance de périphériques de boucle et doit être également possible avec des lignes de transmission très long. Par conséquent, il y a une commande spéciale qui est maintenant présentée.

1 – Le capitaine maintient la ligne haute pour 50 MS
2 – Tous les esclaves sont certainement placés en attente d'un caractère
3 – Le capitaine génère une pause (ligne de niveau faible 12 bit à vitesse minimum
4 – Le maître émet un caractère 55 (01010101) le débit désiré
5 – Tous les esclaves en déduire la vitesse de transmission de cette octets (Auto-baud)
6 – Le maître envoie un octet qui spécifie la « vitesse » (De 1 dans 12)
7 – Le maître envoie un octet de CRC calculé sur deux octets (cmd/Vitesse)
8 – Si l'esclave est une erreur ne modifie pas sa vitesse

dilbertian eig

Vérifier le débit en bauds

Si vous définissez une vitesse trop élevée pour ligne de transmission à utiliser certains appareils dans la chaîne est peut-être pas capables de supporter le réglage de vitesse et des erreurs peuvent survenir lors de la transmission des données.

Si des erreurs de transmission sont zéro ou moins que la 0.1% la vitesse réglée est alors valide.


Reconnaissance et numérotation

1 – Le capitaine sorties à l'esclave, la séquence entière du paramètre « Vitesse » pour s'assurer que tous les communiquent à la même vitesse.
2 – Le maître ne transmet pas les commandes pour 50 millisecondes.
3 – À ce stade tous les esclaves devrait être en attente pour une commande.
4 – Le capitaine envoie un code "254″ (RecogStart).
5 – Tous les esclaves qu'ils mettent le faibles-pull-up (100-400 UA) sur l'entrée-sortie et ouvrir la connexion de sortie aux dispositifs en aval. Ils ne répondent plus à toutes les commandes sauf "253″ (Recon).
6 – Le capitaine envoie un code "253″ (demande de type) et puis un octet avec le numéro 0″, le premier appareil de la chaîne rencontre un octet avec son type, Supprime le pull-up, se connecter à l'esclave en aval et ne répond ne pas à toutes les commandes.
7 – Le capitaine envoie un code "253″ (demande de type) et puis un octet avec le numéro 1″, le deuxième périphérique de la chaîne rencontre un octet avec son type, Supprime le pull-up, se connecter à l'esclave en aval et ne répond ne pas à toutes les commandes.
8 – Le capitaine envoie un code "253″ (demande de type) et puis un octet avec le numéro 2"″,

…. le “253” (demande de type) répète jusqu'à 200 fois
Quand aucun ne répond plus à une durée supérieure à 10 bit au débit actuel, signifie que la chaîne est terminée. Pour éviter ce calcul, Vous pouvez utiliser un délai d'attente de 12 MS qui fonctionne toujours, même à basse vitesse.

9 – Le capitaine délivre vers les esclaves toutes les séquence de réglage « Vitesse », qui représente tous les esclaves en mode normal de communication.
10 – Le capitaine informe l'hôte (PC) via USB esclave reconnaît le nombre et le type de chaque.

Roberto_Cena & Livio_Cicala (2010 – 2016)

Les commentaires sont fermés.