TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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
-
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.
-
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
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.
-
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
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.
-
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
-
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??
-
despues de un argo tiempo vuelvo a este proyecto.
viendo en algunos libros encontre el uso de
#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
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
-
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
-
Y yo tengo un master slave con dos PIC18F4680
-
Yo #&@ master slave con MODBUS y DNP! :-/ :D :D Hablando en serio, felicitaciones por el logro! :)
-
Ahora estoy con un Canopen Slave y voy por el Canopen Master... :lol: :lol: :lol:
-
Buenas!
Yo tengo en mente implementar rs485 Modbus para un 18F458 master, y varios slave... a ver que me sale xD.
Saludos.
-
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.
-
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.
-
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
-
En mi caso arranque con el ejemplo de CCS y luego le hice algunos tunning para adaptarlo a mi necesidad.
-
lo conectaste con el master y como lo probaste su funcionamiento ...
es que necesito comunicar la pic con intouch
saludos
-
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.
:-/
-
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.
-
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
-
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