Pages: 1 [2]   Go Down
Author Topic: X10 / Can Bus en españa  (Read 4352 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Igor R. , eres mi idolo, jejejej. Tengo una placa para bus CAN llamada arcan que funciona bien pero tengo que decir que la libreria es un poco mas dificil de digerir que la tuya.
Me puedes pasar eza pedazo de libreria?

Salu2
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola flico,

Arcan usa un clock de 8Mhz, por lo que los bit timing son diferentes para el controlador CAN (MCP2515). Hay que hacer modificaciones en el codigo porque la libreria esta preparada para el MCP2515 a 16 MHz.... smiley-cry
Por otro lado, de momento va hard+libreria todo en un paquete.... smiley-eek-blue
La libreria usa C/C++ en vez de comandos Arduino, para ser compatible con cualquier micro Atmel (y mas rapido que digitalWrite).
Esta basada en el trabajo de http://www.kreatives-chaos.com/artikel/ansteuerung-eines-mcp2515, pero encapsulado en una clase; anyadido buffer en Arduino (como el de Serial), autodeclaracion de 2 mensajes de tipo CAN (Tx y Rx) y la propia variable de la clase para que sea mas facil para el usuario; modificado el tema de leer cada vez un buffer del dispostivo (MCP2515 dispone de 2 buffer de recepcion) y en ese codigo de la pagina siempre tiene prioridad el buffer 0. Esto ultimo es algo que arrastran casi todas las librerias que se encuentrar por la red, porque todas usan dicho codigo como base.

A parte se puede utilizar con cualquier placa Arduino (por una parte el soft lo permite, y el hard al ser tipo "brick" en vez de shield).


Saludos


Igor R.
« Last Edit: February 11, 2011, 07:32:17 am by Igor R » Logged


0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Lo que si es interesante es leerse el FAQ:
http://secuduino.blogspot.com/2011/02/faq.html

Intentare ir anyadiendo info para quitarle el miedo al bus CAN .... smiley-wink
Con ejemplos de como cablear el bus, que es la resistencia terminadora, que es el formato intel/motorola normalmente usado en automocion, mascaras, .....


 smiley-cool
« Last Edit: February 11, 2011, 09:40:40 am by Igor R » Logged


0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
//Send trace
 CAN_TxMsg.id=0x100;
 CAN_TxMsg.header.rtr=0;
 CAN_TxMsg.header.length=8;
 CAN_TxMsg.data[0]=0x01;
 CAN_TxMsg.data[1]=0x02;
 CAN_TxMsg.data[2]=0x03;
 CAN_TxMsg.data[3]=0x04;
 CAN_TxMsg.data[4]=0x05;
 CAN_TxMsg.data[5]=0x06;
 CAN_TxMsg.data[6]=0x07;
 CAN_TxMsg.data[7]=0x08;

Igor R. no entiendo que uso se le puede dar al ID y al RTR en el mensaje que envias. Exactamente para que sirven.

Salu2
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola flico,

Pasate por http://secuduino.blogspot.com/2011/02/faq.html  (Ejemplo, pregunta 9)
Tambien esta explicado el RTR en el faq.

Si despues de leerlo no entiendes, me dices.

Saludos


smiley-wink
Logged


0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
9.- ¿Qué es el ID en un mensaje CAN ?
El protocolo CAN esta orientado a mensaje. Es decir, cuando se envía un mensaje no se especifica a quien va destinado.
Es el identificador lo que es usado para saber el contenido de dicho mensaje.

Gracias Igor R., si la pagina FAQ ya la habia leido pero me deja con la duda. Corrigeme si me equivoco.
Cada nodo tiene que tener un ID diferente para saber el resto de nodos quien es el remitente del mensaje.

Lo que sigo si entender que es el RTR, en el manual de can bus dice que cuanto menor sea el valor, mayor prioridad tiene el mensaje para el resto de nodos. ¿Es asi? o me he colado.

Salu2
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Una ID no va lincada a un nodo. Simplemente indica que informacion hay en el mensaje. Aunque suele ser un dispositivo concreto quien la envia, no se ha de pensar en una red CAN como las redes convencionales de maestro-esclavo. Pero si que es cierto que suele ser el mismo dispositivo quien la usa.

Por ejemplo, un coche tiene:
  • Centralita motor
  • Centralita ABS (frenos)
  • Display
La centralita ABS manda el mensaje, pongamos 0x100 con las velocidades de las 4 ruedas. Como disenyo, has elegido que el ID=0x100 es el cual va a contener dicha informacion.
Todas las demas centralitas escuchan todos los mensajes de la red, y eligen si quieren usar dicha informacion o no. Estan monitorizando el bus, y cuando llega un mensaje que tiene ID=0x100, saben que dentro va a estar las 4 velocidades de rueda.
Por ejemplo, el Display la usa para mostrarte la Velocidad del coche.
Y la centralita motor lo usa para el control de velocidad, o para control de traccion,.....

Por otro lado, el ID tambien sirve para indicar prioridades. Si dos dispositivos intentan enviar a la vez informacion, aquel que envia un mensaje con ID mas baja, sera el que "gana" y el otro esperara a que el bus este libre para reenviar el otro mensaje (ID mayor).

Es decir, usas las ID mas bajas, para aquella informacion que quieres que se procese la primera. Imagina que tienes un accidente, que se detecta por la centralita del Airbag (con un acelerometro).
Pues esta envia un mensaje de alta prioridad (ID baja) para que otros dispositivos actuen (como por ejemplo parar el motor, desenchufar las bombas de gasolina,....)

Saludos


Igor R.
« Last Edit: February 22, 2011, 08:32:42 am by Igor R » Logged


0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Para el RTR, leete =>  7.- ¿Qué información hay en un mensaje CAN?
Trama del tipo Remote.

Y si no, vuelvo a contestar (asi me sirves para saber si me he explicado bien o no en el FAQ y lo voy modificando con tus feedback).

smiley-wink
« Last Edit: February 22, 2011, 08:51:04 am by Igor R » Logged


0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Igor R. en cuanto al ID no me ha quedado ni la menor duda pero chico del RTR me quedo igual despues de leerlo.

Gracias por la paciencia,.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

El RTR es un tipo especial de mensaje que existe en el protocolo CAN.

Sirve para casos especiales que un dispositivo desea cierta informacion. Este tipo de mensaje no es el mas utilizado, pero esencialmente lo que haces es mandar un mensaje diciendo que informacion quieres (ID) y el RTR=1 (los 8 bytes de datos no se necesitan, ya que no estas mandando nada, solo solicitando).
Aquel dispositivo que se encarga de transmitir dicha ID, cuando lee que este tipo de trama, responde con un mensaje normal y los datos, claro.

Podria tener un nodo, que de normal no esta mandado mensajes por el bus, y solo cuando alguien se lo solicita, entonces manda el mensaje.

Es decir uno dispostivo pide informacion a la red can a traves de dicho mensaje especial (RTR=1).
Normalmente, en las redes CAN, se mandan datos de forma periodica, en vez de usar dicho metodo. Aunque en sistemas criticos, o para cuando deseas chequear errores,... puedes utilizar dicho mensaje "especial".

Mas claro ahora??




smiley-wink
Logged


0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset




Ya he cambiado en el FAQ lo de la ID de la pregunta 9    smiley


smiley-wink
« Last Edit: February 22, 2011, 04:38:00 pm by Igor R » Logged


0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Clarisimo Igor R.

Gracias por la info.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Pages: 1 [2]   Go Up
Jump to: