fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Existe problema de ...
 
Avisos
Vaciar todo

Existe problema de concurrencia??

7 Respuestas
3 Usuarios
0 Reactions
7,886 Visitas
afelio
Respuestas: 19
Topic starter
(@afelio)
Active Member
Registrado: hace 11 años

Buenas,

Estoy intentando realizar una comunicación entre varias placas mediante el protocolo del CAN Bus.
Y una de las placas hará de uno de los extremo del bus en la que irá conectado un módulo RF que emitirá a un PC los datos obtenidos por el bus CAN del resto de placas.

Ahora bien, me estoy preguntando si existirá una posible problemática. Un problema de concurrencia.
¿Qué opinais?

Pienso que si existe dicho problema, debido a que son dos sistemas distintos, mientras la CAN recibe, la Uart podría recibir o transmitir igualmente.

Ahora bien, en el caso de que penseis que existe dicho problema. ¿Cómo se podría solucionar?

Barajo la idea de utilizar:
para UART el DMA. Permitiendome acceder a memoria sin consumir recursos del micro.
También utilizar las Fifos del CAN y de la UART para ir almacenando los datos en caso de dicha concurrencia.

Por si es de interés, estoy utilizando el micro: PIC32MX795F512L.

Muchas gracias.

Un saludo.

Responder
6 respuestas
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

No creo que tengas problemas. Un pic32 puede ir a unos 100MHz con lo cual la tasa de refresco de las tramas de UART o CAN te quedarán muy por detrás. Además los periféricos suelen tener su propia FIFO (pequeña).

S2

Ranganok Schahzaman

Responder
juanjo
Respuestas: 451
(@juanjo)
Ardero
Registrado: hace 17 años

Básicamente el CAN BUS es un protocolo orientado a mensajes, donde cada mensaje tiene una prioridad, y es el mensaje de mayor prioridad el que acaba siendo enviado a la red en caso de colisión.

Opciones:

A) En el nodo del CAN BUS instalar un modulo RF para las líneas CAN TX y CAN RX. Esto implica colocar otros dos módulos RF (en total 4) en el lado del PC con el correspondiente controlador CAN BUS.

B) En el nodo del CAN BUS además del driver colocar un controlador y la salida de este, una pasarela firmware que pase los datos a USART para el módulo RF, de esta manera en el extremo del PC solo tendrás que poner un módulo RF y podrás conectarte al PC por USART.

Debes tener en cuenta la velocidad de los buses, el CAN BUS es un bus mucho más rápido orientado a mensaje y el RS-232 es un bus más lento orientado a conexión.

Responder
afelio
Respuestas: 19
Topic starter
(@afelio)
Active Member
Registrado: hace 11 años

Buenos días,

Gracias por vuestras pronta respuestas.

Ranganok, las velocidades de los periféricos:
El pic lo tengo configurado para 80MHz.
El bus CAN a una velocidad de 125000baudios
y la UART a 9600baudios

Juanjo, La opción a) la entiendo perfectamente.
Pero no así la opción b). no entiendo lo del controlador, y la pasarela firmware.

Un saludo.

Responder
juanjo
Respuestas: 451
(@juanjo)
Ardero
Registrado: hace 17 años

Lo primero de todo las velocidades no te encajan, no te va a funcionar. ¿Cómo vas a meter una señal con una velocidad de 125 Kbits/s en una con 9.6 Kbits/s? No puedes meter una señal con un ancho de banda 10 veces mayor en un ancho de banda menor, no funciona.

La opción A es más sencilla, pero más cara, ya que requiere 4 módulos RF. La opción B es más ecónomica, por que solo requiere dos módulos y al final la parte de interpretar los mensajes lo tienes que hacer total o parcialmente en el PC.

Un nodo de CAN BUS básicamente está compuesto por el driver y por el controlador. Un pasarela es un Gateway, cambia de protocolo. Lo que haces en el caso A simplemente es repetir la señal, pasas de un medio físico que es el par de cables al canal radio. Sin embargo el Gateway te permite coger estos datos y pasarlos al protocolo que utilices con la USART. podrás coger los datos de la USART_TX y enviarlos al CAN BUS o recibir datos del CAN BUS y pasarlos a la USART_TX. Podrás coger todos los mensajes del CAN BUS, filtrarlos, etc.

Digamos que si coges todos los mensajes del CAN BUS, lo que aparece en el registro de recepción del CAN BUS lo colocas el el buffer de la USART y los datos que recibas por el buffer de la USART los pondrás en el registro del controlador para que lo envíe a la red del CAN BUS.

Una pregunta. ¿En el PC tienes pensado recibir todos los mensajes de la red o por el contrario serán mensajes de configuración o interrogación que requieren respuesta de otro nodo? Por que si solo lo vas a utilizar para configuración y pregunta-respuesta, la mejor opción es la B, ya que te permitirá filtrar y solo enviar por el canal radio los datos que necesitas, y sobre todo podrás modular la velocidad, con esto quiero decir que podrías utilizar el modulo con 9600 bits/s.

Responder
Página 1 / 2
Compartir: