Autor Tema: Control Labview-Modbus Para Domotica  (Leído 6524 veces)

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

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Control Labview-Modbus Para Domotica
« en: 23 de Abril de 2012, 10:47:41 »
hola a todos.voy a realizar un proyecto para controlar dispositivos en una red mediante RS485.

lo primero es realizar el panel de control.y por eso queria preguntar como se hace esto en labview:



un swicht solo se hacerlo.pero varios juntos no se como se hacen.
« Última modificación: 23 de Abril de 2012, 16:22:42 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Control Labview-Modbus Para Domotica
« Respuesta #1 en: 23 de Abril de 2012, 14:22:12 »
Te refieres a algo asi como lo de la figura que al activar el interrruptor 5 y 8 por ejemplo mande un uno hacia la tarjeta y ademas se visualize con un led?
Todos los días se aprende algo nuevo.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Control Labview-Modbus Para Domotica
« Respuesta #2 en: 23 de Abril de 2012, 18:52:05 »
no exactamente.me refiero en si al vi.no lo veo en la paleta de controls.he logrado ponerlo desde el vi  "MB Serial Master Query Write Multiple Coils (poly).vi"

creando un control desde el pin coils.es aqui cuando me crea un vi coils.aunque es un puss buttom en vez de un toggle swicht .no se en que parte de la ventana de controles estara.

pero he conseguido convertirlo en un toggle swicht.haciendo clic derecho sobre el toggle swicht y replace.para poner varios toggle solo hay que ensanchar.
« Última modificación: 23 de Abril de 2012, 19:10:45 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Control Labview-Modbus Para Domotica
« Respuesta #3 en: 25 de Abril de 2012, 13:14:48 »
Te sirve este ejemplo...?

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Control Labview-Modbus Para Domotica
« Respuesta #4 en: 25 de Abril de 2012, 15:59:39 »
he intentado bajarlo.pero me pide un telefono movil.de todas formas gracias por tu interes el codigo lo tengo casi acabado.solo tengo un problemilla.
lo pondre aqui si no logro solucionarlo.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Control Labview-Modbus Para Domotica
« Respuesta #5 en: 25 de Abril de 2012, 20:53:03 »
el link funciona, y no me pide ningun numero, deberia darle donde dice Click here to start download from sendspace
Saludos

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Control Labview-Modbus Para Domotica
« Respuesta #6 en: 26 de Abril de 2012, 19:07:15 »
muchas gacias.si que funciona.despues de varios intentos.y lo que biene en el video es exactamente lo que queria hacer.

y tengo un par de preguntas.haber si alguien sabria responder.
resulta que cuando ejecutas continuamente algun programa de labview que estemos desarroyando,y por algun motivo se produce un error;
no hay manera de pararlo haciendo stop.

yo se que hay una combinacion de teclas que hace que el programa se pare.pero no me acuerdo de cuales eran.y eso que cuando lo descubri,lo postee en algun hilo.pero ya hace mucho de eso y no lo veo.

y otra cosa.queria monitorizar los puertos serie de dos PCs.en uno pongo el master del ejemplo modbus de labview.y en el otro el slave.
la cosa es que solo puedo monitorizar el puerto si no esta ocupado.
y eso no me sirve porque no habria comunicacion entre los PCs.estoy usando el serial port monitor 4.0 para visualizar el trafico.y he intentado realizar pares de puertos virtuales con el VSPE.y jumpers. pero nada de nada.

alguien sabe algo al respecto?
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Control Labview-Modbus Para Domotica
« Respuesta #7 en: 26 de Abril de 2012, 23:59:51 »
Citar
..no hay manera de pararlo haciendo stop

Ctrl+.

Citar
..queria monitorizar los puertos serie de dos PCs
Para hacer eso necesitas dos puerto seriales adicionales y mejor si dispones de una 3ra PC, pinchar o conectar a linea del bus (TX, RX) solo el RX de cada puerto adicional, no debes de usar el los TXs por que entraria en conflicto...

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Control Labview-Modbus Para Domotica
« Respuesta #8 en: 27 de Abril de 2012, 10:07:08 »
pues no me funciona ctrl+
respecto al monitoreo de los datos,es muy buena idea la de poner un tercer PC.pero un poco tedioso.yo pensaba realizarlo de forma virtual.

en el VSPE hay unas opciones para crear puertos virtuales.pero no los entiendo del todo.son:

Conector
Splitter
Pair
Serial Redirector
Bridge

hay otros pero estan relacionados con eternet

el problema que tengo con este software es que no visualiza los puertos que estan ocupados.por ejemplo si quisiera hacer un puente o redirigir el trafico.
igual estoy haciendo algo mal.

la cosa es que una vez pude ver el trafico.pero claro esta,fue con el maestro y esclavo en el mismo PC y monitorizando un puerto.
tendre que hacer algunas pruebas.
« Última modificación: 27 de Abril de 2012, 10:15:48 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Control Labview-Modbus Para Domotica
« Respuesta #9 en: 27 de Abril de 2012, 17:58:47 »
Citar
pues no me funciona ctrl+
No es Ctrl+ sino Ctrl+PUNTO

Citar
pero un poco tedioso
si quieres conseguir resultados usa una 3ra PC...

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Control Labview-Modbus Para Domotica
« Respuesta #10 en: 27 de Abril de 2012, 19:20:48 »
gracias Medusa.provare la conbinacion de teclas.lo entendi mal.

respecto a la monitorizacion de los datos que se envian entre maestro y esclavo.he conseguido hacerlo en un solo PC.

primero hay que crear una pareja de puertos vrtuales con el Virtual Serial Port Driver 7.0
en mi caso he creado el COM1 Y COM2.

despues abro los ejemplos Master y Slave.selecciono la pareja de puertos.y ejecuto la simulacion.

y para monitorizar los datos uso el Serial Port Monitor 4.0
en la parte de abajo hay un cuadro para seleccionar el puerto.ese ni lo tocamos.ya que no vamos a enviar nada.
le damos a new y activamos todas la ventanas.aparte de seleccionar el puerto que queremos monitorizar.
yo he seleccionado el master.aunque con el puerto del slave tambien funciona.
pero igual nos podemos confundir al leer las tramas.ya que el software indica cuando se esta escribiendo o leyendo.

y ahora me toca practicar.hay cosas que no entiendo al leer las tramas.vamos a ver que pasa.




Uploaded with ImageShack.us


y esto es lo que digo que no entiendo:



Uploaded with ImageShack.us

donde pone 01 02 01 00 al 88

que significa al 88.que hay 88 bytes 00h ?
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Control Labview-Modbus Para Domotica
« Respuesta #11 en: 27 de Abril de 2012, 21:07:26 »
Citar
donde pone 01 02 01 00 al 88

que significa al 88.que hay 88 bytes 00h ?

Lo que pone alli es a1 no al.
Son valores en hexadecimal lo que recibes y envias por el puerto en Modbus RTU...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Control Labview-Modbus Para Domotica
« Respuesta #12 en: 28 de Abril de 2012, 16:30:39 »
 :oops:  que pifiaso. :lol:
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Control Labview-Modbus Para Domotica
« Respuesta #13 en: 30 de Abril de 2012, 19:21:48 »
aqui pongo unas tramas que envia el master al slave.con el ejemplo del labview.me ha servido para entender el funcionamiento
de algunos comandos y como interactuan el master y el slave.de momento he entendido como el master envia los codigos de
funcion "write multiple coils" y "write multiple registers" aunque me quedan mas funciones y como se transmite desde
el slave al master.

MASTER

01 02 00 00 00 04 79 c9          escribe     
01 02 01 00 a1 88            lee   
01 04 00 00 00 04 f1 c9          escribe
01 04 08 00 00 00 00 00 00 00 00 24 0d  lee



el ejemplo del labview sin introducir ningun dato en los coil ni en los registros,genera la trama anterior.
lo que entiendo de esta trama es lo suguiente:

01 02 00 00 00 04 79 c9           el master envia datos al slave 01 con el comando 02"read discrete inputs"

01 02 01 00 a1 88                 el slave responde

01 04 00 00 00 04 f1 c9           el master envia datos al slave 01 con el comando 04"read input registers"

01 04 08 00 00 00 00 00 00 00 00 24 0d  el slave responde


ahora me he ddo cuenta de que el master no envia constantemente el dato seleccionado en el panel de control.
si no que lo envia al producirse el evento de cambiar algun registro o interruptor.


esta es la trama enviada al slave cuando todos los interruptores estan a 1.

01 0f 00 00 00 04 01 07 7f 54     el master envia datos al slave 01 con el comando 0f"Write Multiple Coils"

01 0f 00 00 00 04 54 08       el slave responde




estos de abajo son los resultados de varias tramas al modificar los coils.se distinge en el 8º byte que el valor
del coil esta insertado en este.y el 6º byte es el numero de coils usados.
tambien se verifica que en los coils del panel de control el bit de menos peso esta situado a la izquierda.

coils to write 0001   01 0f 00 00 00 04 01 08 3f 50
coils to write 0010   01 0f 00 00 00 04 01 04 3f 55
coils to write 0100   01 0f 00 00 00 04 01 02 bf 57
coils to write 1000   01 0f 00 00 00 04 01 01 ff 56
coils to write 1111   01 0f 00 00 00 04 01 0f 7e 92
coils to write 11111111 01 0f 00 00 00 08 01 ff be d5

respuesta: 01 0f 00 00 00 04 54 08
________________

ejemplo del envio de datos de 16 coils to write:

01 0f 00 00 00 10 02 ff 7f e2 30

