Autor Tema: Ejemplo MODBUS CCS  (Leído 6930 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ALE1973

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 230
Ejemplo MODBUS CCS
« en: 14 de Noviembre de 2008, 10:59:22 »
Buenas, estoy estudiando el ejemplo que menciono de CCS, para tener una idea de como
implementar en C el protocolo modbus, lo hice en ASM hace unos años, pero ahora lo
necesito en C, revisando el codigo y simulandolo no funciona (segun mi razonamiento y
la simulacion que hago en el isis), explico por que...

1.-En la recepcion de datos series, el codigo calcula el Checksum a todo lo que llega, lo cual
es erroneo, ya que no hay que hacerlo al CRC que viene por el puerto serie, esto es
de poca importancia y facil de corregir.

2.-En el Modbus RTU (como el que esta implementado) despues de un tiempo de silencio en la red
de 3 1/2 caracter, se considera que termino la transmision, y el software en este caso, lo
toma lisa y llanamente como un time out (error), y no como un mensaje que debe procesar.
Aparte, para tomar como un mensaje que ha llegado correctamente necesita que el CRC sea =0,
lo cual es imposible, debido a que se ha ido almacenando lo que se calculo mientras llegaba
el mensaje (ver IF).

// Purpose:    Check if we have timed out waiting for a response
// Inputs:     None
// Outputs:    None
#int_timer2
void modbus_timeout_now(void)
{
   if((modbus_serial_state == MODBUS_GETDATA) && (modbus_serial_crc.d == 0x0000) && (!modbus_serial_new))
   {
      modbus_rx.len-=2;
      modbus_serial_new=TRUE;
   }
   else
      modbus_serial_new=FALSE;

   modbus_serial_crc.d=0xFFFF;
   modbus_serial_state=MODBUS_GETADDY;
   modbus_enable_timeout(FALSE);
}

Alguien lo ha implementado, y le funciona?, son mis apreciaciones correctas? o me estoy equivocando.

Saludos.

Gracias por adelantado.

Alejandro.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Ejemplo MODBUS CCS
« Respuesta #1 en: 14 de Noviembre de 2008, 18:48:32 »
Esta bastante bien implementado en codigo, pero a mi no me anduvo... :(
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado ALE1973

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 230
Re: Ejemplo MODBUS CCS
« Respuesta #2 en: 15 de Noviembre de 2008, 10:25:04 »
La verdad que si, esta bien implementado, pero no logro entender como quiere detectar que llego un pedido bien...
Voy a ver si modifico la rutina de recepcion y lo pruebo, mi idea es hacer que analice la funcion que se esta pidiendo y en funcion de ello detectar cuantos bytes debo recibir y asi controlar lal consistencia del mensaje.


Saludos y gracias por la respuesta.

Alejandro.

Desconectado zagoaristides

  • PIC12
  • **
  • Mensajes: 99
    • deportes de contacto y fitness
Re: Ejemplo MODBUS CCS
« Respuesta #3 en: 22 de Julio de 2009, 14:44:26 »
La verdad que si, esta bien implementado, pero no logro entender como quiere detectar que llego un pedido bien...
Voy a ver si modifico la rutina de recepcion y lo pruebo, mi idea es hacer que analice la funcion que se esta pidiendo y en funcion de ello detectar cuantos bytes debo recibir y asi controlar lal consistencia del mensaje.


Saludos y gracias por la respuesta.

Alejandro.

Pudiste hacerlo andar? Necesito algo que trabaje en RS485 y no logro hacer andar algo fácil para enviar datos desde un maestro y recibir desde varios esclavos con CRC también ya que por aquí andan algunos sin CRC. Gracias.
Nadie nació sabiendo...Que genio ese Nadie!!!

Desconectado juliana82

  • PIC10
  • *
  • Mensajes: 12
Re: Ejemplo MODBUS CCS
« Respuesta #4 en: 22 de Agosto de 2014, 07:56:21 »
Buenos días.
Pretendo comunicar un micro 16f877 que sería el esclavo dentro de la red con mi pc a través de modbus poll.

Para ello utilizo la librería modbus.c del PCW de CCS y el ejemplo de CCS...ex_modbus_slave.

Problema: error timeout.

¿Alguien podría darme algo de luz?

Gracias.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Ejemplo MODBUS CCS
« Respuesta #5 en: 22 de Agosto de 2014, 08:23:57 »
Como están configurados el ejemplo de CCS y el Modbus Poll ??
Me refiero a baudrate y direcciones.

Por que medios lo comunicas??
Si tienes un dispositivo USB a serial, hay muchos modelos que agregan un tiempo a las comunicaciones, por lo cual deberías tener un timeout de mas de 1 segundo inicialmente.

Te aconsejo probar el enlace fisico contra algun componente Modbus que sepas que funciona, para descartar, aunque sea leer un misero byte...

Y por ultimo chequea lo siguiente (el error mas común de todos, que nos ha ocurrido a muchos  :mrgreen: :mrgreen:) , que los pines Tx y Rx del PIC estén conectados como corresponde, y el pin de masa no tenga interrupciones.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado juliana82

  • PIC10
  • *
  • Mensajes: 12
Re: Ejemplo MODBUS CCS
« Respuesta #6 en: 25 de Agosto de 2014, 05:38:49 »
Gracias MGLSOFT!!! gracias por su tiempo.

Bien he estado probando pero sigue el maldito mensaje de timeout error en el Modbus Poll.

Trabajo con un PIC 16F877  e intento comunicar via RS232 a través de un max232. Rx-->B0; Tx-->B1. Todo ello implementado en una placa de pruebas que es la easypic6.

He comprobado el Baudrate y en ambos dispositivos (16f877 y Modbus Poll) es de 9600bps.

He subido el "Response Timeout" en la ventana "Connection Setup" del Modubs Poll de 1000ms a 2000ms tal y como me dijistes.

Pero nada... Espero poder solucionarlo...seguiré intentandolo esta jornada que aún estoy de vacaciones...mi trabajo diario deja poco tiempo para mi verdadera pasión que son los microcontroladores.

Un saludo MGLSOFT y toda la gente del foro!!! es maravilloso todo lo que se aprende por este medio!!!

Desconectado mastro235

  • PIC10
  • *
  • Mensajes: 1
Re: Ejemplo MODBUS CCS
« Respuesta #7 en: 23 de Octubre de 2014, 19:51:32 »
Buenas tardes a todos, necesito hacerles una consulta sobre PIC con Modbus, soy nuevo en esto y estoy avanzando y aprendiendo dia a dia, tome como desafio poder hacer algo en modbus con CCS, vi muchos ejemplos en internet pero ninguno en donde este bien comentado o explicado, si tienen alguna informacion para ser una buena guia les estaré muy agradecido. Muchas gracias!

Desconectado Sadier_C

  • PIC10
  • *
  • Mensajes: 1
Re:Ejemplo MODBUS CCS
« Respuesta #8 en: 07 de Junio de 2017, 19:25:30 »
Buenas tardes compañeros, he estado leyendo cada uno de sus publicaciones acerca de protocolo modbus en ccs. e estado hacieno algunos ejemplos con los codigos de ejemplos que ccs facilita. estoy utilizando como maestro el software ModScan32, y me e dado cuenta que el codigo en ccs solo persime verifcar un registro de 8 bit para verificar el estado de las bobinas ya sea como salida o como entrada, yo solo estoy manejando la funcion 01. la pregunta es la siguiente. ¿ como puedo yo colocar mas direcciones si quiero verificar el estado de 16 salidas. en la libreria donde puedo cambiar ese tipo de varible. ya que el que no me esta permitiendo colocar mas registros en el softaware modscan32 es el Length. que es el que me esta definiendo

Espero pronto alguna ayuda
Gracias..