Autor Tema: Modbus vb  (Leído 2779 veces)

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

Desconectado hwicz

  • PIC10
  • *
  • Mensajes: 19
Modbus vb
« en: 26 de Abril de 2005, 11:52:00 »
Pacala:
            Lo prometido es deuda.. aca dejo por lo menos una encuesta en vb para modbus como maestro, toy trabajando con el crc.. apenas lo tenga lo subo..
===============================================

Private Sub Form_Load()
     Dim Camino As String
      Camino = App.Path " ubicacion del archivo
     LblEstado.Caption = "Configurando Mscomm..."
      Open Camino & "Config.ini" For Input As #1 " abre archivo q contiene el valor decimal del nodo a encuestar, todabia no esá pensado para dos nodos, pero aca hay q cerrar el archivo ni bien se consigen dos caracteres.
        Do While Not EOF(1)   " Repite el bucle hasta el final del archivo.
            "Line Input #1, Seteo "   " Obtiene un carácter, en este caso el valor decimal del nodo.
            Line Input #1, ComX
            Line Input #1, Baud
            Line Input #1, Paridad
            Line Input #1, BitDatos
            Line Input #1, BitParada
            Line Input #1, TipoComm
            Line Input #1, NumTel
        Loop
     Close #1                   " si llega al final del archivo, lo cierra.
     
      MSComm1.CommPort = ComX " actualiza configuracion de mscomm
end sub
Private Sub Timer1_Timer()
Dim nodo, funcion, X, X1, X2, X3, X4, X5, Tira, Respuesta
On Error Resume Next
    nodo = "01" "numero de nodo a encuestar
    funcion = "03" " codigo funcion en este caso lectura

    X = "00" "registro comienzo alto
    X1 = "01" "registro comienzo bajo
    X2 = "00" "registro cantidad alto
    X3 = "01" "registro cantidad bajo
    X4 = "213"
    X5 = "202"

 Tira = Chr(nodo)
 Tira = Tira & Chr(3) "comando 10 (hexadecimal)
 Tira = Tira & Chr(X)
 Tira = Tira & Chr(X1)
 Tira = Tira & Chr(X2)
 Tira = Tira & Chr(X3)
 Tira = Tira & Chr(X4)
 Tira = Tira & Chr(X5)
 
 MSComm1.Output = Tira
  pausa
   Respuesta = MSComm1.Input

End Sub

Sub descompone(recepcion)
Dim Aux, Aux1, Aux2, Aux3, Aux4, I, cadena_rx_hex
Aux = ""
 Aux1 = ""
For I = 1 To Len(recepcion)
    Aux = Hex(Asc(Mid(recepcion, I, 1)))
If Len(Aux) < 2 Then Aux = "0" & Aux
    Aux1 = Aux1 & " " & Aux
Next
    cadena_rx_hex = Aux1
   
     Aux2 = Mid(cadena_rx_hex, 14, 2)
     Aux3 = Left(Aux2, 1)
     Aux4 = Right(Aux2, 1)
     If Aux3 = "A" Then
        Aux3 = 10
     End If
     If Aux3 = "B" Then
        Aux3 = 11
     End If
     If Aux3 = "C" Then
        Aux3 = 12
     End If
     If Aux3 = "D" Then
        Aux3 = 13
     End If
     If Aux3 = "E" Then
        Aux3 = 14
     End If
     If Aux3 = "F" Then
        Aux3 = 15
     End If
     "***********************************
     If Aux4 = "A" Then
        Aux4 = 10
     End If
     If Aux4 = "B" Then
        Aux4 = 11
     End If
     If Aux4 = "C" Then
        Aux4 = 12
     End If
     If Aux4 = "D" Then
        Aux4 = 13
     End If
     If Aux4 = "E" Then
        Aux4 = 14
     End If
     If Aux4 = "F" Then
        Aux4 = 15
     End If
  On Error Resume Next
     Aux4 = Aux4 * 16 ^ 0
     Aux3 = Aux3 * 16 ^ 1

Text2.Text = Aux3 + Aux4
End Sub

Sub pausa()

Dim TiempoPausa, Inicio, Final, TiempoTotal
   TiempoPausa = 0.2 "1.5   " Asigna hora de inicio.
   Inicio = Timer   " Establece la hora de inicio.
   Do While Timer < Inicio + TiempoPausa
      DoEvents   " Cambia a otros procesos.
   Loop
   Final = Time   " Asigna hora de finalización.
   TiempoTotal = Final - Inicio   " Calcula tiempo total.

End Sub


 

anything