1º byte: 01 direccion del esclavo
2º byte: 0f codigo de funcion (Write Multiple Coils)
3º y 4º byte: 00 00 principio de direccion.
5º y 6º byte: 00 10 cantidad de salidas(16 coils) o bits.segun se quiera interpretar.
7º byte: 02 numero de bytes a enviar.bytes involucrados en el envio.al pasar del 8º bit
8º byte: ff dato
9º byte: ff dato
10º y 11º crc

el slave responde:

01 0f 00 00 00 10 54 07

1º byte: 01 direccion del esclavo
2º byte: 0f codigo de funcion
3º y 4º byte: 00 00 principio de direccion.
5º y 6º byte: 00 10 cantidad de salidas(16 coils) o bits.segun se quiera interpretar.
7º y 8º crc

______________________________________________________________________________________________________________________________________________




y aqui abajo el envio de la modificacion de los registers:


01 10 00 00 00 04 08 00 00 00 00 00 01 00 01 26 7a   el maste envia al slave 01 con el comando 10"Write Multiple registers"

01 10 00 00 00 04 c1 ca               el slave responde

registers to write   0001    01 10 00 00 00 04 08 00 00 00 00 00 00 00 01 77 7a
registers to write   0010    01 10 00 00 00 04 08 00 00 00 00 00 01 00 00 e7 ba
registers to write   0100    01 10 00 00 00 04 08 00 00 00 01 00 00 00 00 8b ba
registers to write   1000    01 10 00 00 00 04 08 00 01 00 00 00 00 00 00 a6 ba
registers to write   1111    01 10 00 00 00 04 08 00 01 00 01 00 01 00 01 0b 7a

respuesta del slave:   01 10 00 00 00 04 c1 ca

________________

ejemplo del envio de datos de 16 registers to write:

01 10 00 00 00 10 20 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 be ca

1º byte: 01 direccion del esclavo
2º byte: 10 codigo de funcion (Write Multiple registers)
3º y 4º byte: 00 00 principio de direccion.
5º y 6º byte: 00 10 cantidad de salidas(16 registers de 16 bits)
7º byte: 02 numero de bytes a enviar.bytes involucrados en el envio.cada 2 bytes=1 registro de 16 bits
del 8º al 39º: datos
40º y 41º:crc

el slave responde:

01 10 00 00 00 10 c1 c5

1º byte: 01 direccion del esclavo
2º byte: 10 codigo de funcion
3º y 4º byte: 00 00 principio de direccion.
5º y 6º byte: 00 10 cantidad de salidas
7º y 8º crc

informacion sobre modbus

http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf

Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Control Labview-Modbus Para Domotica
« Respuesta #14 en: 06 de Mayo de 2012, 14:19:15 »
el master y el slave constantemente estan enviando/recibiendo datos.debido al event structure "Timeout" dentro de este tenemos dos
Vi MB Serial Master Query

en uno de ellos tenemos seleccionado "Read Discrete Inputs" en el cual tenemos la opcion de indicar la primera direccion a leer
de los discrete inputs.y la cantidad de discrete inputs a leer.

la trama seria esta:

01 02 00 00 00 08 79 cc -el master escribe

1º byte: 01 direccion del esclavo
2º byte: 02 codigo de funcion "read discrete inputs"
3º y 4º byte: 00 00 principio de direccion.
5º y 6º byte: 00 08 cantidad de discrete inputs a leer
7º y 8º crc


01 02 02 00 00 b9 b8    -el slave responde

1º byte: 01 direccion del esclavo
2º byte: 02 codigo de funcion "read discrete inputs"
3º byte: 02 numero de bytes
4º y 5º byte:00 00 bytes recibidos
6º y 7º crc

en el otro Vi MB Serial Master Query .hay seleccionado "Read Input Registers" tambien podemos indicar la primera direccion a leer
de los discrete inputs.y la cantidad de discrete inputs a leer.

la trama seria esta:

01 04 00 00 00 08 f1 cc -el master escribe

1º byte: 01 direccion del esclavo
2º byte: 04 codigo de funcion "read input registers"
3º y 4º byte: 00 00 principio de direccion.
5º y 6º byte: 00 08 cantidad de input registers a leer.maximo 125 registros.
7º y 8º crc


01 04 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 2c

1º byte: 01 direccion del esclavo
2º byte: 04 codigo de funcion "read input registers"
3º byte: 10 numero de bytes a enviar "16 en decimal"
4º al 19º byte: datos
20º y 21º crc


este continuo envio y recepcion de datos se utiliza para actualizar los coil y holding registers del panel de control del master.
cullos datos probienen del slave.

hay que tener en cuenta que los datos que expongo no son iguales al ejemplo del labview.ya que los he modificado a 8 bit.


Montando mi primera impresora 3D (Raprep Prusa i3)


 

anything