User Tools

Site Tools


arduino:rcan-fr

This is an old revision of the document!


RCAN: GC2a


gc2a-module.jpgcan-extframe.jpeg

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

rcan.jpg 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.)
pin_arduino_nano.jpg 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

Documentation

Schedule and PCB

arduino/rcan-fr.1628257686.txt.gz · Last modified: 2021/08/06 15:48 by phil45