Sie sind hier: Home » Zentraler SE » Beschreibung zSE

Zentraler Sende- Empfangspunkt

 

Inhaltsverzeichnis:

1       Allgemeine Anforderungen. 3

2       Peripherie Anschlüsse. 3

3       Protokoll 3

4       Protokollspezifisches. 4

4.1        Length Bytes (LEN) 4

4.2        Kommando-Byte (CDB) 4

4.3        Adressen. 5

4.4        CRC.. 5

5       Generelles Funk-Protokoll 5

5.1        Spezielles Protokoll für den zentralen Sende/Empfangspunkt 6

6       Beispiel Datenübertragung. 7

7       Namenskonventionen für Programmierung. 8

7.1        Sendefall 8

7.2        Empfangsfall 8

8       HF-Parameter 9

 


Versionsverfolgung

 

Version

Datum

Bemerkung

 

V0.1

18.06.16

Initialversion

 

V0.2

21.08.16

Quittungsantwort geändert, editorielle Ergänzungen

 

V0.3

07.10.16

Auf I2C ohne CRC für Kompatibilität mit RFM69W

 

V0.4

16.10.16

Der CRC16 wird wieder eingeführt und generell durch den uP gerechnet und bei LEN berücksichtigt

 

V0.4

17.01.17

Noch die Adresse des DS1621 nachgetragen

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


1       Allgemeine Anforderungen

Der zentrale Sende- Empfangspunkt besteht aus den RN-Kontroller-Modul, bestückt mit einem RFM12-Funkmodul (5V-Version!) sowie einem I2C-Leitungspuffer. Die Einheit wird mit 5V fernversorgt. Alternativ kann auch das Universal-S/E-Modul verwendet werden.

Weiter beinhaltet der zentrale Sende/Empfänger einen Temperatursensor. Dazu wird ein DS18B20 (1-wire) verwendet. Ein 2ter I2C-Temperatursensor ist zusätzlich noch auf der Platte montiert.

 

2       Peripherie Anschlüsse

Verwendetes Kontrollermodul: RN-Mikrofunk oder als Alternative das Modul Universal-S/E

Von Modul RN-Mikrofunk werden die folgenden  Pins verwendet:

Pin

Cotrollerport

Signal

Bemerkumg

1

 

Antenne

Antenne

2

 

GND

13

PD7

1-Wire

Temperatursensor

21

PD1

TxD

zur Protokollierung

22

PD0

RxD

zur Protokollierung

23

PC6

Reset

 

24

PC5

SCL

I2C

25

PC4

SDA

I2C

29

 

+5V

 

30

 

+5V

 

31

 

GND

 

32

 

GND

 

 

Das Modul wird auf eine Trägerplatte gesteckt die auch den I2C-Puffer beinhaltet.                       

3       Protokoll

Das verwendete Protokoll zur Ansteuerung des zentralen S/E-Punktes ist das gleiche wie zur Kommunikation mit den Funkteilnehmern, jedoch ohne Preamble- ,Synchronisationsbytes und CRC. Da im Zentralen S/E-Punkt ein 5V RFM12-Modul eingesetzt wird muss der CRC16 im Zentralen S/E-Punkt erzeugt werden.

Die via I2C von der Zentrale ankommenden Daten werden auf die eigene Adresse (DAB) überprüft. Wird diese erkannt so wird die entsprechende Aktion ausgeführt. Bei allen anderen Adressen werden die Daten 1:1 zum Sendemodul weitergeleitet und mit dem CRC ergänzt.

Vom Empfangsmodul empfangene Daten werden auf den CRC überprüft. Ist dieser in Ordnung werden die Daten ohne CRC via I2C-Bus zur Zentrale weitergeleitet (ab LEN ohne CRC1).

 

Das folgende Beispiel zeigt ein kleines Datenpaket mit CRC16-Fehlerdetektion:

I2C-Adr

R/W

LEN

DAB

SAB

CDB

Data0

Datax

CRC2

CRC1

Stop

< I2C-Adresse ->

ß------------------------------- Nutzdaten  -----------------------------------à

I2C

Die Nutzdaten werden so zum Sender weitergereicht.

 

 

 

Name

Bezeichnung (original)

Bezeichnung (deutsch)

Byte

Umfang

CRC

LEN

Length Byte

Länge/Anzahl Bytes

1

 

T

|

CRC-

Berechnung

|

DAB

Destination Address Byte

Empfängeradresse

2

T

I

|

LEN: Länge

|

|

        

SAB

Source Address Byte

Senderadresse

3

CDB

Command Definition Byte

Kommandobyte

4

DATA1

Data Byte 1

Datenbyte 1

5

CRC2

High byte of CRC-16

