Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

NEXUS B.V.

HOLLAND NexBox

NexBox communicatie
15 / 05 / 2003

NEXUS B.V. HOLLAND


H. v.d. Brulestraat 24
3065 PG Rotterdam
tel. 010 – 288 74 15
fax. 010 – 288 74 16

Site: www.nexbox.nl
Email: nexus@nexnet.nl

File: NexBox_communicatie_01.doc Afdruk datum: 09-11-15 Pagina: 1 / 11


NEXUS B.V. HOLLAND NexBox

Voorwoord
Dit manual is ontstaan omdat bij sommige gebruikers van NexBoxen de behoefte bestaat om
zonder tussenkomst van de NexMaster de verzamelde data in de NexBox rechtstreeks in hun
applicatie in te lezen.

Dit betekent dat deze applicatie de volgende functies tot zijn beschikking moet krijgen:
 Starten van de dataopslag (= zetten van de tijd)
 Uitlezen van de dataopslag.
 Correctie van de tijd.

Voor alle beheer functies (installeren, aansluiten, modulen wijzigen, enz.) van de NexBoxen blijft
de NexMaster beschikbaar.

De beschreven functies in dit manual zijn een deelverzameling van de functies die bij NEXUS B.V.
HOLLAND wordt gebruikt.

Voorbeelden bij implementatie


Omdat het makkelijk is bij implementatie voorbeelden te hebben van de communicatie, kan de
NexMaster worden gebruikt. Met “Gebeurtenissen\communicatie monitor” in de NexMaster wordt
de line monitor ingeschakeld. Hier is nu exact te volgen hoe het communicatie verloop is tussen de
NexMaster en de NexBoxen.
De line monitor heeft een functie om te loggen in een file. Deze file kan worden afgedrukt op de
printer. U kunt dan gemakkelijk bekijken wat de eventuele verschillen in communicatie zijn bij de
NexMaster en uw eigen applicatie.

Opmerkingen
 De verderop genoemde CRC-16 berekening is eventueel beschikbaar in ‘C’ en ‘VB’.

File: NexBox_communicatie_01.doc Afdruk datum: 09-11-15 Pagina: 2 / 11


NEXUS B.V. HOLLAND NexBox

Communicatie naar de NexBox

Bij de communicatie naar een NexBox wordt gebruik gemaakt van het ‘Modbus’ protocol. Dit kan
zowel in multipoint (meerdere NexBoxen aan een veldbus) als in point-to-point (modem, gsm, isdn,
ethernet 10BaseT) worden gebruikt.

Voor alle verbindingen geldt:

Baudrate 9600 baud


Karakter lengte 8 databit
Parity No
Stopbits 1

Default adressen

NexBox adres (ModBus)


