fbpx

Expresate

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

COMUNICACIÓN SERIE ...
 
Avisos
Vaciar todo

COMUNICACIÓN SERIE PIC-PIC PINGUINO SERIAL/USB

18 Respuestas
4 Usuarios
0 Reactions
43.4 K Visitas
andres2007
Respuestas: 9
Topic starter
(@andres2007)
Active Member
Registrado: hace 13 años

Buenas,
estoy trabajando en un proyecto donde necesito conectar una bateria de PICs 18F2550 en serie. La última debe recibir los datos de las anteriores. La duda es si es viable realizarlo con RS232 o con USB. Entiendo que con RS232 podría utilizar TX->RX entre 2 PICs (la primera pareja), y luego usar el puerto TX de la segunda PIC hacia el RX de la tercera PIC, y así sucesivamente. La distancia entre PICs es de 2 metros. No sé si el ruido puede hacer que se lean carateres erróneos.

Por otro lado, veis viable la conexión en serie mediante USB?. Supongo que no podía usar en una comunicación D+ -> D+ y entre la segunda y tercera PIC D- -> D- o sí?¿

Bueno, pues cualqueir sugerencia es bien acogida.
Gracias.
Saludos

Responder
17 respuestas
beamspot
Respuestas: 1132
(@beamspot)
Noble Member
Registrado: hace 17 años

Generalmente hablando, las comunicaciones son procedimientos generalmente más complicados que lo que parece, y visto tus conocimientos acerca de este tema, me parece que tienes bastante trabajo por delante.

Que yo sepa, hay librerías de ModBus, pero aparte de que yo soy conocido por ser anti-librerías, creo que es conveniente aprender uno mismo la casuística asociada a los protocolos de comunicación, cosa que previene el uso de librerías (que es justo el motivo por el cual no me gustan).

Por otra parte, con RS-485 sí que puedes comunicar 30 micros, pero no si usas RS-232. La causa precisamente una de las raíces de los protocolos.

Si no tienes tiempo ni ganas de aprender, igual te convienen más soluciones 'laves en mano'. Así que vete preparando para una temporadita más de estudio.

Responder
andres2007
Respuestas: 9
Topic starter
(@andres2007)
Active Member
Registrado: hace 13 años

Gracias por tu atención.
Me quedo más tranquilo sabiendo que con RS232 no puedo comunicar 30 micros. Ahora tengo una cosa clara, usaré Modbus con RS485.
Como tú pinso que me queda mucho estudio en el tema, pero tampoco puedo dedicarme a profundizar en el protocolo. Ya que Modbus es protocolo de capa 7, pues eso, me dedicaré a estudiar lo necesario para aplicarlo a nivel de aplicación. Cierto que cuanto más se sepa del tema mejor, pero uno no dispone de todo el tiempo del mundo para sus proyectos. La gente también navega por Internet sin conocer el protocolo TCP/IP 🙂 y se comunica.

Responder
beamspot
Respuestas: 1132
(@beamspot)
Noble Member
Registrado: hace 17 años

ModBus NO ES un protocolo de capa 7. Como mucho cubre la 2 y la 3. La 1 es RS-485 (o RS-232 para punto a punto). El resto son cosas tuyas.

El TCP/IP es un sistema que cubre más, pero no todo (sobre el hay http, ftp, por ejemplo). El PC o las aplicaciones ya hechas son soluciones 'llaves en mano', que es justo la alternativa que te propongo...

Responder
andres2007
Respuestas: 9
Topic starter
(@andres2007)
Active Member
Registrado: hace 13 años

y qué curioso que ftp es TCP y tftp es UDP 😮

No voy a entrar en discusión sobre Modbus pues tu eres el experto, no yo, por eso confío en tus respuestas. Si he puesto Nivel 7 es porque lo he leído en casi todos los sitios que hablan de MODBUS con conocimiento.
Sacado desde http://www.rtaautomation.com/modbusrtu/ " onclick="window.open(this.href);return false;
"Modbus RTU Protocol Overview":
MODBUS is considered an application layer messaging protocol, providing Master/Slave communication between devices connected together through buses or networks. On the OSI model, MODBUS is positioned at level 7.

Bien, TCP/IP aparte... el origen de mi pregunta viene porque estoy (siendo la primera vez) creando un sisterma de básculas con Pinguino (slaves) donde cada micro 18F2550 lee el peso de su báscula y lo enviaría al Master para que este tratara la información y lo enviara por GPRS por ejemplo. El sistema podría de ser hasta de 30-50 básculas (es decir, 30 a 50 micros). En un principio, pensé en trasnportar por Serial (TX/RX) el peso y que cada PIC almacenara en sus reguistros las lecturas y las pasara al micro final que sería el que enviara al Modem. Pero este sistema es serie, y no paralelo con lo cual un fallo en un PIC intermedio daría al traste todo el invento.

Por eso, mis preguntas sobre Modbus sergieron cuando me dijiste MODBUS con RS485. Ahora necesito construir el código para pinguino, que la verdad no he visto casi nada por la web. No sé si alguien ha visto algo del tema. Modbus con Pinguino...

Saludos

Responder
beamspot
Respuestas: 1132
(@beamspot)
Noble Member
Registrado: hace 17 años

En las implementaciones que he hecho de ModBus, sólo se cubren las capas 2 y 3. Por mucho que me mire el protocolo del ModBus estándar sobre RS-485, sólo veo cómo cubre estas dos capas (más la 1 mediante RS-485). Eso implica que alguien tiene que escribir una aplicación que cubra el resto de capas, pero que no viene especificada en ningún lugar de la norma ModBus.

Lo que pretendes hacer viene bastante bien si se hace sobre ModBus, y no es muy difícil. Hay una 'pega' (que tendrás siempre que utilices buses): el direccionamiento o asignación de dirección a cada nodo de la red. En ModBus, esta dirección, creo recordar, era de un byte, con lo cual cubrías hasta 240 direcciones.

En la especificación, hay un par de 'funciones' que te sirven para el caso. Si no me falla la memoria, la 3 (debería ser leer un 'holding register') te viene al pelo. Si no tienes que hacer muchas cosas más, con sólo suplir esta función te vendría se perlas, y eso es fácil (si lo haces en C).

Otra ventaja es que puedes probar y 'pinchar' la comunicación con un PC u cualquier otro invento que tenga USB y/o puerto serie. Cosa de gran utilidad.

Yo implementé un equipo de medida de temperaturas (que también valía para medir otras cosas) que permitía leer las temperaturas que medía desde cualquier otro master de ModBus mediante la transacción 3, así como otras (una que permitía leer más de un registro, otra que permitía identificar el equipo, otra que permitía escribir en registros, para configurarlo, etc). O sea, que la aplicación que pretendes más o menos es algo 'estándar' y que sé que muchos fabricantes de equipos resuelven precisamente por este método.

Ánimo, que esto promete ser sencillo (dese mi punto de vista) y se puede acometer sin tener previa experiencia en comunicaciones. Me parece un buen proyecto para gente que quiere aprender a progamar comunicaciones.

Responder
Página 2 / 4
Compartir: