DPM serieel Protocol


Seriële communicatieprotocol DPM

(Dilbertian Protocol bewerkt)

Opmerking de protocolnaam
De naam “Dilbertiano” komt uit de eerste versie van dit Protocol, We noemden “IDP omgekeerde Dilbertian Protocol” (2010), waar nullen waren vertegenwoordigd met een cel “sluiten” en met een cel “grote” (“0” mager en “1” vet – volgens het volgende vignet vandaan “Dilbert” door Scott Adams – www.Dilbert.com).

Engels

Italiaans
dilbertian_one


Omdat een nieuw Protocol ?

Theremino het systeem heeft tot doel een eenvoudig Input-Output systeem voor PC, goedkoop en makkelijk te gebruiken. Maak het makkelijk te gebruiken automatisch nummerende nodig zijn en de erkenning van hun types, om te vereenvoudigen en de kosten van de links minimaliseren is nodig om te communiceren op een draad alleen.

Er is een vergelijkbaar protocol dat we moesten schrijven. De huidige versie verzamelt het beste van vele jaren van experimenten en onderzoek.

Download dit document in PDF-formaat:
Theremino systeem - DPM_Protocol_2015_ENG.PDF
Theremino systeem - DPM_Protocol_2015_ITA.PDF


Functies

  • Bidirectionele seriële communicatie op een enkele draad.
  • Auto-configuratie.
  • Automatische detectie van aangesloten apparaten.
  • Aantal apparaten, variërend van 1 in 200.
  • Aantal bytes verzonden en ontvangen varieert afhankelijk van het type apparaat.
  • Overdrachtssnelheid tot 4 Megabit per seconde voor het verzenden van een heleboel gegevens met korte kabels.
  • Overdrachtssnelheid tot 100 Kilobit per seconde voor lange kabels (tot 10 Km).
  • Hoge efficiëntie communicatiemiddelen (Van 10 in 20 keer groter is dan in kan).


Elektrische rolluiken

De overdracht vindt plaats op een enkele draad, maar je moet een verwijzing massa en een voedingsspanning, waar de draden zijn normaal gesproken drie.

Elk apparaat dat DPM ondersteunt moet een ingang (aan de kapitein) en een uitgang naar stroomafwaartse apparaten (Slaven)

De connectors worden normaal gesproken gebruikt door 3 Poli, met afstand van 2.54 mm.

Over de mededeling van de moet keten een Master hebben (van stroom wordt voorzien en timing) een aantal apparaten met elkaar verbonden in cascade (Slaaf genaamd).

De spanning die de Master op lijn biedt is 5 V, met de dezelfde tolerantie en met de dezelfde maximale stroom van 5 V dat zich terugtrekt uit de USB-connector.

De maximale stroom die de kapitein kunnen beperkt het aantal en type van apparaten die kunnen worden aangesloten. Deze stroom, normaal gesproken is 250 maar, en kan worden verhoogd tot 500 maar. Gaan overheen zou groter zijn dan de capaciteit van de USB-’ en ongebruikelijke kenmerken op de verbindingslijnen zou leggen.

Het maximum aantal aansluitbaar apparaten wordt beperkt door de volgende factoren:
– De maximale stroom die de “Master” kan bieden.
– Het maximum aantal bytes dat de lijn in cyclustijd van rijst-transmissie draagt.

Zowel de “Master” dat de “Slaaf” zijn aangesloten op de lijn met een demping weerstand, Het fungeert ook als een low-pass, radio-interferentie en overspanning bescherming. De waarde van deze weerstand is normaal gesproken uit 33 in 330 Ohm


Uitgezonden formaat

Met behulp van een niet-terugkeer-naar-Zero-indeling (NRZ) standaard.

Standaard formaat = 8, N, 1
– 1 beetje beginnen
– 8 databits
– No-Parity
– 1 stopbit


Niveaus van data lijn “Com. Line”

De lijn opzij het om het niveau omhoog (3.3 V)
Het signaal “1” wordt aangeduid met 3.3 V
Het signaal “0” wordt aangeduid met 0 Vdilbertian two


Herhaal keer en doorvoer