Wordt gebruikt om bij een 485 multidrop bus onderscheidt te kunnen maken tussen de
aangesloten NexBoxen.
Default adres: 6F Hex
Opm. Modulen die voor point-to-point verbindingen worden gebruikt (modem, isdn, gsm, ethernet,
enz. reageren op ALLE adressen (het adres is daar dus niet van belang).

Module_adres
Dit wordt gebruikt om de individuele printen die aan de interne bus in een NexBox van elkaar te
kunnen onderscheiden.

POWER 10 Hex
TCP/IP via 10Base-T 12 Hex
PSTN MODEM 1A Hex
GSM 1C Hex
ISDN 1E Hex
INPUT basis 20 Hex (+ jumper stand x 2)

De input modulen worden van elkaar onderscheidden door de Jumper stand.


- - - - 20 Hex (Positie B in de NexBox)
- - - J 22 Hex (Positie C in de NexBox)
- - J - 24 Hex (Positie D in de NexBox)
- - J J 26 Hex (Positie E in de NexBox)
- J - - 28 Hex (Positie F in de NexBox)
- J - J 2A Hex (Positie G in de NexBox)

- Geen jumper geplaatst


J Jumper geplaatst

File: NexBox_communicatie_01.doc Afdruk datum: 09-11-15 Pagina: 3 / 11


NEXUS B.V. HOLLAND NexBox

Routering voor Modbus


Modbus protocol is een multidrop protocol. Er wordt vanuitgegaan dat er altijd een apparaat moet
worden geadresseerd omdat er meerdere apparaten parallel kunnen zitten (in tegenstelling tot
‘point to point’. Hier is altijd slechts 1 apparaat aangesloten en behoeft dus geen adressering
aanwezig te zijn).

Standaard RTU:
start adres function data crc end

Start: 3,5 * karaktertijd geen karakters


Er worden geen karakters gedetecteerd op de bus gedurende deze tijd
Adres: Adres van het apparaat dat wordt aangesproken
Function: Functie die binnen apparaat gewenst is
Data: Toegevoegde data aan de functie
Crc: Checksum voor boodschap controle (CRC-16)
End: 3,5 * karaktertijd geen karakters

File: NexBox_communicatie_01.doc Afdruk datum: 09-11-15 Pagina: 4 / 11


NEXUS B.V. HOLLAND NexBox

NexBox modificatie
Omdat het NexBox systeem anders in elkaar zit als waar het Modbus protocol voor bedoeld is
(multidrop), moet een aangepast adresseringssysteem worden geïmplementeerd. Hierbij geldt dat
voor de buitenwereld het modbus protocol zichtbaar gelijk blijft (en dus ook eventueel gerout kan
worden).

Gemodificeerd RTU tbv NexBox:

start adres [adres,…]function data crc end

Start: 3,5 * karaktertijd


Adres: Adres van het apparaat dat wordt aangesproken
Waarde: 00 – 6F H
Adres 00: Modbus: Broadcast (niet geimplementeerd)
Betekenis: voert wel uit maar respons wordt onderdrukt.
Adres 6F: Default adres van power print (tbv installatie)
De NexMaster zoekt altijd op dit adres als eerste.
Adres 70-7E: Gereserveerd.
Adres 7F: Modbus: General Call
Betekenis reageert altijd (Er wordt niet op adres gelet)
dus niet bruikbaar op multi-drop wel op ‘point tot point’.
Kan ook gebruikt worden als het adres van het module niet meer
bekend is.
Adres 80-FF: Gereserveerd.

[adres,…] Subadressen naar waar het bericht moet worden doorgerout.


Waarde: 80 – FF H
Een subadres is gelijk aan een functie code in het normale Modcom protocol. De
NexBoxen interpreteren het 8e bit echter anders:
 8e bit 0: Functie code
Er is geen verdere subadressering. Het bericht wordt verder als een normaal
Modbus bericht behandeld
 8e bit 1: Een subadres
Het bericht moet door worden gestuurd naar de interne bus van de NexBox. Het
te gebruiken adres wordt bepaald door het 8e bit 0 te maken. Er is dan weer een
normaal modbus bericht beschikbaar.
Function: Functie die binnen apparaat gewenst is
Waarde: 00 – 7F H codering van gewenste commando’s
Data: Toegevoegde data aan de functie
Crc: Checksum voor boodschap controle (CRC-16)
End: 3,5 * karaktertijd

File: NexBox_communicatie_01.doc Afdruk datum: 09-11-15 Pagina: 5 / 11


NEXUS B.V. HOLLAND NexBox

Functie codering (00 – 7F H):


Er kunnen 127 functies worden gebruikt. Er zijn een aantal functies gereserveerd (zie
omschrijving)

Opmerking over de adressering:


Een communicatie module kan op 2 manieren op een bericht reageren:
 Adres + functie code
Het board wordt direct zelf aangesproken en reageert op de functie code
 Adres + subadres + functiecode
Er wordt een subadres herkend. De nieuwe resulterende boodschap heeft het adres van het
board die het bericht moet doorsturen (hij zit zelf immers ook aan de bus). Dit wordt herkend
en de functie code wordt uitgevoerd.
Vanzelfsprekend is de laatste methode langzamer.

Functie: 7EH Response bij fout in transfer naar sub_adres


 Geen / fout antwoord
 Fout of niet routeerbaar antwoord

Antwoord VB (Hex) Opm.


Adres 01
Sub adres 7E
Adres nn (gebruikte adres, dus zonder 8e bit)
Error check --

Functie: 7FH Response op niet bestaande functie of foute specificatie


Als een functie niet bestaat of de toegevoegde data leidt niet naar een eenduidige respons dan
wordt hetvolgende teruggestuurd.
Dit antwoord ontstaat ook als een board wordt aangesproken met een subadres dat geen
subadressering kent.

Antwoord VB (Hex) Opm.


Adres 01
Sub adres A0
Functie 7F
Ontvangen functie nr xx functie nr. dat niet goed kon worden behandeld
Error check --

File: NexBox_communicatie_01.doc Afdruk datum: 09-11-15 Pagina: 6 / 11


NEXUS B.V. HOLLAND NexBox

Functie: 01H Lees periode waarde(n) uit dataopslag.


Print: Input
Respons: Bij correcte specificatie

Reden voor implementatie:


De dataopslag is adresseerbaar op tijd. Binnen elk tijdsadres zijn een aantal kanalen beschikbaar.
Niet elk kanaal heeft relevante informatie (bv inputs die niet zijn aangesloten) Bij offline
verbindingen moet zo snel mogelijk relevante informatie worden opgehaald. De data van kanalen
waar ‘niets’ in staat zijn dus niet gewenst. Er wordt dus een vraag gesteld naar periode en kanaal
nummer. De gespecificeerde periode is de ‘oudste’ (in tijd) periode. Alle latere waarden zijn van
een later tijdstip (dus nieuwer). Als een periode wordt gespecificeerd waar geen gegevens van zijn
dan wordt met functie 7F geantwoord.
Als na een periode waar wel gegevens van zijn een latere periode komt waar nog geen gegevens
van verzameld zijn dan wordt FFFF teruggezonden (als afvulling van het datablok).

Opmerking:
 De datablok grootte kan maximaal 64 bytes zijn. Er moeten dus niet teveel waarden per keer
worden opgevraagd.
 Maanden die minder als 31 dagen hebben en die fout worden opgevraagd, worden niet als
zijnde fout gedetecteerd (dus 31 feb. is mogelijk)
 Opgeslagen perioden worden bepaald doordat het aantal minuten deelbaar is door 60. Als de
tijd gelijkgezet wordt (en de buffer dus gereset), kan de eerste periode minder minuten
bevatten dan de periode duur.

Vraag VB (Hex)
Adres 01
Sub adres A0
Functie 01
Jaar 01 Totaal dus 2001
Maand 01
Dag 01
Uur 00
Minuut 05 Bij opstart zonder tijd gelijk zetten is dit de eerste
Kanaal 00 Tellen vanaf 00 tot 09
Aantal waarden xx
Error check --

Antwoord VB (Hex) Opm.


Adres 01
Sub adres A0
Functie 01
Byte count zz = Aantal periode waarden * 2
Waarde 0, data high xx van opgegeven periode
Waarde 0, data low xx
Waarde 0, data high xx van opgegeven periode + 1 (dus later tijdstip)
Waarde 0, data low xx
Waarde 0, data high xx van opgegeven periode + 2 (nog later)
…..
Waarde 0, data high xx
Waarde 0, data low xx van opgegeven periode + x (nog later)
Error check --

File: NexBox_communicatie_01.doc Afdruk datum: 09-11-15 Pagina: 7 / 11


NEXUS B.V. HOLLAND NexBox

Functie: 02H Lees gegevens over de dataopslag.


Print: Input
Respons: Altijd

Reden voor implementatie:


Om alle gegevens uit de dataopslag te halen (zonder ‘trial and error’) dan moet je weten wanneer
de dataopslag gestart is en hoeveel gegevens momenteel opgeslagen zijn.

Vraag VB (Hex)
Adres 01
Sub adres A0
Functie 02
Error check --

Antwoord VB (Hex) Opm.


Adres 01
Sub adres A0
Functie 02
Jaar xx van start dataopslag
Maand xx
Dag xx
Uur xx
Minuut xx
Waarde HI xx Aantal opgeslagen waarden
Waarde Lo xx
Error check --

File: NexBox_communicatie_01.doc Afdruk datum: 09-11-15 Pagina: 8 / 11


NEXUS B.V. HOLLAND NexBox

Functie: 04H Read real-time clock


Print: Alle
Respons: Altijd

Reden voor implementatie:


De huidige systeemtijd van het board kan worden opgevraagd. Dit is nodig om deze te verifiëren
met de echte real-time en eventueel te kunnen corrigeren.

Vraag VB (Hex)
Adres 01
Sub adres A0
Functie 04
Error check --

Antwoord VB (Hex) Opm.


Adres 01
Sub adres A0
Functie 04
Eeuw xx van 0 tot 99
Jaar xx van 0 tot 99
Maand xx van 1 tot 12
Dag xx van 1 tot 31
Uur xx van 0 tot 23
Minuut xx van 0 tot 59
Seconde xx van 0 tot 59
0,1 sec eenheden xx van 0 tot 9
Error check --

File: NexBox_communicatie_01.doc Afdruk datum: 09-11-15 Pagina: 9 / 11


NEXUS B.V. HOLLAND NexBox

Functie: 05H Write real-time clock


Print: Alle
Respons: Altijd

Reden voor implementatie:


De huidige systeemtijd van het board kan worden gezet. Dit is voor de registratie van gegevens op
datum en tijd.
Opmerking:
 het doorgegeven formaat wordt niet gecontroleerd
dus de 40e dag van de 15e maand wordt geaccepteerd (40 - 15 – 9999).

OPGELET !!!: ALLE gegevens gaan op dit moment verloren. De opslag pointer van de
oudste gegevens wordt gelijk gemaakt aan die van de huidige gegevens (er zijn dus geen
oude gegevens meer). Alle gegevens die momenteel worden verzameld worden gereset (er
wordt dus overnieuw gestart met een periode telling). Dit hoeft niet te betekenen dat er een
volledige periode geteld wordt. De periode afsluiting wordt immers bepaald door een geheel
aantal minuten in 60 minuten.
Als het gewenst is om de tijd te corrigeren moet functie 06H worden gebruikt.

Vraag VB (Hex)
Adres 01
Sub adres A0
Functie 05
Eeuw xx van 0 tot 99
Jaar xx van 0 tot 99
Maand xx van 1 tot 12
Dag xx van 1 tot 31
Uur xx van 0 tot 23
Minuut xx van 0 tot 59
Seconde xx van 0 tot 59
0,1 sec eenheden xx van 0 tot 9
Error check --

Antwoord VB (Hex) Opm.


Adres 01
Sub adres A0
Functie 05
Eeuw xx van 0 tot 99
Jaar xx van 0 tot 99
Maand xx van 1 tot 12
Dag xx van 1 tot 31
Uur xx van 0 tot 23
Minuut xx van 0 tot 59
Seconde xx van 0 tot 59
0,1 sec eenheden xx van 0 tot 9
Error check --

File: NexBox_communicatie_01.doc Afdruk datum: 09-11-15 Pagina: 10 / 11


NEXUS B.V. HOLLAND NexBox

Functie: 06H Corrigeer de real-time clock


Print: Alle
Respons: Altijd

Reden voor implementatie:


De absolute tijd kan niet worden verzet zonder de opgeslagen waarden te resetten (zie 05H). Om
de tijd te kunnen corrigeren is deze functie geïmplementeerd. Er kan per seconde met 1 ms
worden gecorrigeerd.
Variatie mogelijkheden voor de wijze van implementatie:
 Master stuurt absolute tijd
De slave berekent hierna het verschil met zijn interne tijd. Hieruit wordt de correctie gehaald
om de absolute tijd bij te sturen.
Nadeel: Vanwege retries in het zenden door de master (en de relais) is het niet exact te
zeggen hoelang de boodschap onderweg is geweest. Op het moment van ontvangst kan de
tijddoorgifte dus zeer oud zijn. Deze wijze van wijzigen geeft geen zekerheid rond het gelijk
zetten.
 Master vraagt absolute tijd en stuurt correctie (deze is geimplementeerd).
De vraag kan een aantal retries hebben gehad. Het antwoord wordt zonder retries
doorgegeven. In het ergste geval gaat het immers verloren. Zodra de master de absolute tijd
van de slave heeft ontvangen, wordt de afwijking van de absolute tijd van de master berekend.
Deze correctie wordt naar de slave verstuurd.

Vraag VB (Hex)
Adres 01
Sub adres A0
Functie 06
Positieve correctie HI 00 Klok gaat enige tijd sneller lopen
Positieve correctie Lo 00
Negatieve correctie HI 00 Klok gaat enige tijd langzamer lopen
Negatieve correctie Lo 00
Error check --

Opmerking:
Als een evengroot sneller en langzamer getal wordt ingevoerd wordt niets gecorrigeerd.

Antwoord VB (Hex) Opm.


Adres 01
Sub adres A0
Functie 06
Eeuw xx van 0 tot 99
Jaar xx van 0 tot 99
Maand xx van 1 tot 12
Dag xx van 1 tot 31
Uur xx van 0 tot 23
Minuut xx van 0 tot 59
Seconde xx van 0 tot 59
0,1 sec eenheden xx van 0 tot 9
Error check --

File: NexBox_communicatie_01.doc Afdruk datum: 09-11-15 Pagina: 11 / 11

You might also like