Autor Tema: Implementación de protocolo MODBUS en PIC18F  (Leído 11558 veces)

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

Desconectado edomeneses

  • PIC10
  • *
  • Mensajes: 12
Implementación de protocolo MODBUS en PIC18F
« en: 18 de Marzo de 2011, 10:02:13 »
hola a todos
resulta que he buscado dentro de los archivos como ex_modbus_slave.c o ex_modbus.c y otros que he encontrado en este foro como un ejemplo de pacalaconcursopacalaconcurso.

 :? En los cuales no sale o no encuentro la referencia que me imagino se debe usar para por ejemplo dar respuesta a la funcion leer bobinas, como reaciono esa funcion con los pnes que usare como salidas.???????????

en el foro de ccs encontre que eso uno lo deberia de saber, pero como llebo poco tiempo prgramando pic no entiendo como hacerlo. :mrgreen:

estoy usando el PIC18f4520, pienso implementar 2 salidas analogas, 2  digitales, 2 entradas analogas y 2 entradas digitales

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #1 en: 18 de Marzo de 2011, 10:07:43 »
Puedes programar tu PIC para que la función de lectura o escritura de registros active o desactive las salidas y los intercambios con entradas y salidas analógicas lo haces con la función de lectura o escritura de registros, que son valores de 16 bits.
Si precisas mas, envías por dos registros y luego los concatenas en el PIC.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado edomeneses

  • PIC10
  • *
  • Mensajes: 12
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #2 en: 18 de Marzo de 2011, 10:22:41 »
gracias por responder MGLSOFT.
antes de comentarte, te digo que estoy programando en lenguaje C.

en el ejemplo ex_modbus_slave.c se define estas variables a las cuales se le asocian estos numeros en hexadecimal
Citar
int8 coils = 0b00000101;
   int8 inputs = 0b00001001;
   int16 hold_regs[] = {0x8800,0x7700,0x6600,0x5500,0x4400,0x3300,0x2200,0x1100};
   int16 input_regs[] = {0x1100,0x2200,0x3300,0x4400,0x5500,0x6600,0x7700,0x8800};
   int16 event_count = 0;

a esto te refieres????,  es algo distinto.
como puedo leer o escribier registros, que codigos debo usar????

disculpa la ignorancia.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #3 en: 18 de Marzo de 2011, 12:10:31 »
gracias por responder MGLSOFT.
antes de comentarte, te digo que estoy programando en lenguaje C.

en el ejemplo ex_modbus_slave.c se define estas variables a las cuales se le asocian estos numeros en hexadecimal
Citar
int8 coils = 0b00000101;
   int8 inputs = 0b00001001;
   int16 hold_regs[] = {0x8800,0x7700,0x6600,0x5500,0x4400,0x3300,0x2200,0x1100};
   int16 input_regs[] = {0x1100,0x2200,0x3300,0x4400,0x5500,0x6600,0x7700,0x8800};
   int16 event_count = 0;

a esto te refieres????,  es algo distinto.
como puedo leer o escribier registros, que codigos debo usar????

disculpa la ignorancia.


Esa forma carga los registros con valores fijos que se repiten en cada mensaje.
Lee un poco mas el ejemplo y veras que despues hay una rutina que los envia.
En el esclavo hay una rutina que los recibe y los escribe en posiciones de memoria especificas.
No tengas miedo de hacer cambios, probar y retroceder.
Tambien puedes cambiar el ejemplo a tu PIC para ya probar sobre el que te interesa utilizar.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado edomeneses

  • PIC10
  • *
  • Mensajes: 12
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #4 en: 22 de Marzo de 2011, 00:02:04 »
estudiando mejor el ejemplo del esclavo modbus, me he dado cuenta que los valores de estas variables son un ejemplo solamente, y que por ende se deberia de definir puertos del pic como coils o inputs.

