none
programacion puerto serial RRS feed

  • Pregunta

  • hola necesito hacer una aplicacion que lea un medidor de energia electrica a travez de un puerto serial con vb.net 2005, usando un puerto rs485  me gustaria que alguien me ayudara.........

     

    gracias

    sábado, 28 de abril de 2007 15:20

Todas las respuestas

  • hola

    mira primero debes saber que protocolo usa el dispositivo medidor de energia electrica. la gran mayoria usa MODBUS RTU. ahora primero capturas el puerto serial arrastrando el componente de VB 2005 llamado serialport luego lo configuras en ConfiguracionPuerto tengo guardados todos los datos iniciales de configuracion.

     

    Private Function InicioComunicacion() As Boolean

    SerialPort1.ReadTimeout = ConfiguracionPuerto(5) 'Tiempo de espera para la lectura del puerto.

    SerialPort1.WriteTimeout = ConfiguracionPuerto(4) 'tiempo de escritura

    SerialPort1.PortName = ConfiguracionPuerto(0) 'nombre puerto

    SerialPort1.BaudRate = ConfiguracionPuerto(1) 'tiempo de espera para la escritura en el puerto

    SerialPort1.Parity = ConfiguracionPuerto(2)

    SerialPort1.StopBits = ConfiguracionPuerto(3) 'bit de parada

    Try

    SerialPort1.Open() 'Abrimos el puerto para la comunicaciones.

    SerialPort1.DiscardInBuffer()

    SerialPort1.DiscardOutBuffer() ahora

    Return True

    Catch ex As Exception

    MessageBox.Show("No se puede abrir el puerto intente de nuevo")

    Return False

    End Try

    End Function

     

    ahora solo tienes que escribir en el puerto serial byte a byte. lo puedes hacer de la siguiente forma

    pd: creo que tienes que utilizar un conversor RS485 a RS232 para que tu pc lo pueda leer puede ser un conversor ADAMS es el que utilizo. lo otro es que tenes que calcular el crc asociado a esa trama para que el Dispositivo te responda de otra forma no lo hace.

     

    bueno saludos y ojala te pueda ser de ayuda.

     

    Est Ing de Sistemas
    EAFIT

     

     

    While ContBits < trama.Length 'ciclo de escritura

    Try

    SerialPort1.Write(trama, ContBits, 1)          'solo quiere decir que del arreglo se va a escribir de a un byte en el puerto rs232           

    retardo()

    ContBits = ContBits + 1

    Catch e As Exception

    MessageBox.Show("Tiempo superado para la escritura. Problemas en el puerto serial")

    Exit Sub

    End Try

    End While

     

    yo utilizo trama para guardar el arreglo que contiene la trama de pregunta osea 

    |  DISP  | COMMAND |  DIH   | DIL  |   DFH  |   DFL | CRCH |   CRCL|

     

    miércoles, 2 de mayo de 2007 1:38
  • hey mario gracias.....  pues fijate que el protocolo que estoy utilizando es el SEAbus Plus protocol , y de conversor en mi pais solo puedo conseguir este  usotl4 rs485, es la primera vez que voy a trabajar en este tipo de sw.... te agradecira la ayuda que me pudieras dar...., en este protocolo le envias comando en hexadecimal y asi te lo recibe luego lo que te devuelve  lo hace  en dos parte, con un bit menos significativo y todo eso..... te doy mi correo y te molesto preguntandote??? taz_ues@hotmail.com

    gracias

    miércoles, 2 de mayo de 2007 14:16
  • gracias por los links pero cuando accedo a la pagina no me deja descargarlos...... otra forma de accedes??

     

    gracias

    jueves, 3 de mayo de 2007 18:55
  • Yo estoy trabajando con el puerto serial alguien me podria ayudar checando mi codigo no me sale ningun error pero tengo que ponerle un breakpoint o un msgbox para que no me corte la informacion entrante por el puerto.

     

     

    gracias

     

    jueves, 9 de agosto de 2007 16:25