Transmissiesnelheid
Met behulp van lage snelheden wanneer de lengte, en zo de capaciteit van de aansluitkabels, hoog. Wanneer de afstanden kort en hoge zijn kan snelheid worden gebruikt om te communiceren met een groot aantal apparaten (of communiceren met apparaten die een groot aantal bytes nodig hebben) Zijn gevestigde benoemde snelheden van “1” (1 k stukjes/Sec) tot “12” (4 Mega bits per seconde)

Maximum aantal bytes
Afhankelijk van de baud-rate is het maximum aantal bytes dat kan worden overgedragen weergegeven in de volgende tabel.


Keer, afstanden en aantal bytes

Snelheid
bits tijd
bits
voor
tweede
Bytes
elke
15MS
Bytes elke
30MS
Max afstand
Max capaciteit
Slaven
Max
nummer
1
1 MS
1K
1
3
10 Km
1 UF
3
2
500 ons
2K
3
6
5 Km
500 NF
6
3
200 ons
5K
4
8
2 Km
200 NF
15
4
100 ons
10K
15
30
1 Km
100 NF
30
5
50 ons
20K
30
60
500 m
50 NF
60
6
20 ons
50K
40
80
200 m
20 NF
150
7
10 ons
100K
150
300
100 m
10 NF
160
8
5 ons
200K
300
600
50 m
5 NF
80
9
2 ons
500K
400
800
20 m
2 NF
32
10
1 ons
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

Alle apparaten moeten minimaal uitvoering de snelheid “7” dat wordt beschouwd als de standaardsnelheid. Als u wilt instellen op een andere snelheid van de “7” alle apparaten in de keten moeten ondersteunen het.

De “maximale afstand” afhankelijk van de kenmerken van kabels, de tabel waarden worden berekend voor een afgeschermde kabel RG58 van 50 Ohm met mogelijkheid om 100pF per meter.

At lage snelheden het aantal “slaven” wordt beperkt door het maximum aantal bytes dat kan worden verzonden in 30 milliseconden. (elke slaaf maakt gebruik van ten minste één byte en u aanspraak maken op een herhalen snel genoeg om vloeiende bewegingen)

Op hoge snelheid, het aantal “slaven” wordt beperkt door de maximale capaciteit, elke “slaaf” Voegt een capaciteit van ongeveer 40..60 PF en vermindert de maximale afstand van ongeveer 50 cm.

De capaciteit was berekend op basis van 30pF per “slaaf” plus andere 20pF aan een aansluitkabel van 20 cm en andere 10pF zich rekenschap geven van de bijkomende resistentie moet “bilaterale schakelaar” (totaal: 60PF)


Maximale kabellengte van communicatie dan de levering stroom en weerstand per meter

Kabel type —>
Maximum huidige
( piekstroom )
H1500/H1000/H500/H155/RG11
20 Milli Ohm
of minder
per meter
Rg58 /Rg59u/H155 /
NETTO kabels
over
50 Milli Ohm
per meter
Rg59/RG6 /telefoon twisted wire /
NETTO kabels
over
100 Milli Ohm
per meter
10 maar 1 Km 400 m 200 m
20 maar 500 m 200 m 100 m
50 maar 200 m 80 m 40 m
80 maar 125 m 50 m 25 m
100 maar 100 m 40 m 20 m
200 maar 50 m 20 m 10 m
400 maar 25 m 10 m 5 m
500 maar 20 m 8 m 4 m
800 maar 12.5 m 5 m 2.5 m
1 In 10 m 4 m 2 m

Bij de berekening van de afstand rekening we houden met die de spanning laten vallen op de grond, niet hoger is dan 200 MV. De daling van de spanning op de stroomkabel, niet wordt veroorzaakt door transmissiefouten, Het kan ook worden veel hoger (de 5 V kan dalen naar beneden tot 3.3 V zonder problemen) In het geval van afgeschermde kabels ter plekke is het scherm, die heeft meestal minder weerstand dan aangegeven, Zo zullen de afstand groter.


Kabel capaciteit

De waarden van “maximale lengte” aangegeven in de bovenstaande tabel gelden alleen voor het aansluiten van de kabel met een capaciteit van ca. 100 PF per meter. De volgende tabel ziet u de correcties moeten worden toegepast om de meest gebruikte kabels.

