rocnet:rocnet-prot-fr
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | rocnet:rocnet-prot-fr [2019/02/12 23:35] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Le protocole RocNet ====== | ||
+ | [[: | ||
+ | [[: | ||
+ | * [[: | ||
+ | * [[: | ||
+ | * [[: | ||
+ | \\ | ||
+ | **RocNet => Réseau Rocrail(r)**\\ | ||
+ | C'est un protocole binaire Open Source prévu pour la communication entre deux et plusieurs, dans un réseau d' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Réseau sans maître ===== | ||
+ | {{ rocnet: | ||
+ | L' | ||
+ | Il y a différents types d' | ||
+ | * E/S, pour les aiguillages, | ||
+ | * Générateurs DCC | ||
+ | * Décodeurs mobile et stationnaire activés par WLAN | ||
+ | * Ordinateurs | ||
+ | * ... | ||
+ | Tous doivent avoir leurs propre identifient unique qui sont utilisés comme paramètre expéditeur/ | ||
+ | L' | ||
+ | Alors dans le cas de Rocrail l' | ||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Identifiants réservés===== | ||
+ | ^ ID ^ Description ^ Note ^ | ||
+ | | 0 | Diffusion | Tous les nœuds l' | ||
+ | | 1 | Serveur Rocrail. | C'est l' | ||
+ | | 65535 | L' | ||
+ | \\ | ||
+ | |||
+ | ===== Configuration ===== | ||
+ | {{: | ||
+ | Plus d' | ||
+ | \\ | ||
+ | |||
+ | ====UDP 8 bit==== | ||
+ | UDP est la méthode de communication par défaut recommandée qui est également utilisée en combinaison avec les RocNetNodes.\\ | ||
+ | Toutes les autres méthodes sont limitées à la communication " | ||
+ | |||
+ | __Réglages par défaut: | ||
+ | * adresse: 224.0.0.1 (http:// | ||
+ | * port: 4321 -> Assurez-vous qu' | ||
+ | \\ | ||
+ | |||
+ | ====ASCII HEXA 16 bit==== | ||
+ | Cela peut être utilisé pour une communication série utilisant seulement les caractères ASCII.\\ | ||
+ | Le début du paquet démarre avec un **@** et le reste est en HEXA((Un octect est représenté par deux caractères ASCII.)). (La valeur de 255 est représenté en HEXA par " | ||
+ | Les caractères ASCII utilisés: | ||
+ | < | ||
+ | @ 0 1 2 3 4 5 6 7 8 9 A B C D E F | ||
+ | </ | ||
+ | Après la détection du début du paquet les 16 premiers caractères (8 octects), l' | ||
+ | La longueur des données est dans deux derniers caractères de l' | ||
+ | |||
+ | __Exemple: | ||
+ | Une commande de mise sous tension de la voie envoyée à partir du serveur: | ||
+ | < | ||
+ | @000000000101020101 | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ====7 bit série==== | ||
+ | | :!: L' | ||
+ | __Réglages par défaut: | ||
+ | * dispositif: com1 | ||
+ | ===Exemple=== | ||
+ | <code xml> | ||
+ | <digint iid=" | ||
+ | <rocnet id=" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Format du paquet ===== | ||
+ | | 8 Byte Header | ||
+ | | réseau | ||
+ | ^ netid ^ idH ^ idL ^ idH ^ idL ^ groupe ^ code ^ longueur | n octets de données | optionnel pour 7-bit |\\ | ||
+ | |||
+ | |||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ===== Contenu du paquet ===== | ||
+ | === Identifiant réseau === | ||
+ | Pour grouper les unités dans un large système. Laisser à zéro si il n'y a qu'un seul réseau actif.\\ | ||
+ | Le bit 7 doit être réglé en cas de 7 bit série.\\ | ||
+ | Alternativement il peut être utilisé comme identifiant d' | ||
+ | |||
+ | === Destinataire === | ||
+ | Chaque unité sur le réseau à son propre identifiant.\\ | ||
+ | Si laissé à zéro toutes les unités doivent évaluer le paquet. Cela peut être utile pour les requêtes pour voir quels dispositifs sont disponibles.\\ | ||
+ | === Expéditeur === | ||
+ | L' | ||
+ | Une valeur à " | ||
+ | === Action === | ||
+ | Si l' | ||
+ | === Longueur === | ||
+ | Nombre net d' | ||
+ | === Donnée === | ||
+ | La partie variable du paquet qui dépend de l' | ||
+ | La longueur peut être réglée à zéro si aucune information futur n'est nécessaire pour l' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | === Identifiant Réseau === | ||
+ | | bit ^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^ | ||
+ | ^ 8 bits | ID (0-255) | ||
+ | ^ 7 bits | 1 | ID (0-127) | ||
+ | L' | ||
+ | \\ | ||
+ | |||
+ | === Identifiant de nœud Haut/Bas === | ||
+ | | bit ^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^ | ||
+ | ^ 8 bits | ID (0-255) | ||
+ | ^ 7 bits | 0 | ID (0-127) | ||
+ | == Calcul de l' | ||
+ | < | ||
+ | < | ||
+ | |||
+ | |||
+ | === Groupe === | ||
+ | | bit ^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^ | ||
+ | ^ 8 bit | code groupe (0-255) | ||
+ | ^ 7 bit | 0 | code groupe (0-127) | ||
+ | \\ | ||
+ | |||
+ | === Code === | ||
+ | | bit ^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^ | ||
+ | ^ fonction | 0 | 2 bit type (0-3) || 5 bit code (0-31) | ||
+ | ==Type== | ||
+ | * 0 requête | ||
+ | * 1 évènement | ||
+ | * 2 réponse | ||
+ | Si le type est un évènement ou une réponse, aucune action d'E/S réelle ne doit être effectuée sur l' | ||
+ | \\ | ||
+ | |||
+ | === Longueur === | ||
+ | | bit ^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^ | ||
+ | ^ 8 bit | nombre d' | ||
+ | ^ 7 bit | 0 | nombre d' | ||
+ | \\ | ||
+ | |||
+ | === Donnée === | ||
+ | | bit ^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^ | ||
+ | ^ 8 bits | 8 bits de donnée (0-255) ||||||||\\ | ||
+ | ^ 7 bits | 0 | 7 bits de donnée (0-127) ||||||||\\ | ||
+ | \\ | ||
+ | |||
+ | === CRC === | ||
+ | Optionnel pour les connexions série 7-bit:\\ | ||
+ | Le complément à 1 du OU exclusif au niveau du bit de tous les octets dans le message.\\ | ||
+ | ==Exemple de code== | ||
+ | <code c> | ||
+ | unsigned char rnChecksum(const unsigned char *b, int len) { | ||
+ | unsigned char chksum = 0xff; | ||
+ | int i; | ||
+ | for (i = 0; i < len; i++) { | ||
+ | chksum ^= b[i]; | ||
+ | } | ||
+ | return chksum; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Groupes ===== | ||
+ | ^ Code ^ Description ^ Remarque ^ sujet MQTT ^ | ||
+ | | 0 | Hôte | Rocrail | '' | ||
+ | | 1 | Centrale numérique | ||
+ | | 2 | Décodeurs mobiles | ||
+ | | 3 | Décodeurs stationnaires | ||
+ | | 4 | Programmation mobile | ||
+ | | 5 | Programmation stationnaire | Incluant les centrales numériques | '' | ||
+ | | 6 | Transfert de données GP | Transfert de données à usage général entre les modules | '' | ||
+ | | 7 | Horloge | ||
+ | | 8 | Détecteur | ||
+ | | 9 | Sortie | ||
+ | | 10 | Entrée | ||
+ | | 11 | Son | ||
+ | | 12 | Afficheur | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== Hôte ==== | ||
+ | |||
+ | === Actions === | ||
+ | ^ act ^ description ^ data 1 ^ data 2 ^ data 3 ^ data 4 ^ data 5 ^ data 6 ^ data 7 | données de réponse 1 | données de réponse 2 | | ||
+ | | 1 | Arrêt | | | | | | | | | | | ||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== Centrale numérique ==== | ||
+ | |||
+ | === Actions === | ||
+ | ^ act ^ description ^ data 1 ^ data 2 ^ data 3 ^ data 4 ^ data 5 ^ data 6 ^ data 7 ^ data 8 | données de réponse 1 | données de réponse 2 | | ||
+ | | 0 | NOP | | | | | | | | | 0 | | | ||
+ | | 1 | requête | | | | | | | | | statut | | | ||
+ | | 2 | alimentation de la voie | 0 = off, 1 = on | | | | | | | | statut | | | ||
+ | | 3 | arrêt | | | | | | | | | statut | | | ||
+ | | 4 | version | | | | | | | | | versionH | versionL | | ||
+ | | 5 | PT on/off | on/off | | | | | | | | on/off | | | ||
+ | | 6 | vélocité | ||
+ | | 7 | fonction | addrH | addrL | F1-F8 | F9-F16 | ||
+ | | 8 | POM | addrH | addrL | cvH | cvL | value | opération: 0=obtenir, 1=régler | ||
+ | | 9 | Aiguillage | commande | type | | adresse | | | | | | | | ||
+ | | 10 | Sortie | commande | type | value | adresse | | | | | | | | ||
+ | | ||
+ | |||
+ | |||
+ | == Statut == | ||
+ | ^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^ | ||
+ | | 0 | | ||
+ | \\ | ||
+ | |||
+ | ==== Mobile ==== | ||
+ | === Actions === | ||
+ | ^ requête ^^^^^^^^| | ||
+ | ^ code ^ description ^ donnée 1 ^ donnée 2 ^ donnée 3 ^ donnée 4 ^ donnée 5 ^ donnée 6 ^ donnée 7 | donnée 1 | donnée 2 | donnée 3 | donnée 4 | | ||
+ | | 0 | NOP | | ||
+ | | 1 | réglage | ||
+ | | 2 | vélocité | 0...127 | direction | lumières | ||
+ | | 3 | fonction | F1-F8 | F9-F16 | ||
+ | | 4 | requête | ||
+ | | 5 | fieldcmd | adresse de base | V_raw | dirf | fg 0+1 | fg 2+3 | fg 4+5 | fg 6+7 | | ||
+ | \\ | ||
+ | |||
+ | ===Type de protocole=== | ||
+ | ^ Code ^ Type ^ Description ^ | ||
+ | | 0 | 256 | 256 pas interprété (8 bit seulement) | | ||
+ | | 1 | DCC 28 | NMRA DCC avec 28 crans de vitesse | | ||
+ | | 2 | DCC 128 | NMRA DCC avec 128 crans de vitesse | | ||
+ | | 3 | DCC 14 | NMRA DCC avec 14 crans de vitesse | | ||
+ | | 3 | MM 1 | [[: | ||
+ | | 4 | MM 2 | [[: | ||
+ | | 5 | MM 3 | [[: | ||
+ | | 6 | MM 4 | [[: | ||
+ | | 7 | MM 5 | [[: | ||
+ | \\ | ||
+ | ===Exemples=== | ||
+ | ==Arrête toutes les locomotives envoyé par le serveur Rocrail:== | ||
+ | ^ netid ^ rcptH ^ rcptL ^ sndrH ^ sndrL ^ groupe ^ code ^ longueur ^ velocité ^ direction ^ lumières ^ | ||
+ | | 0 | 0 | 0 | 0 | 1 | 2 | 2 | 3 | 0 | 0 | 0 | | ||
+ | | tout | tout | tout | srvr | srvr | mobile | velocité | ||||\\ | ||
+ | Représentation binaire: | ||
+ | < | ||
+ | 00 00 00 00 01 02 02 03 00 00 00 | ||
+ | </ | ||
+ | Représentation ASCII HEXA: | ||
+ | < | ||
+ | @0000000001020203000000 | ||
+ | </ | ||
+ | |||
+ | La direction et les lumières restent inchangées parce que le bit 6 des deux octets ne sont pas définis.\\ | ||
+ | |||
+ | \\ | ||
+ | ==Réglage de la vélocité par le serveur Rocrail:== | ||
+ | * Adresse Locomotive = 291 | ||
+ | * Velocité = 48 | ||
+ | * Direction = avant | ||
+ | * Lumières = off | ||
+ | |||
+ | ^ netid ^ rcptH ^ rcptL ^ sndrH ^ sndrL ^ groupe ^ code ^ longueur ^ velocité ^ direction ^ lumières ^ | ||
+ | | 0 | 1 | 35 | 0 | 1 | 2 | 2 | 3 | 48 | 65 | 64 | | ||
+ | Représentation binaire: | ||
+ | < | ||
+ | 00 01 23 00 01 02 02 03 30 41 40 | ||
+ | </ | ||
+ | Représentation ASCII HEXA: | ||
+ | < | ||
+ | @0001230001020203304140 | ||
+ | </ | ||
+ | \\ | ||
+ | |||
+ | ==== Stationnaire ==== | ||
+ | === Actions === | ||
+ | | |||||| | ||
+ | ^ code ^ description ^ donnée 1 ^ donnée 2 ^ donnée 3 ^ donnée 4 | donnée 1 | donnée 2 | donnée 3 | donnée 4 | donnée 5 | donnée 6 | donnée 7 ^ | ||
+ | | 0 | NOP | | | | | 0 | | | | | ||
+ | | 1 | single port | 0,1 (off,on) | protocole/ | ||
+ | | 2 | port paire | 0,1 (fermé, | ||
+ | | 3 | port multiple | masque du port | 0...255 ou l' | ||
+ | | 4 | requête port simple | port | | | | addrH | addrL | statut | | | ||
+ | | 5 | requête port paire | port | | | | addrH | addrL | statut | | | ||
+ | | 6 | requête port multiple | port | | | | addrH | addrL | statut n | | | ||
+ | | 7 | report¹ | | | | | addrH | addrL | statut1 | statut2 | | ||
+ | | 8 | identifier | | | | | classe | manuID | versionH | versionL | nr E/S | subipH | subipL | | ||
+ | | 9 | arrêt | 1=les nœuds doivent également s' | ||
+ | | 10 | accuser réception | code action | portnr optionnel | | | | | | | | ||
+ | | 11 | afficher² | | | | | | | | | | ||
+ | | 12 | début de journée | | | | | | | | | | ||
+ | | 13 | rapport d' | ||
+ | |||
+ | ¹) Tous les décodeurs stationnaires doivent rapporter leur statuts si le destinataire est réglé à zéro.\\ | ||
+ | ²) Le bouton poussoir sur le nœud déclenchera la boite de dialogue RocNetNode qui apparaîtra avec le nœud sélectionné. Une requête affichée à partir de l' | ||
+ | \\ | ||
+ | |||
+ | ==== Programmation ==== | ||
+ | Pour la programmation des décodeurs stationnaires l' | ||
+ | === Actions === | ||
+ | ^ code ^ description ^ donnée 1 ^ donnée 2 ^ donnée 3 ^ donnée 4 ^ donnée 5 | donnée de réponse 1 | donnée de réponse 2 | donnée de réponse 3 | donnée de réponse 4 | donnée de réponse 5 | donnée de réponse 6 | donnée de réponse 7 | donnée de réponse 8 | donnée de réponse 9 | donnée de réponse 10 | donnée de réponse 11 | donnée de réponse 12 | donnée de réponse 13 ^ | ||
+ | | 1 | écriture | registerH | registerL | valeurH | valeurL | | registreH | registreL | valeurH | valeurL | | ||
+ | | 2 | lecture | ||
+ | | 3 | copie | destH | destL | ||
+ | | 4 | lecture de la configuration du port | du port | au port | | | | port# | valeur | type | délai | ||
+ | | 5 | écriture de la configuration du port | port# | valeur | type | délai | | | | | ||
+ | | 6 | régler l' | ||
+ | | 7 | lecture des options | ||
+ | | 8 | écriture des options | ||
+ | | 9 | lecture des macros | ||
+ | | 10 | écriture des macros | ||
+ | | 11 | mise à jour | revH | revL | | | | | ||
+ | | 12 | lecture d'un évènement du port | du port | au port | | | | port# | idH | idL | port | | ||
+ | | 13 | écriture d'un évènement du port | port# | idH | idL | port | | | | | ||
+ | | 14 | effacement de la configuration du port | port# | | | | | | | | ||
+ | \\ | ||
+ | ==Canaux== | ||
+ | ^ code ^ description ^ d1 ^ d2 ^ d3 ^ d4 ^ d5 ^ d6 ^ d7 ^ d8 | d1 | d2 | d3 | d4 | d5 | d6 | d7 | d8 ^ | ||
+ | | 15 | lecture de la configuration du canal | du canal | au canal | | | | | | | canal# | ||
+ | | 16 | écriture de la configuration du canal | canal# | ||
+ | | 17 | efficacement de la configuration du canal | canal# | ||
+ | | 18 | régler le canal | canal# | valeurH | valeurL | | | | | | | ||
+ | |||
+ | \\ | ||
+ | La lecture, l' | ||
+ | La lecture et l' | ||
+ | |||
+ | ==== Sortie ==== | ||
+ | === Type === | ||
+ | ^ Type ^ Valeur ^ | ||
+ | | aiguillage | 0 | | ||
+ | | lumière | 1 | | ||
+ | | servo | 2 | | ||
+ | | son | 3 | | ||
+ | | moteur | 4 | | ||
+ | | analogique | 5 | | ||
+ | | macro | 6 | | ||
+ | | rétro-éclairage | 7 | | ||
+ | |||
+ | === Actions === | ||
+ | ^ code ^ description ^ donnée 1 ^ donnée 2 ^ donnée 3 ^ donnée 4 ^ donnée 5 ^ donnée 6 ^ donnée 7 ^ donnée 8 ^ | ||
+ | | 0 | off | type | valeur | adresse | | | | | | | ||
+ | | 1 | on | type | valeur | adresse | | | | | | | ||
+ | | 1 (macro) | on | 6 | 0 | aspect | macro offset | | | | | | ||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== Entrée ==== | ||
+ | Le groupe entrée n'est pas utilisé ni défini; Utiliser le groupe détecteur. | ||
+ | === Actions === | ||
+ | ^ code ^ description ^ donnée 1 ^ donnée 2 ^ donnée 3 ^ donnée 4 ^ donnée 5 ^ donnée 6 ^ donnée 7 ^ donnée 8 ^ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== Horloge ==== | ||
+ | === Actions === | ||
+ | ^ code ^ description ^ donnée 1 ^ donnée 2 ^ donnée 3 ^ donnée 4 ^ donnée 5 ^ donnée 6 ^ donnée 7 ^ donnée 8 ^ donnée 9 ^ | ||
+ | | 1 | réglage | annéeH | annéeL | mois | jour | heure | minutes | secondes | diviseur | luminosité | | ||
+ | | 2 | sync | annéeH | annéeL | mois | jour | heure | minutes | secondes | diviseur | luminosité | | ||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | |||
+ | ==== Son ==== | ||
+ | === Actions === | ||
+ | ^ code ^ description ^ donnée 1-n ^ | ||
+ | | 1 | play | nom du fichier audio | | ||
+ | | 2 | setpath | chemin du fichier audio | | ||
+ | | 3 | setplayer | nom du programme du lecteur audio | | ||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== Afficheur ==== | ||
+ | === Actions === | ||
+ | ^ code ^ description ^ donnée 1 ^ donnée 2 ^ donnée 3-n ^ | ||
+ | | 1 | text | addr | displaynr | texte à montrer sur l' | ||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== Détecteur ==== | ||
+ | === Actions === | ||
+ | ^ code ^ description ^ donnée 1 ^ donnée 2 ^ donnée 3 ^ donnée 4 ^ donnée n ^ | ||
+ | | 1 | report | addrH¹ | addrL¹ | status | port | identifier (RFID) | | ||
+ | ¹) Adresse de la locomotive déclarée.\\ | ||
+ | L' | ||
+ | Une sécurité du détecteur est faite avec le message d' | ||
+ | * Code = 1 | ||
+ | * Port = port | ||
+ | \\ | ||
+ | |||
+ | =====Fichiers===== | ||
+ | * {{: |
rocnet/rocnet-prot-fr.txt · Last modified: 2019/02/12 23:35 by 127.0.0.1