höherwertiges Byte der CRC16

6

nicht be-rücksichtigt

CRC1

Low byte of CRC-16

niederwertiges Byte des CRC16

7

Die gesamte Paketlänge beträgt hier sieben Byte. Die Bytes sind mit ihrem LSB rechts positioniert (Bit7…Bit0). Hier wird 1 Byte Daten übertragen.

 

 

4       Protokollspezifisches

4.1              Length Bytes (LEN)

Dem Byte SYNC folgt das Längen-Byte LEN. Dieses legt die Anzahl zu übertragenden Bytes fest.

 

Bit

 

7

6

5

4

3

2

1

0

LEN

LEN

 

LEN:     Dies gibt die Anzahl Bytes (DAB bis und mit letztem Datenbyte) an, OHNE LEN und die CRC-Bytes.

 

 

4.2              Kommando-Byte (CDB)

Das Kommando-Byte beinhaltet folgende Funktionen:

 

Bit

 

7

6

5

4

3

2

1

0

CDB

ACK/NACK

C/D

R1

PN

 

Die enthaltenen Bits haben die folgende Bedeutung:

Name

Bezeichnung

PN

Fortlaufende Paket-Nummer (0..15 und wieder von vorne)

R1

Reservebit, vorläufig 0

C/D

Kommando = 0 / Daten = 1

ACK

ACK/NAK Bits

 

ACK

Definition

 

 

0 0

Sender fordert kein Acknowledge

 

 

0 1

Sender fordert Acknowledge

 

 

1 0

Empfänger sendet NACK zurück

C/D = 1; R1 = 0; PN = 1

&hD1

1 1

Empfänger sendet ACK zurück

&h91

 

PN:       Paketnummer, die gesendeten Pakete werden von 0 bis 15 durchnummeriert. Dann wird wieder mit 0 gestartet. Eine komplett neue Datenpaketfolge beginnt jedoch immer mit 1. Damit können fehlende Pakete festgestellt und eine Widerholung angefordert werden.
Wird eine Quittung gesendet so werden die Paketnummer PN auf hex 1, das Reservebit R1 auf 0 und C/D auf 1 gesetzt.

C/D:     Kommandobyte; mit log.0 werden die folgenden Daten als Kommando interpretiert, mit 1 als Daten. Vorläufig bleibt das Bit beim Datensenden log.1, bei der Quittung log.0.

 

4.3              Adressen

Die Adresse besteht aus einem Byte.

Die I2C-Adresse des zentralen Sende/Empfangspunktes ist:             Dezimal  118        Hex 76

Die I2C-Adresse der Zentrale ist:                                                           Dezimal  114        Hex 72

Die I2C-Adresse des Temperaturgebers DS1621 ist:                           Dezimal  144        Hex 90

Die Adresse des zentralen S/E-Punktes (= Modul)  ist:                       Dezimal    5          Hex 05

Die Funk-Adresse des zentralen S/E-Punktes (= Zentrale) ist:           Dezimal  85          Hex 55

 

4.4              CRC

Der CRC wird als 16Bit-CRC realisiert und umfasst alle Bytes bis zum letzten übertragenen Datenbyte ohne die 2 CRC-Bytes.



5       Generelles Funk-Protokoll

Das Protokoll wird auf maximal 60 Nutzbytes beschränkt. Dies um eine spätere Verschlüsselung bei Verwendung des RFM69CW zu ermöglichen und im Funkmodulrechner RAM zu sparen.

Das Protokoll ist so ausgelegt dass mit oder ohne Quittung gearbeitet werden kann. Temperaturen können z.B. alle Minuten gesendet werden; dann ist eine Quittung nicht notwendig. Bei Steuerbefehlen und Datenübertragungen muss jedoch eine Empfangsquittung erfolgen.

Die Anzahl der Sende-Wiederholungen bei keiner oder negativer Quittung kann festgelegt werden sollte jedoch auf 2 Sende-Wiederholungen beschränkt werden.

Um bei batteriebetriebenen Modulen Strom zu sparen läuft deren Empfänger nicht ständig. Der Empfänger wartet jedoch eine bestimmte Zeit nach dem Senden von Daten resp. nach dem Empfang der Quittung ob Daten an ihn gesendet werden. Diese müssen also direkt danach folgen.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<---- T2 max. Wartezeit auf Quittung ---->

 

 

 

 

 

 

 

hAA

hAA

h2D

hD4

hxx

Zent

Sens

 

<-max. 62 Datenbytes->

 

 

<---- T1 --->

 

 

 

 

 

 

 

 

 

 

 

 

Pre

Pre

Syn

Syn

LEN

DAB

SAB

CDB

D1

D2

……

Dx

CRC

CRC

