This is an old revision of the document!
Table of Contents
RCAN: GC2a
Introduction
La série de matériels courants CAN-GC* est basée sur les PICs MC.
RCAN est le firmware pour les solutions basées sur le CAN sur la plateforme Arduino.
La cible du firmware est l'Arduino Nano ATmega328P(B).
Dépendances
La seule bibliothèque non standard Arduino utilisée est
pour être capable de communiquer avec la puce MCP2515.
Modifications
Deux modifications dans le code source de la bibliothèque sont à faire. Désactiver le DEBUG pour sauvegarder la mémoire, et augmenter la valeur du délai d'attente dans le fichier Documents/Arduino/libraries/MCP_CAN_lib-master/mcp_can_dfs.h
: (ligne 40 et 45)
// if print debug information //#define DEBUG_MODE 1 /* * Begin mt */ #define TIMEOUTVALUE 100
Le TIMEOUTVALUE de 50 à l'origine est trop bas et apporte des erreurs sur les trames envoyées dans le bus CAN. (Dépendant du trafic sur le bus CAN.)
Il est très important de désactiver le DEBUG_MODE sinon il n'y a pas assez de mémoire disponible. L'IDE Arduino IDE se plaindra à propos de cela, et RCAN redémarrera continuellement.
Carte GPIO
La différence entre le version standard à base de PIC et les cartes Arduino est le schéma d'adressage FLAT, et supportent seulement les évènements longs. (évènements longs/courts sont détectés dans Rocrail automatiquement.)
Le GPIO est compatible avec le CANGC2. (Hors schéma d'adressage.)
Le Nano avec l'ATmega328P ne peut pas utiliser le port A6 et A7 comme E/S numérique, et sont seulement disponibles comme entrée avec lecture analogique. |
Broches d'entrées seules sur l'ATmega328P
Broche du Nano | GC2a | ArduCAN-IO |
---|---|---|
A6 | 10 | 2 |
A7 | 9 | 1 |
Variables
Variable Nr | Description |
---|---|
0 | SYNCID |
1 | Octet de configuration du nœud |
2…17 | Octets de configuration du port |
18…19 | Octets d'état du port (Lecture seule) |
20 | CANID |
Octet de configuration de nœud
Bit | Valeur | Fonction | Remarque |
---|---|---|---|
0 | 1 | sauvegarde d'état | Sauvegarde les états des sorties dans l'EEPROM suite à une commande d'extinction. |
1 | 1 | évènements courts | Pas utilisé. |
2,3 | 0,0 | Durée d’impulsion de 250ms | |
2,3 | 1,0 | Durée d’impulsion de 500ms | |
2,3 | 0,1 | Durée d’impulsion de 1000ms | |
2,3 | 1,1 | Durée d’impulsion de 2000ms | |
4 | 1 | Signale tous à SoD | Signale également les valeurs d'entrées basses au lieu d'être uniquement élevées. |
Octet de configuration de port
Bit | Valeur | Fonction | Remarque |
---|---|---|---|
0 | 1 | Entrée | Initialise le port comme entrée avec résistance de tirage interne. La carte GC2a fournira également des réseaux de résistances de 10 kOhm parce que la valeur des résistances de tirage interne est trop élevée. |
0 | 0 | Sortie | Initialise le port en sortie. |
1 | 1 | Délai de désactivation de l'entrée | Délai de désactivation de l'entrée de 2 secondes pour les détecteurs d'occupation. |
1 | 1 | Impulsion de sortie | Longueur de l'impulsion selon la configuration globale du nœud. |
2 | 1 | Inversion | Inversion de la valeur du port numérique. |
3 | 1 | Port IR | Pas utilisé. |
4 | 1 | Sync | Synchronise également la sortie avec le SYNCID |
CBUS
Le protocole CBUS est protégé par le droit d'auteur par Mike Bolton & Gil Fuchs.
CBUS→RCAN | Rocrail | Plage | Remarque |
---|---|---|---|
Numéro de l'évènement du nœud → CANID | Bus | 0…127 (défaut 127) | CBUS utilise 4 MSBits pour la priorité. (L'ID de la trame CAN standard est de 11 bits.) |
Adresse de l'évènement → Port | Adresse | 1…16 (fixe) | C'est le Numéro du port. |
Le numéro de nœud du module et le module CANID sont les mêmes et juste une valeur dans le firmware.
Le mode d'apprentissage CBUS n'est pas supporté et n'est pas nécessaire.
Le même schéma d'adressage à plat peut être utilisé avec les cartes basées sur le PIC par configuration des numéros de nœud d'évènement sur le numéro de nœud des modules et les adresses d'événement sur le numéro de port correspondant, et désactive l'option d'évènement court.
Dans le cas où les modules basés sur RCAN sont prévus pour être utilisés sur un réseau CBUS existant, il est recommandé de convertir les modules existants au schéma d'adressage à plat pour les rendre transparents.
MBus
Support pour le protocole CAN Märklin.
- Les entrées sont rapportées comme des évènements s88. (0x11)
- Les sorties réagissent sur 0x0B avec MM 0x3nnn. Le dlc 8 est utilisé comme bus/adresse.
- Configuration Lecture/Écriture avec 0x07 et 0x08.
- Le Ping est également supporté comme interrogation dans le dialogue du Nœud CBus.
Moniteur Série
500000bps
Commande | Description |
---|---|
usbon/usboff | Active/désactive l'interface USB pour GridConnect. (par défaut désactivé) |
dump | Affiche les premiers 64 octets de l'EEPROM |
sod | Début de Journée |
init | Réinitialise toutes les E/S |
stat | Affiche l'état des E/S |
pub | Publie l'indentification et le type de carte |
loop | Règle le mode loopback pour cette session. |
norm | Règle le mode normal. (par défaut) |
cbus | Commute le protocole CBUS. (125k) (par défaut) |
mbus | Commute le protocole CS2 Märklin. (250k) |
8m | Règle la vitesse de l'horloge du MCP2515 à 8MHz. (par défaut) |
16m | Règle la vitesse de l'horloge du MCP2515 à 16MHz. |
l0 | Règle la disposition des broches pour s'adapter au CANGC2a. (par défaut) → Appuyez sur le bouton de réinitialisation pour rendre les changements actifs. |
l1 | Règle la disposition des broches pour s'adapter au ArduCAN-I/O. → Appuyez sur le bouton de réinitialisation pour rendre les changements actifs. |
=<id> | Règle le CANID. Remplacer <id> avec un numéro compris entre 1 et 255. |
#<port><config> | Configure un port. Replacer <port> avec un caractère compris entre 0…9 et a…f. Le <config> peut être: 0 pour une sortie, 1 pour une entrée, 2 pour une entrée avec délai d'arrêt, 3 pour une sortie à impulsion. Exemple: "#a1" configurera le port 10 en entrée. |
:SxxxxNxx…xx; :XxxxxxxxxNxx…xx; | Trame ASCII qui sera envoyée sur le bus CAN et qui sera évaluée par la carte. (Schéma GridConnect comme utilisé par le CBUS MERG.) Voir le chapitre 10 du guide MERG du développeur pour CBUS". |
Aussi tous le trafic CAN et les OPCs supportés sont tracés dans le moniteur série.
Mode Loopback
Le texte d'origine est disponible dans le manuel du MCP2515 Microchip dans la section 10.4. |
Le mode Loopback autorisera la transmission interne des messages tampons de transmission aux tampons de réception sans réellement transmettre de messages sur le bus CAN.
Ce mode peut être utilisé lors du développement et les tests de système.
Dasn ce mode, le bit ACK est ignoré et le périphérique autorisera l'arrivée des messages de lui-même, comme si ils venaient d'un autre nœud.
Le mode Loopback est un mode silencieux, signifiant qu'aucun message ne sera transmit dans cet état (incluant les drapeaux d'erreurs ou les signaux reconnus). La broche TXCAN sera dans un état de réception.
Exemple de sortie du moniteur
MBus 0x3017 pinlayout=0 CAN bps=250, MCP2515 8MHz hash 0x0F27 :X00310F27N000030170300460C; :X00230F27N0017000800010000; :X00230F27N0017000900010000;
Setup
The CBUS-IO will report itself as GC2a, module type 12.
The firmware version is only visible with the SocketCAN and GC2a interface.
Incompatibilities
- SLiM is not supported
- FLiM is not supported
- Learn mode is not supported
- The ‘Device Addressed’ model; This is fixed: NN → CANID, DN → Port 1…16
- The push button will not request a node number by OPC_RQNN, but will publish itself by OPC_PNN
Drawbacks
With the FLAT addressing it is not possible to activate outputs with one command, NN+DN, on multiple boards(nodes).
This option is not or only hardly used, and makes the setup of boards needlessly very complex.
Tip: With the SYNCID the outputs can be synchronised with other IDs.
Push Button
The push button on the Arduino keeps its original function: Reboot.
After every reboot an OPC_PNN will be send to popup the CBusNode dialog in Rocview with selected node.
This feature can be used to identify a node.
GC2a as USB Interface
The GC2a can be used parallel as CBus/MBus interface.
It uses the same ASCII framing as the CANGC1(e) interface. (See chapter 10 of the MERG “Developer’s Guide for CBUS”.)
Line setting must be set to:
- USB
- 500000bps (This is set automatically in case of USB type.)
- No hardware handshake (RTS/CTS)
- Linefeed
With this option, the GC2a can also be used standalone; The minimal CBUS setup.
Note: Because the ACK slot bit will not be set by other CAN modules, a send error will be reported, but can be ignored in standalone mode.
SyncID
The SyncID option is added to be able to synchronise input event from board X with output states on board Y.
The port mapping is 1:1.
It can also be use to switch multiple outputs with a single Rocrail command.
Example
On board with ID 33 is input port switched to ON.
Another board with ID 22 hast set SyncID to 33, and will check if the corresponding port is an output and will synchronise it with the input port of board 33.
This situation is often used for switch panels.
Source Code
- https://github.com/coryjfowler/MCP_CAN_lib (Original with a too small timeout value and DEBUG active.)