TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: edomeneses en 18 de Marzo de 2011, 10:02:13

Título: Implementación de protocolo MODBUS en PIC18F
Publicado por: edomeneses 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 (http://www.todopic.com.ar/foros/index.php?topic=14477.0).

 :? 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
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: MGLSOFT 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.
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: edomeneses 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.
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: MGLSOFT 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.
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: edomeneses 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
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: MGLSOFT 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??
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: edomeneses 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
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: edomeneses 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
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: MGLSOFT en 09 de Junio de 2011, 18:32:56
Y yo tengo un master slave con dos PIC18F4680
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: Suky 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!  :)
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: MGLSOFT en 10 de Junio de 2011, 00:15:17
Ahora estoy con un Canopen Slave y voy por el Canopen Master... :lol: :lol: :lol:
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: raulval82 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.
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: Dibujito 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.
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: MGLSOFT 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.
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: rodo38 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
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: MGLSOFT en 26 de Julio de 2011, 08:28:22
En mi caso arranque con el ejemplo de CCS y luego le hice algunos tunning para adaptarlo a mi necesidad.
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: rodo38 en 28 de Julio de 2011, 02:05:56
lo conectaste con el master y como lo probaste su funcionamiento ...
es que necesito comunicar la pic con intouch

saludos
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: edomeneses en 30 de Julio de 2011, 22:54:11
Utilice el ejemplo de CCS, tanto para el Slave como para el master, para este último le di unas instrucciones especificas para la escritura de bobinas y para la escritura de salidas análogas, conecte a través de sus usart, y el esclavo realizo las operaciones pedidas.

Avanzando en mi proyecto, me doy cuenta que sería bueno mostrar en una pantalla, menu de opciones del master, de las funciones, básicas y mostrar en esta pantalla las salidas y entradas, activadas y desactivadas, y mostrar el estado de las salidas y entradas análogas.

Ya que no tengo un visor LCD me gustaría utilizar el PC.

No sé si conocen algún software que realice esta operación, a y me acabo de comprar un 18f4550 que tengo pensad usarlo como master, y utilizar su puerto usart para comunicarme con el Slave y el puerto USB para comunicarme con el PC.

 :-/
 
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: MGLSOFT en 30 de Julio de 2011, 23:09:09
lo conectaste con el master y como lo probaste su funcionamiento ...
es que necesito comunicar la pic con intouch

saludos

No lo probe con Intouch porque no lo tengo, pero si lo probe con Kepware por OPC y funciona perfectamente.
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: edomeneses en 30 de Julio de 2011, 23:42:54
en mi caso el slave lo prove aparte con lo que comente anteriormente,

con el sofware modscan32, que hace las veces de un master modbus
 
Título: Re: Implementación de protocolo MODBUS en PIC18F
Publicado por: JimPool en 16 de Marzo de 2012, 14:41:06
Utilice el ejemplo de CCS, tanto para el Slave como para el master, para este último le di unas instrucciones especificas para la escritura de bobinas y para la escritura de salidas análogas, conecte a través de sus usart, y el esclavo realizo las operaciones pedidas.

Avanzando en mi proyecto, me doy cuenta que sería bueno mostrar en una pantalla, menu de opciones del master, de las funciones, básicas y mostrar en esta pantalla las salidas y entradas, activadas y desactivadas, y mostrar el estado de las salidas y entradas análogas.

Ya que no tengo un visor LCD me gustaría utilizar el PC.

No sé si conocen algún software que realice esta operación, a y me acabo de comprar un 18f4550 que tengo pensad usarlo como master, y utilizar su puerto usart para comunicarme con el Slave y el puerto USB para comunicarme con el PC.

 :-/
 


Hola edomeneses, mirando el foro me ha llamado la atención lo que planeas hacer, de hecho he estado leyendo algo sobre MODBUS para implementarlo en un PIC (18F4550 o 18F2550) y pues me gustaría mucho si tienes algún ejemplo con el que me recomiendes empezar o un link en particular igualmente te podría ayudar con la comunicacion USB ya sea en LABVIEW o en NETBEANS.

saludos