Umschalt- &

Auswerte-zeit

SàE

<------------------------------------ T3 -------------------------------------------->

 

 

 

 

 

 

 

<---------------------------- für LEN massgebend --------------------------->

 

 

 

 

 

Sens

Zent

 

 

 

 

 

 

 

 

 

<----------------- für CRC massgebend -------------------------->

 

 

Pre

Pre

Syn

Syn

LEN

DAB

SAB

CDB

CRC

CRC

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hAA

hAA

h2D

hD4

h05

 

h55

hD1

=

ACK

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h91

=

NACK

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<--T4   max. Wartezeit auf zusätzliche Daten  -->

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

------ Quittung ----------à

<---- T5 ---->

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Zent

 

 

 

 

 

hAA

hAA

h2D

hD4

hxx

Sens

Zent

 

<-max. 62 Datenbytes->

 

 

 

 

 

 

 

 

 

 

SAB

CDB

CRC

CRC

 

 

Pre

Pre

Syn

Syn

LEN

DAB

SAB

CDB

D1

D2

……

Dx

CRC

CRC

 

 

 

 

 

 

 

 

h55

hD1

=

ACK

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h91

=

NACK

 

<-------------------------------------- weitere Daten zum Sensor --------------------------------------->

 

 

 

 

 

 

 

 



 

2400 Baud

4800 Baud

9600 Baud

19200 Baud

38400 Baud

T1 (Annahme)

2 ms

2 ms

2 ms

2 ms

2 ms

T2

20 ms

10 ms

7 ms

5 ms

4  ms

T3

33,33 ms

16.66 ms

8,33 ms

4,2 ms

2,1 ms

T4

30 ms

18 ms

12 ms

9 ms

8 ms

T5 (Annahme)

5 ms

5 ms

5 ms

5 ms

5 ms

 

5.1      Spezielles Protokoll für den zentralen Sende/Empfangspunkt

Alle Daten, die via zSE (zentrales Sende/Empfangspunkt) gesendet werden sollen werden nach dem gleichen Schema übertragen. Der zSE analysiert die Zieladresse. Ist die Meldung an ihn gerichtet so wird diese ausgeführt. Bei allen anderen Adressen wird das ganze Datenpaket 1:1 über den Sender gesendet.

Im Empfangsfall werden die empfangenen Daten direkt an die Zentrale weitergeleitet (Multimasterbetrieb).

 

 

 


 

6       Beispiel Datenübertragung

 

 

 

 

 

 

h55

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hAA

hAA

h2D

hD4

 

Zentrale

Sensor

 

ß--------------------------- Daten ----------------------------à

 

 

<-----------------------------------------------------   max. Wartezeit auf Quittung 50 ms -----------------------------------------------------à

 

Pre

Pre

Sync

Sync

LEN

DAB

SAB

CDB

D1

D2

D3

D4

D5

D6

CRC2

CRC1

Umschaltzeit &

Auswertezeit

S à E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h0B

ß--------------------------------------------------- für LEN massgebend ------------------------------------------------à

 

 

 

 

 

Sensor

  Zentrale

 

 

 

 

 

 

 

 

 

ß---------------------------------------------- für CRC massgebend ----------------------------------------à

 

 

Pre

Pre

Sync

Sync

LEN

DAB

SAB

CDB

CRC2

CRC1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hAA

hAA

h2D

hD4

h05

 

h55

hD1

=

ACK

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h91

=

 NACK

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sensor

Dezimal

SAB

 

 

Baud

Temperatursender

 

 

 

1 Byte  bei

Dauer

 

 

 

Baud

Quittung

 

 

1

5

h05

 

 

1200

107 ms

 

 

 

1200

6,66 ms

 

 

 

1200

67 ms

 

 

2

6

h06

 

 

2400

53 ms

 

 

 

2400

3,33 ms

 

 

 

2400

33 ms

 

 

3

7

h07

 

 

4800

27 ms

 

 

 

4800

1,66 ms

 

 

 

4800

17 ms

 

 

4

8

h08

 

 

9600

13 ms

 

 

 

9600

0,83 ms

 

 

 

9600

8 ms

 

 

5

9

h09

 

 

19200

7 ms

 

 

 

19200

0,42 ms

 

 

 

19200

4 ms

 

 

6

10

h0A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

11

h0B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

12

h0C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Zentrale

85

h55

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


7       Namenskonventionen für Programmierung

7.1              Sendefall

 

Byte-Nr.

1

2

3

4

5

6

7

8

---

64

65

66

 

 

 

 

Pre

Pre

Sync

Sync

LENs

DABs

SABs

CDBs

D1

D2

D3

D4

---

Dz

CRC2s

 CRC1s

 

 

 

 

 

 