MGLSOFT quisiera que me dijeras, si es que voy bien

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #5 en: 22 de Marzo de 2011, 08:39:40 »
No es recomendable manejar directamente las salidas desde la comunicación, deberías copiar los valores enviados a un registro del pic y luego pasar por programa este registro al puerto de salidas.
Ademas esto te permite usar bits sueltos de uno o mas puertos y luego pasarles el valor como si fueran consecutivos de un solo puerto.
Se entiende??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado edomeneses

  • PIC10
  • *
  • Mensajes: 12
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #6 en: 27 de Abril de 2011, 10:07:56 »
despues de un argo tiempo vuelvo a este proyecto.

viendo en algunos libros encontre el uso de
Código: [Seleccionar]
#Byte PORTD= 0x06; //defino la variable portd en o6h
int coils;

TRISD=0x00;            //los pines del portd como salidas
coils=PORTD;           //para leer el puerto
PORTD=0x0a;           //para escribir en un puerto   


y por otra parte
Código: [Seleccionar]
TRISB=0x00;           //los pines del portd como salidas
int coils;

coils=input_B();      // leer un puerto
output_B(0b01011100); // escribir en un puerto

busque en mi compilador (CCS) que soporta la segunda opcion, seguire investigando para dar solucion a mis inquietudes, hay les cuento

Desconectado edomeneses

  • PIC10
  • *
  • Mensajes: 12
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #7 en: 09 de Junio de 2011, 13:26:50 »
Bueno les cuento que encontre la solucion a mi problema y he implementado en un pic 18F4520 un slave Modbus, todo confirado por el software ModSacan32 que hace las veces de master Modbus.

 :-/

quien tenga dudas con esto se comunica conmigo

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #8 en: 09 de Junio de 2011, 18:32:56 »
Y yo tengo un master slave con dos PIC18F4680
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #9 en: 09 de Junio de 2011, 18:51:34 »
Yo #&@ master slave con MODBUS y DNP!  :-/  :D :D Hablando en serio, felicitaciones por el logro!  :)
No contesto mensajes privados, las consultas en el foro

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #10 en: 10 de Junio de 2011, 00:15:17 »
Ahora estoy con un Canopen Slave y voy por el Canopen Master... :lol: :lol: :lol:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado raulval82

  • PIC10
  • *
  • Mensajes: 14
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #11 en: 15 de Junio de 2011, 09:09:23 »
Buenas!

Yo tengo en mente implementar rs485 Modbus para un 18F458 master, y varios slave... a ver que me sale xD.

Saludos.

Desconectado Dibujito

  • PIC10
  • *
  • Mensajes: 4
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #12 en: 23 de Junio de 2011, 12:06:54 »
Hola raulval82
Estoy con un proyecto similar.

Pero mi cuestion es como implementar la RTU a nivel de hard (o sea la estacion remota)

Puesto q en la estacion remota tiene q controlar, modificar y sensar variables analogicas y digitales. Pensaba en tener dos PIC con una memoria eeprom compartida. Asi el primer PIC se encarga d toda la comunicacion en modbus y escribe y lee registros en la memoria eeprom. Luego el segundoPIC se encarga de todo el control de la estacion y guarda los valores en lamisma memoria.

Me gustaria saber su opinion si voy por el camino correcto o me estoy complicando muchisimo.

Otra cosa: Alguien tiene los archivos de palaca pues no funciona su pagina!!

Desde ya muchas gracias.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #13 en: 23 de Junio de 2011, 14:16:00 »
Un PIC 18F con memoria grande y que funcione a 10 Mhz con PLL4 activado (funciona internamente a 40Mhz) debería poder hacer todo perfectamente bien.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado rodo38

  • PIC10
  • *
  • Mensajes: 3
Re: Implementación de protocolo MODBUS en PIC18F
« Respuesta #14 en: 26 de Julio de 2011, 01:55:13 »
Bueno les cuento que encontre la solucion a mi problema y he implementado en un pic 18F4520 un slave Modbus, todo confirado por el software ModSacan32 que hace las veces de master Modbus.

 :-/

quien tenga dudas con esto se comunica conmigo



como lo hiciste, si me puedes ayudar seria genial
ocupaste el ejemplo de ccs  de slave

gracias
« Última modificación: 26 de Julio de 2011, 01:59:03 por rodo38 »


 

anything