Kabel
Externe
diameter
( mm )
Impedantie
( Ohm )
Capaciteit
(PF/mt.)
Weerstand
(milliohm
/ meter)
Max lengte corrector
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_(Sateliet tv)
6.8
75
51
100
x 2.0
RG56/In _(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
Netto kabel
min 50
Max 130
min 60
Max 200
x 2.0
x 0.7
PC-Audio-kabel
min 120
Max 300
min 500
Max 3000
x 0.8
x 0.5
Microphonic
kabel
min 60
Max 300
x 1.7
x 0.3
Telefoon twisted draad
50
100
x 2.0

Er zijn ook lage capaciteit kabels (weinig gebruikte en moeilijk te vinden):

  • 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

Het vermogen meten van een onbekende kabel:

  • Het perfecte villen afgeschermde kabel en behoud van geïsoleerde centraal onderdeel voorbereiden.
  • Meten tussen centrale en buitenste schild met een meter of capaciteit meter.
  • Ter verbetering van de meetnauwkeurigheid, vijf of tien meter kabel gebruiken.
  • De waarde van Picofarads gemeten door het aantal meter kabel verdelen.


Soorten apparaten

De apparaten worden aangeduid met een nummer van 0 in 199 identificeren van haar "Type".
Het stadium van erkenning en nummering van elk apparaat identificeert zich met dit "Type".

Op dit moment zijn de volgende apparaten gedefinieerd:

Apparaattype
Snelheid
min
Snelheid max
In uit Pins
Macht
Naam
0
Speciale “aangepaste” type
1
1
12
1
12 maar
Capacitieve Sensor
Hallo kwaliteit
2
1
12
10
INOUT dienaar
3
1
12
12
INOUT Generic
4
1
12
12
INOUT
5
6
Virtuele Master Pins
(eerste versie)
8
10
Virtuele Master Pins – V2
9 12 Virtuele Master Pins – V4
255 Onbekend

Maximum aantal apparaten
Het maximum aantal aansluitbaar apparaten wordt beperkt door:
– het maximum aantal bytes dat afhankelijk van de geselecteerde snelheid kan worden overgedragen.
– de maximale stroom die de "master" kan bieden (normaal 500 maar)
– het maximale aantal apparaten ondersteund door het Protocol is 200 (Van 0 in 199)


Soorten pin

Ik pin sono identificati con un numero da 0 in 255 che enregistratieregelingvoorrunderen il suo "PinType".

UITVOER Pin typen

Uitgang pins
Type
Naam
Master Slave
bytes
Slaaf van Master
bytes
0
ONGEBRUIKTE
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 STEPPER 4 0
7 PWM_FAST 5 0

INVOER Pin typen

Invoer Pin
Type
Naam
Master Slave
bytes
Slaaf van Master
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
TELLER
0
2
141
COUNTER_PU
0
2
142
FAST_COUNTER
0
2
143
FAST_COUNTER_PU
0
2
144
PERIODE
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


Communicatie tussen meester en slaven (Linea seriale)

Eerste byte Soort transmissie Transmissie Ontvangen
255 (*4) Speciale uitgebreid
(voor toekomstige uitbreiding)
1 bytes (uitbreiding)
>>>>> Zie de tabel met uitgebreide werkwoorden <<<<<
254 (*1) RecogStart
Vroege erkenning
en nummering
1 bytes (gegevens bytes nummer = 0)
1 bytes (CRC van Cmd / 0)
253 (*2) Ge
Voer volgnummer en het verzoek van type
1 bytes (gegevens bytes nummer = 1)
1 bytes (Van 0 in 199)
1 bytes (CRC van Cmd/Nbytes/Type)
1 bytes ( type )
1 bytes ( CRC )
251 (*3) FastDataExchange
Snelle gegevensuitwisseling.
1 bytes (gegevens bytes nummer = 0)
1 bytes (CRC Cmd/0)
Van 0 in 60 bytes aan gegevens
Van 0 in 63 bytes aan gegevens
249 (*4) SetupSlavePins
Voert u instellingen voor de
één pin “slaaf”
1 bytes (Slave index)
1 bytes (aantal gegevensbytes)
NN bytes (PinTypes: 1 bytes per pin)
1 bytes (CRC van Cmd/SlaveId/etc...)
1 bytes (Slave index)
1 bytes (CRC op bytes
vorige)
248 (*4) SetMasterName
Typ de naam van de “meester”
NN bytes (tekens van de naam beëindigd door nul)
247 (*4) GetMasterName
Lezen van de naam van de “meester”
NN bytes (tekens van
naam beëindigd door nul)
246 (*4) SendValuesToSlave
Verzenden “n” bytes
een slaaf “m”
(Max 56 bytes)
1 bytes (Slave index)
1 bytes (aantal bytes)
bytes 1 . . . byte n
1 bytes (CRC
Cmd/SlaveId/nBytes/n)
1 bytes (Slave index)
1 bytes (CRC op bytes
vorige)
245 (*4) GetValuesFromSlave
Verzoek om “n” bytes naar de slave “m”
(Max 56 bytes)
1 bytes (Slave index)
1 bytes (aantal bytes)
1 bytes (CRC van Cmd/SlaveId/nBytes)
byte1 . . byte n
1 bytes (Slave index)
1 bytes (CRC op
n + 1 vorige byte)
244 (*4) SendBytesToSlave
Verzenden “n” bytes aan slave “m”
(Max 56 bytes)
1 bytes (Slave index)
1 bytes (aantal bytes)
bytes 1 . . . byte n
1 bytes (CRC
Cmd/SlaveId/nBytes/n)
1 bytes ( Slave index )
1 bytes ( CRC ) van het aantal bytes
vorige
243 (*4) GetBytesFromSlave
Verzoek om “n” bytes naar de slave “m”
(Max 56 bytes)
1 bytes (Slave index)
1 bytes (aantal bytes)
1 bytes (CRC van Cmd/SlaveId/nBytes)
bytes 1 . . . byte n
1 bytes (Slave index)
1 bytes ( CRC ) over
n + 1 vorige byte
199 (*5) SetSpeed 1 bytes (Comm. Snelheid)
1 bytes (CRC op Cmd/Comm. snelheid)
0 Geen actie

(*1) Een di servizio.
(*2) De opdracht wordt alleen gebruikt door zowel de kapitein als de slaven er tijdens de herkenning.
(*3) Snelle communicatie – de kapitein uitwisselingen de waarden van alle slaven met slechts één USB-Exchange
(*4) Mededeling van de opdrachten voor de één slave
(*5) Speciale opdrachten

SendValuesToSlave Hiermee verzendt u de waarden naar de Pin van de Output van een slaaf (Fysieke formulieren op de Master of virtuele slaven)

GetValuesFromSlave leest van waarden van de Pin van de Input van een slaaf (Fysieke formulieren op de Master of virtuele slaven)

SendBytesToSlave verzenden van generieke bytes (in het volgende voorbeeld configuratie), naar een slaaf (Fysieke formulieren op de Master of virtuele slaven)

GetBytesFromSlave recht generieke bytes (bijvoorbeeld van staat), van een slaaf (Fysieke formulieren op de Master of virtuele slaven)

Alle opdrachten hebben codes van 200 in 255, om te voorkomen dat, in geval van fouten, -Id's en slaaf typen (Van 0 in 199) kan worden geïnterpreteerd als een opdracht. (Setspeed tellen niet omdat het nooit is verzonden langs de seriële lijn, maar alleen door ’ HAL, aan de kapitein, via USB)


Communicatie tussen de Host-computer en Master (USB)

Opdrachten uit “Host” naar “Master”

Opdrachtnaam ID
USB_TxData[0]
PARAMETERS
USB_TxData[1 aan n]
RecogStart CommandID, Nbytes
FastDataExchange CommandID, Van 0 Aan 60 gegevensbytes
SetupSlavePins CommandID, SlaveId, Nbytes
SetMasterName CommandID, MasterName (nul beëindigd)
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

Risposte da “Master” naar “Host”

Opdrachtnaam REACTIE
USB_RxData[0]
RETOURWAARDEN
USB_RxData[1 aan n]
RecogStart 0 = OK Nslaves, Slave Type1 … Slave Type N
FastDataExchange 0 = OK Van 0 Aan 63 gegevensbytes
SetupSlavePins 0 = OK
SetMasterName 0 = OK
GetMasterName 0 = OK Naam model (nul beëindigd)
SendValuesToSlave 0 = OK
GetValuesFromSlave 0 = OK Byte 1 … Byte N
SendBytesToSlave 0 = OK
GetBytesFromSlave 0 = OK Byte 1 … Byte N
SetSpeed 0 = OK

De nulpositie van de USB-Buffer geeft aan of de opdracht werd uitgevoerd vanuit “Master” met succes.


Berekening van de CRC

Alle CRC gebruikt worden berekend over een bepaald aantal opeenvolgende bytes en het CRC resultaat is een byte. CRC berekening met behulp van een algoritme gebaseerd op "Longitudinal redundancy check".

Longitudinale redundantiecontrole

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

Om te voorkomen dat "botsingen" tussen alledaagse sequenties ( Bijvoorbeeld, 0000 = 1111 of 123 = 321 ) en eenvoudige sequenties die geldig CRC produceren ( Bijvoorbeeld, 0000 met CRC = 0 ) de bovenstaande methode wordt gewijzigd met een permutatie.

Het berekenen van de CRC is resultaat efficiënte en zeer eenvoudige.

Berekening van de CRC gebruikt in dit Protocol

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


Instellen van de baud-rate

Als u besluit te gebruiken dan de standaard een baud-rate, vervolgens moet de "master" communiceren met alle apparaten in de keten de nieuwe snelheid.

Deze instelling moet mogelijk zelfs alvorens een lus apparaat erkenning en moet ook mogelijk zijn met zeer lange transmissielijnen. Daarom is er een speciale opdracht die nu wordt weergegeven.

1 – De Meester onderhoudt de hoge lijn voor 50 MS
2 – Alle de slaven zijn zeker geplaatst in afwachting van één teken
3 – Het model genereert een pauze (lage niveau lijn 12 bit op minimumsnelheid
4 – De Master kwesties een 55 karakter (01010101) de gewenste baud-rate
5 – Alle slaven concluderen de baud-rate van deze bytes (Auto-baud)
6 – De Master stuurt één byte die aangeeft van de "snelheid" (Van 1 in 12)
7 – De Master stuurt één byte van CRC berekend op twee bytes (cmd/snelheid)
8 – Als de Slave is verandert een fout niet de snelheid

dilbertian eig

Controleer de baud-rate

Als u instelt dat een te hoge snelheid transmissielijn in gebruik sommige apparaten in de keten kunnen niet kunnen ter ondersteuning van de instelling van de netwerkoverdrachtssnelheid en fouten kunnen optreden bij het verzenden van gegevens.

Als transmissiefouten nul of minder dan de 0.1% dan is de snelheid set geldig.


Erkenning en nummering

1 – De Master-uitgang van de slaaf de hele reeks van "Snelheid" instelling om ervoor te zorgen dat alle communicatie op dezelfde snelheid.
2 – De Master stuurt geen opdrachten 50 milliseconden.
3 – Op dit punt alle slaven moet wachten op een opdracht.
4 – De Master kwesties een code "254″ (RecogStart).
5 – Alle de slaven, ze de zwakke-pull-up (100-400 UA) op de input-output en de output verbinding naar stroomafwaartse apparaten openen. Ze reageren niet meer op alle opdrachten behalve "253″ (Ge).
6 – De Master kwesties een code "253″ (type aanvraag) en dan een byte met het nummer 0″, het eerste apparaat in de keten voldoet aan een byte met het type, Hiermee verwijdert u de pull-up, verbinding maken met de downstream slaaf en niet reageren op alle opdrachten.
7 – De Master kwesties een code "253″ (type aanvraag) en dan een byte met de nummer 1″, het tweede apparaat in de keten voldoet aan een byte met het type, Hiermee verwijdert u de pull-up, verbinding maken met de downstream slaaf en niet reageren op alle opdrachten.
8 – De Master kwesties een code "253″ (type aanvraag) en dan een byte met het nummer "2″,

…. de “253” (type aanvraag) herhaalt tot 200 keer
Wanneer niet langer reageert met een duur die groter is dan 10 beetje met huidige doorvoersnelheid, betekent dat de keten voorbij is. Om te voorkomen dat deze berekening, U kunt een time-out van 12 MS die altijd werkt, zelfs bij de laagste snelheid.

9 – De Master kwesties naar de slaven alle instelling reeks "Snelheid", dat toont alle de slaven in de normale communicatie-modus.
10 – De kapitein aan de Host wordt gemeld (PC) via USB Slave erkend aantal en het type van elk.

Roberto_Cena & Livio_Cicala (2010 – 2016)

Reacties zijn gesloten.