Sendebytes (max 66)

 

 

ß--------------------------------------------------------      AnzahlByte_s    ---------------------------------------------------------à

 

 

 

 

 

 

 

 

 

Sendedaten;   max. 60 Zeichen

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Stringlaenge_s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dim Sendebytes(66) as Byte

Max. mögliche Bytes, nutzbar sind 60 Bytes

 

Dim AnzahlByte_s as Byte

Anzahl Sende-Bytes ab Sync bis und mit CRC1

 

Dim LENs as Byte at Sendebytes(1) Overlay

Länge

 

Dim DABs as Byte at Sendebytes(2) Overlay

Zieladresse  (Adresse des Empfängers)

 

Dim SABs as Byte at Sendebytes(3) Overlay

Adresse des Senders (eigene Adresse)

 

Dim CDBs as Byte at Sendebytes(4) Overlay

Kommandobyte

 

Dim Sendedaten * 62 as String at Sendebytes(5) Overlay

Netto-Sendedaten-String

 

Dim Stringlaenge_s as Byte

Aktuelle Sendestringlänge

 

Dim CRC_16s as Word

CRC16 Senden

 

 

 

7.2              Empfangsfall

 

Byte-Nr.

1

2

3

4

5

6

7

8

---

62

63

64

65

66

 

Pre

Pre

Sync

Sync

LENe

DABe

SABe

CDBe

D1

D2

D3

D4

---

Dx

Dy

Dz

CRC2e

CRC1e

 

 

 

IRQ_Empfangsbytes (max 66)

 

ß---------------------------------------------------------------     IRQ_AnzahlByte    ----------------------------------------------------------------à

 

 

 

 

 

   Wird für die weitere Verarbeitung umkopiert wenn vollständig  

 

 

 

 

 

 

 

Empfangsbytes (max 66/68)

 

 

 

 

 

ß------------------------------------------------------------------------      AnzahlByte_e    --------------------------------------------------------------------à

 

 

 

 

 

 

 

 

 

Empfangsdaten;   max. 60 Zeichen

 

 

 

 

 

 

 

 

 

 

 

Stringlaenge_e

 

 

 

 

Dim IRQ_Empfangsbytes(66) as Byte

Max. mögliche Bytes, nutzbar sind 60 Bytes

Dim IRQ_AnzahlByte as Byte

Anzahl Empfangs-Bytes ab Sync bis und mit CRC1

Dim Empfangsbytes(66) as Byte

Max. mögliche Bytes, nutzbar sind 60 Bytes

Dim AnzahlByte_e as Byte

Anzahl Empfangs-Bytes ab Sync bis und mit CRC1

Dim LENe as Byte at Empfangsbytes(1) Overlay

Längenbyte

Dim DABe as Byte at Empfangsbytes (2) Overlay

Adresse des Empfängers

Dim SABe as Byte at Empfangsbytes (3) Overlay

Adresse des Senders

Dim CDBe as Byte at Empfangsbytes (4) Overlay

Kommandobyte

Dim Empfangsdaten * 62 as String at Empfangsbytes(5) Overlay

 

Dim Stringlaenge_e as Byte

Aktuelle Empfangsstringlänge

Dim CRC_16e as Word

CRC16 Empfang

8       HF-Parameter

 

Sendefrequenz:                868.300 MHz
Sendeleistung:                  3 mW (5 dBm)
Hub:                                   
±45 kHz
Bandbreite:                          67 kHz
Baudrate Air:                       4800 / 9600 /19200 Baud

 

 

Codes für

 

 

 

h80xx

Configuration Setting

h80E8

h82xx

Power Management

Rx: h82D9

Tx: h8238

hAxxx

Frequency Setting

hA67C

hC6xx

Air Data Rate

4800:   hC647
9600:   hC623
19200: hC611

H9xxx

Receiver Control

h95D2

hC2xx

Data Filter 

hC2AD

hCAxx

FIFO and Reset Mode

stop:     hCA81 enable: hCA83

hCED4

Synchron Pattern

hCED4

hB0xx

Receiver FIFO Read

hB000

hC4xx

AFC

hC483

H9xxx

TX Configuration Control

h9820

hCCxx

PLL Setting

hCC76

hB8xx

Transmitter Register Write

hB800

hE/Fxxx

Wake-Up Timer

hE000

hC8xx

Low Duty-Cycle

hC800

hC0xx

Low Battery Detector and Microcontroller Clock Divider

hC000

 

 

 

 

4.8 kbps

9.6 kbps

19.2 kbps

BW=67 kHz

δf FSK =45kHz

BW=67 kHz

δf FSK =45 kHz

BW=67 kHz

δf FSK =45 kHz