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 et le Nano Every.
Dépendances
Ajouter la bibliothèque mcp_can dans l'IDE Arduino pour être capable de communiquer avec la puce MCP2515.
Modifications
Une modification dans le code source de la bibliothèque est de désactiver DEBUG pour sauvegarder la mémoire dans le
''Documents/Arduino/libraries/mcp_canr/mcp_can_dfs.h'': (ligne 41)\\
// if print debug information #ifndef DEBUG_MODE //#define DEBUG_MODE 1 #endif
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 Nano
Broche du Nano | GC2a |
---|---|
A6 | 10 |
A7 | 9 |
Note 1: Utilisez le Nano Every pour être capable d'utiliser les ports 9 et 10 du GC2a comme sortie également.
Note 2: Pour de meilleures performances un quartz de 16MHz devrait être utilisé.
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. |
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 | Identifiant du nœud | 0…127 (défaut 127) | CBUS utilise 4 MSBits pour la priorité. (L'Identifiant 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 |
---|---|
? | Information sur la version |
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. |
gpio | 16 ports E/S |
servo | 4 ports servo et 12 ports E/S |
=<id> | Règle le CANID. Remplacer <id> avec un numéro compris entre 1 et 255. |
$pppppppppppppppp | Configure plusieurs ports: Le <p> peut être: 0 pour la sortie, 1 pour l'entrée, 2 pour l'entrée avec un délai d'arrêt, 3 pour une sortie à implusion. Exemple: "$1111" configurera le port 1 à 4 comme des entrées. |
#<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;
Configuration
Le CBUS-IO se signalera comme un GC2a, module de type 12.
La version du firmware est seulement visible avec l'interface SocketCAN et GC2a.
Incompatibilités
- SLiM n'est pas supporté
- FLiM n'est pas supporté
- Le mode apprentissage n'est pas supporté
- Le modèle ‘périphérique adressé’; Il est fixe: NN → CANID, DN → Port 1…16
- Le bouton poussoir ne demandera pas de numéro de nœud par OPC_RQNN, mais publiera lui-même par OPC_PNN
Désavantages
Avec l'adressage FLAT il n'est pas possible d'activer les sorties avec une seule commande, NN+DN, sur plusieurs cartes(nœuds).
Cette option n'est pas ou peu utilisé, et faire la configuration des cartes devient inutilement très complexe.
Astuce: Avec le SYNCID les sorties peuvent être synchronisées avec d'autres identifiants.
Bouton poussoir
Le bouton poussoir sur l'Arduino garde sa fonction d'origine: Le redémarrage.
Après chaque redémarrage un OPC_PNN sera envoyé pour faire apparaître la boîte de dialogue CBusNode dans Rocview avec le nœud sélectionné.
Cette caractéristique peut être utilisé pour identifier un nœud.
GC2a comme interface USB
Le GC2a peut être utilisé en parallèle comme interface CBus/MBus.
Il utilise le même format ASCII que l'interface CANGC1(e). (Voir le chapitre 10 du “Developer’s Guide for CBUS” du MERG.)
La configuration de la ligne doit être réglée à:
- USB
- 500000bps (Cela est réglé automatiquement en cas de type USB.)
- Pas d'établissement de liaison matériel (RTS/CTS)
- Linefeed
Avec cette option, le GC2a peut également être utilisé seul; la configuration CBUS minimale.
Note 1: Parce que le ACK slot bit ne sera pas réglé par les autres modules CAN, une erreur d’envoi sera signalée, but peut être ignorée en mode autonome.
Note 2: Pour de meilleurs performances un quartz de 16MHz devra être utilisé.
SyncID
L'option SyncID est ajoutée pour être capable de synchroniser l'évènement entré de la carte X avec les états des sorties sur la carte Y.
La cartographie du port est 1:1.
Cela peut également être utilisé pour commuter plusieurs sorties avec une seule commande rocrail.
Exemple
Sur la carte avec l'identifiant 33 se trouve le port d'entrée commuté à ON.
Une autre carte avec l'identifiant 22 à le SyncID réglé à 33, et vérifiera si le port correspondant est une sortie et la synchronisera avec le port d'entrée sur la carte 33.
Cette situation est souvent utilisée pour les TCO.