User Tools

Site Tools


arduino:rcan-fr

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 et le Nano Every.


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.jpgnano-every-pinout.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 Nano

Broche du Nano GC2a
A6 10
A7 9

Note: Utilisez le Nano Every pour être capable d'utiliser les ports 9 et 10 du GC2a comme sortie également.

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
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.


Code Source

Documentation

Programme et circuit imprimé

arduino/rcan-fr.txt · Last modified: 2022/04/07 11:00 by phil45