Modbus en Visual Basic
Modbus en Visual Basic
Modbus en Visual Basic
Director
Juan Carlos Villamizar
MSc En Potencia Elctrica
Lista de Figuras
14
21
21
22
22
23
24
24
25
Figura 11. Definicin de valores para el encendido, apagado y cambio en el sentido de giro.
25
25
26
26
26
Figura 16. Funcin para establecer eliminar los errores del bfer..
27
27
28
29
30
31
32
33
34
Lista de tablas
Tabla 1. Estructura del prefijo de Modbus/TCP.
11
12
12
24
33
TABLA DE CONTENIDO
1. INRODUCCIN ........................................................................................................................... 7
2.1 MODBUS .................................................................................................................................. 8
2.1.2 Estructura de la red .............................................................................................................. 8
2.1.3 Protocolo .............................................................................................................................. 8
2.2 MODBUS TCP/IP ...................................................................................................................... 9
2.2.1 Caractersticas del protocolo Modbus TCP/IP...................................................................... 9
2.2.2 Estructura del protocolo Modbus TCP/IP .......................................................................... 10
2.2.3 Esquema de encapsulamiento Modbus tcp/IP .................................................................. 14
2.3 VARIADOR DE VELOCIDAD .................................................................................................... 14
2.3.1 Ventajas de la utilizacin del Variador de Velocidad en el arranque de motores
asncronos. .................................................................................................................................. 15
2.3.2 Principales funciones de los variadores de velocidad electrnicos ................................... 15
2.2.3 Conexin del variador de velocidad. .................................................................................. 20
3. IMPLEMENTACION DE LA RED ................................................................................................ 21
3.1 CONFIGURACION DE LA CONEXIN MODBUS ENTRE EL PLC Y EL VARIADOR DE
VELOCIDAD .................................................................................................................................. 22
3.2 CONFIGURACION DEL VARIADOR PARA LA COMUNICACIN MODBUS ............................... 23
3.3 PROGRAMACION DEL CODIGO PARA LA RECEPCIN Y ENVIO DE DATOS ............................ 24
4. INTERFAZ GRAFICA EN VISUAL BASIC ...................................................................................... 28
4.1 CONCEPTOS PREVIOS ............................................................................................................ 28
4.2 DESCRIPCIN DEL FUNCIONAMIENTO, ELEMENTOS Y CODIGO DE LA INTERFAZ CLIENTE
MODBUS
TCP/IP ...................................................................................................................... 29
TITULO:
AUTORES:
FACULTAD:
DIRECTOR:
DE
RESUMEN
Esta monografa presenta una interfaz programada en Visual Basic para la supervisin de
datos del plc TWD 07 de Schneider Electronics mediante el protocolo Modbus TCP/IP,
Este a su vez se encarga de controlar un variador de velocidad conectado a un motor
siemens de 0.45 KW. Con esta interfaz y el programa cargado al PLC se puede encender,
apagar, ajustar la velocidad en el variador e invertir el sentido de giro del motor. El lenguaje
en el cual est programada la interfaz es Visual Basic, el cual es sencillo y de amplio uso,
esta se comunica con el PLC usando el protocolo Modbus TCP/IP donde se utiliza la
biblioteca dinmica de funciones (DLL) winsock, esta dll soporta la comunicacin TCP/IP
mediante el envi y recepcin de sockets, siendo sobre estos sockets donde se enva la
trama Modbus. En la interfaz se dispone de controles sencillos para leer y escribir los
registros del PLC, pudiendo as realizar las acciones de control bsicas descritas en el
prrafo anterior.
Key words:
TITTLE:
AUTHORS:
FACULTY:
DIRECTOR:
SUMARY
This paper presents an interface programmed in Visual Basic for monitoring Schneider
Electronics TWD07 plcs data, via Modbus TCP / IP. In adition, the plc is responsible for
controlling a speed driver controller connected to a Siemens of 0.45 KW. With this interface
and PLCs program loaded we can turn on/off, adjust the speed in the drive and reverse the
direction of rotation of the motor.
The language in which the interface is programmed is Visual Basic, which is simple and
widely used, it communicates with the PLC using the Modbus TCP / IP which uses the
dynamic library of functions (DLL) winsock, this dll supports TCP / IP by sending and
receiving sockets, being on these sockets which sends the Modbus frame. The interface
has simple controls to read and write PLCs registers, and can perform basic control actions
described above.
Key words:
1. INRODUCCIN
2. MARCO TEORICO
2.1 MODBUS
Modbus es un protocolo de enlace, debido a esto puede implementarse con diversos tipos de
redes fsicas donde generalmente cada fabricante suele suministrar un software de aplicacin
propio. Este fue desarrollado por Modicom y en la actualidad es de acceso libre, una
caracterstica que lo ha convertido en un protocolo ampliamente utilizado.
Las caractersticas principales de Modbus se describen a continuacin:
Intercambios punto a punto, que comparten siempre dos mensajes: una demanda del
maestro y una respuesta del esclavo (puede ser simplemente un reconocimiento).
esclavos y se suelen emplear para mandar datos comunes de configuracin, reset, etc.
2.1.3 Protocolo
La codificacin de datos dentro de la trama puede hacerse en modo ASCII o puramente
binario, segn el estndar RTU (Remote Transmission Unit). En cualquiera de los dos casos,
cada mensaje obedece a una trama que contiene cuatro campos principales, segn se muestra
en la figura 1. La nica diferencia estriba en que la trama ASCII incluye un carcter de
encabezamiento (:=3A) y los caracteres CR y LF al final del mensaje. Otra diferencia entre
8
estos dos es la forma en la cual se calcula la palabra de chequeo de errores (CRC), el formato
RTU emplea una frmula polinmica en vez de la simple suma en mdulo 16 como lo hace el
formato ASCII. A continuacin muestra cada una de las dos tramas y la posicin de los
elementos en la misma:
N
Esclavo
(00-3FH)
:
(3AH)
Cdigo de
Operacin
Subfunciones, Datos
LRC(16)
H L
CR
(0DH)
LF
(OAH)
Codificacin ASCII
Escla
Cdigo de
voOperacin
N
Esclavo
(00-3FH)
Subfunciones, Datos
CRC(P16)
H L
Codificacin RTU
)
Escla
El
conexin.Las operaciones de
http://www.dte.upct.es/personal/manuel.jimenez/docencia/GD6_Comunic_Ind/pdfs/Tema%207.pdf.
concurrentes, de este modo el cliente (maestro) puede ya sea re-usar una conexin
previamente establecida o crear una nueva, en el momento de realizar una
transaccin de datos.
Para los cdigos de funcin que llevan una cantidad variable de datos en la solicitud
respuesta, la porcin de datos estar precedida por un campo que representa el
nmero de bytes que siguen. Cuando MODBUS es llevado sobre TCP, la informacin de
longitud se adiciona en el prefijo (o encabezado), para permitir al receptor reconocer
los lmites del mensaje. Para los cdigos de funcin que llevan una solicitud
respuesta con una longitud fija, solo es suficiente el cdigo de funcin.
MODBUS PLUS
Las nicas diferencias en esos otros casos son la especificacin de los delimitadores inicial y
final del mensaje (framing), el patrn de chequeo de error y la interpretacin de la direccin.
Las solicitudes normalmente son enviadas en forma half-duplex (los datos pueden viajar en
cualquier direccin, pero no en forma simultnea) sobre una conexin dada. Esto implica que,
no hay beneficio en enviar solicitudes adicionales sobre una nica conexin mientras una
respuesta est pendiente. Sin embargo, los dispositivos que desean obtener altas ratas de
transferencia pueden establecer mltiples conexiones TCP al mismo destino.
Esta tcnica de consulta/respuesta encaja perfectamente con la naturaleza Maestro/Esclavo
de Modbus, aadido a la ventaja del determinismo que las redes Ethernet conmutadas ofrecen
a los usuarios en la industria. El empleo del protocolo abierto Modbus con TCP proporciona
una solucin para la gestin desde unos pocos a decenas de miles de nodos.
El campo direccinesclavo de MODBUS es reemplazado por un byte identificador de unidad el
cual puede ser usado para comunicar a travs de dispositivos tales como puentes y gateways,
los cuales usan una direccin IP nica para soportar mltiples unidades
terminales
independientes.
Los mensajes de solicitud y respuesta en Modbus/TCP poseen un prefijo encabezado
compuesto por seis bytes como se aprecia en la tabla 2.
Ref
Ref
00
00
len
Los elementos ref ref inciales son los dos bytes del campo referencia de transaccin, un
nmero que no tiene valor en el servidor, pero son copiados literalmente desde la solicitud de
respuesta. Este campo se utiliza para que un cliente Modbus/TCP pueda establecer
simultneamente mltiples conexiones con diferentes servidores y pueda identificar cada una
de las transacciones.
El tercer y cuarto campo del prefijo representa el identificador de protocolo, un nmero el cual
debe ser establecido a cero. El trmino len especifica el nmero de bytes que siguen. La
longitud es una cantidad de dos bytes, pero el byte alto se establece a cero ya que los
mensajes son menores que 256.
http://www.monografias.com/trabajos75/red-modbus-tcp-ordenador/red-modbus-tcp-ordenador2.shtml
Significado
Byte 0
Byte 1
Byte 2
Identificador de protocolo = 0.
Byte 3
Identificador de protocolo = 0.
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8 en adelante
En la siguiente tabla se muestra un conjunto de funciones bsicas las cuales conforman uno de
los cuatro campos principales que conforman un mensaje. Este cdigo de funcin se encuentra
en el byte 7 de la estructura de mensaje Modbus.
Funcin
Cdigo
Tarea
00H
01H
02H
03H
11
04H
05H
Escritura de un bit
06H
07H
08H
09H
No utilizado
10
0AH
No utilizado
11
0BH
12
0CH
No utilizado
13
0DH
No utilizado
14
0EH
No utilizado
15
0FH
Estructura de n Bits
16
10H
Escritura de n palabras
MbusQuery(0) = 0
Identificadores de transaccin.
MbusQuery(1) = 0
MbusQuery(2) = 0
Identificadores de protocolo
MbusQuery(3) = 0
MbusQuery(4) = 0
MbusQuery(5) = 6
MbusQuery(6) = 1
Identificador de unidad(esclavo 1)
MbusQuery(7) = 3
MbusQuery(8) = StartHigh
MbusQuery(9) = StartLow
MbusQuery(10) = LengthHigh
MbusQuery(11) = LengthLow
12
Donde Text2.Text es igual al valor de donde se empiezan a leer los registros yText3.Text es la
cantidad de datos que deseo leer.
13
Identificador
deProtocolo
Identificador
deLongitud
Trama
MODBUS
TCP
Transaccin
TRAMA
Direccin
MODBUS
Cdigo de
Funcin
DATOS
Suma de
Chequeo
Vid nota 1
La informacin sobre el variador de velocidad fue tomado de las guas de laboratorio de redes
industriales UPB bucaramanga.
4
- Mecnica delicada
14
Variacin de velocidad
Un variador de velocidad no puede ser al mismo tiempo un regulador. En este caso, es un
sistema, rudimentario, que posee un mando controlado mediante las magnitudes elctricas
del motor con amplificacin de potencia, pero sin bucle de realimentacin: es lo que se llama
en bucle abierto.
La velocidad del motor se define mediante un valor de entrada (tensin o corriente) llamado
consigna o referencia. Para un valor dado de la consigna, esta velocidad puede variar en
funcin de las perturbaciones (variaciones de la tensin de alimentacin, de la carga, de la
temperatura). El margen de velocidad se expresa en funcin de la velocidad nominal.
Para variar la velocidad del motor lo que hace el variador es mantener una frecuencia
constante. Si se quiere variar la velocidad el cambio no es brusco sino que cambia con un
tiempo estipulado en los parmetros del variador.
Regulacin de la velocidad
Un regulador de velocidad es un dispositivo controlado. Posee un sistema de mando con
amplificacin de potencia y un bucle de alimentacin: se denomina, bucle abierto.
15
Deceleracin controlada
Cuando se desconecta un motor, su deceleracin se debe nicamente al par resistente de la
mquina (deceleracin natural). Los arrancadores y variadores electrnicos permiten controlar
la deceleracin mediante una rampa lineal o en S, generalmente independiente de la rampa
de aceleracin.
Esta rampa puede ajustarse de manera que se consiga un tiempo para pasar de la velocidad de
rgimen fijada a una velocidad intermediaria o nula:
- Si la deceleracin deseada es ms rpida que la natural, el motor debe de desarrollar un par
resistente que se debe de sumar al par resistente de la mquina; se habla entonces de frenado
elctrico, que puede efectuarse reenviando energa a la red de alimentacin, o disipndola en
una resistencia de frenado.
- Si la deceleracin deseada es ms lenta que la natural, el motor debe desarrollar un par
motor superior al par resistente de la mquina y continuar arrastrando la carga hasta su
parada.
16
Al igual que con un funcionamiento normal para invertir el sentido de giro de un motor de
induccin, con un variador electrnico se le debe invertir el sentido de rotacin al campo
magntico en el estator. Solo que aqu no se hace con contactores ni con switches externos,
sino simplemente se le cambia la secuencia de encendido a los transistores del puente en H
trifsico. La gran diferencia es que con contactores se le puede cambiar repentinamente el
sentido de giro al motor, en un variador esto no se puede conseguir porque se daan los
transistores del puente en H. Para evitar el dao, los variadores deben primero aplicar uno de
los frenados descritos anteriormente, esperar que la velocidad llegue a cero y despus
invertirle la secuencia a las fases del motor.
Frenado
De manera similar a como se realizan los arranques en los procesos industriales, los frenados
en estos exigen que se hagan de manera muy suave. Imagnese que sucedera con la banda
que lleva productos de vidrio si se hiciera un frenado rpido. En un variador de velocidad se
pueden tener los siguientes tipos de frenados:
Frenado inercial o natural: consiste en dejar que la mquina desgaste su energa cintica en la
carga, una buena aplicacin para este tipo de frenado son las bombas de agua, que al
quitrsele la energa, al motor la bomba sigue trabajando por un pequeo tiempo. Este tipo de
frenado se puede usar en procesos donde no se requiere demasiada precisin. Para hacer este
tipo de frenado el variador de velocidad solo quita la energa y ningn proceso se hace luego.
Frenado por rampa: este frenado consiste en ir bajando la frecuencia desde un valor de
trabajo hasta un frecuencia baja donde al motor se le aplica otro tipo de frenado como
regenerativo, o el frenado con corriente continua.
Frenado con corriente continua: este mtodo, consiste en inyectarle una corriente continua al
estator del motor de induccin y este crea un flujo magntico constante que hace parar al
motor. Para poder frenar el motor, este debe primero llegar a un velocidad que no sea
peligrosa para el proceso (unas cuantas rpm) y despus, a tensin reducida se le aplica una
corriente continua al estator; se le deja un pequeo tiempo hasta que el motor est
completamente quieto, luego se le debe quietar la corriente continua para que los devanados
del estator no se sobrecalienten y se daen. Para que al motor se le pueda aplicar el frenado
con corriente continua, se debe aplicar antes el frenado inercial o el frenado por rampa.
Frenado regenerativo: este frenado precisa que la energa cintica que se obtiene en el
frenado se gaste en una resistencia externa, y para tal fin algunos variadores de velocidad
17
necesitan una resistencia externa para su buen funcionamiento. Al igual que el frenado con c.c.
se necesita que el motor haya perdido parte de su velocidad por un frenado inercial o por
rampa. En este frenado el motor de induccin se convierte en generador bajando la frecuencia
de alimentacin del estator, y luego la energa se disipa en una resistencia externa.
Proteccin integrada
Los variadores modernos aseguran tanto la proteccin trmica de los motores como su propia
proteccin. A partir de la medida de la corriente y de una informacin sobre la velocidad (si la
ventilacin del motor depende de su velocidad de rotacin), un microprocesador calcula la
elevacin de temperatura de un motor y suministra una seal de alarma o de desconexin en
caso de calentamiento excesivo.
Adems, los variadores, y especialmente los convertidores de frecuencia, estn dotados de
protecciones contra:
el funcionamiento en monofsico.
Los elementos mnimos son un potencimetro para poder variar la velocidad y una
llave selectora para invertir el sentido de giro. Con estos ajustes mnimos y un correcto
ajuste de sus parmetros el variador est listo para funcionar.
3. IMPLEMENTACION DE LA RED
ModbusTCP/IP
PLC
Interfaz -PC
Modbus
Variador
Cableado elctrico
Motor
http://www.alamedaelectric.com/Modicon%20Documents/AC%20Drive%20ATV31%20StartUp%20Guide.pdf
21
Los elementos de la figura 4 representan la red montada, asi como el tipo de conexin
utilizada entre cada uno de ellos. En la conexin Modbus TCP/IP se utiliza un cable RS 485,
mientras que para la conexin entre el PLC y el variador se utiliza un cable Modbus. El cable
Modbus se construye con un conector RS 485 y un conector minidim como se muestra en la
siguiente figura:
22
http://www.alamedaelectric.com/Modicon%20Documents/AC%20Drive%20ATV31%20Prog%20Manual.pdf
23
Cdigo
Descripcin
LAC
Fr1
Ndb
CHCF
SEP: Separados
SEP
Cd1
Ndb
Esta configuracin debe ser realizada antes de realizar la conexin con el PLC, ya que de lo
contrario se pueden presentar daos tanto en el PLC como en el variador.
24
Figura 11. Definicin de valores para el encendido, apagado y cambio en el sentido de giro
Esta lnea gua a la unidad de velocidad ATV en sentido horario. La velocidad debe establecerse
con D_SELECT_SPEED antes de activar esta macro.
25
26
la
siguiente
imagen
se
muestra
el
programa
de
la
aplicacin
en
Lista:
27
TCP/IP
Registros
seleccionados
Seleccin de
registros
29
Direccion IP
Conectar
No
No se pudo
conectar
conectado
Si
Registro de inicio
lectura/escritura
y
Longitud datos
lectura/escritura
Escribir Registros
Leer Registros
Escritur de
registros
Lectura de
registros
No
Si
No
No se pudo
realizar la
operacion
Si
Fin
30
Escribir Registro
no se pudo hacer
la conexion via
TCP/IP
Conectado
Se construye el
bus de datos a
escribir
MbusWriteQuery
Activa el timer
Timer +1
No
Timer= 2s
si
La trama de
datos recibida
es correcta
Ocurrio un error al
escribir los datos
No
si
Modbus Write
No
Modbus Write
=true
si
Fin
31
Leer Registro
no se pudo hacer
la conexion via
TCP/IP
Conectado
No
Activa el timer
no se pudo hacer
la conexion via
TCP/IP
Winsock1.State = 7
si
Timer +1
No
Timer= 2s
si
Modbus Read
No
Modbus Read =
true
si
Fin
Para realizar la conexin Modbus TCP/IP se ingresa la direccin IP del PLC al cual se va a
comunicar en el campo Direccin IP, Luego, damos click en el botn conectar. Si la
conexin es exitosa el estado ser conectado.
Para leer o escribir los datos del PLC escribimos la cantidad o longitud de datos que se quiere
leer o escribir en el campo Longitud y la posicin desde el cual se quiere empezar a ejecutar
32
Valor
0
1
2
3
4
5
6
7
8
9
Nombre
sckClosed
sckOpen
sckListening
sckConnectionPending
sckResolvingHost
sckHostResolved
sckConnecting
sckConnected
sckClosing
sckError
Descripcin
connection closed
open
listening for incoming connections
connection pending
resolving remote host name
remote host name successfully resolved
connecting to remote host
connected to remote host
connection is closing
error occured
33
Timer (
peticiones realizadas con el winsock para determinar si esta fue exitosa o no (Control oculto).
34
Funcin Conectar
PrivateSubconectar_Click()
DimStartTime
StartTime = Timer
DoWhile ((Timer <StartTime + 2) And (Winsock1.State <> 7))
DoEvents()
Loop
If (Winsock1.State = 7) Then
Text5.Text = "Conectado"
Text5.BackColor = &HFF00&
Else
Text5.Text = "no pudoconectar a " + Text1.Text
Text5.BackColor = &HFF
EndIf
EndSub
Se inicializa el timer y
y realiza los eventos
necesarios para
establecer la
comunicacin
Declaracin de variables
If (Winsock1.State = 7) Then
MbusQuery(0) = 0
Identificadores de transaccin.
MbusQuery(1) = 0
MbusQuery(2) = 0
Identificadores de protocolo
MbusQuery(3) = 0
MbusQuery(4) = 0
Mensajes menores a 256
MbusQuery(5) = 6
Numero de bytes siguientes
MbusQuery(6) = 1
Identificador de unidad(esclavo 1)
MbusQuery(7) = 3
Cdigo de funcinModbus
MbusQuery(8) = StartHigh
MbusQuery(9) = StartLow
Cantidad de datos a leer o escribir
MbusQuery(10) = LengthHigh
Representados de la forma big- endian
MbusQuery(11) = LengthLow
MbusRead = True
MbusWrite = False
Actualizacin de punteros
Winsock1.SendData(MbusQuery)
y envi de la trama de datos
ModbusWait = True
ModbusTimeOut = 0
Timer1.Enabled = True
35
Else
MsgBox("no se pudo hacer la conexionvia TCP/IP")
EndIf
EndSub
For i = 0 ToVal(Text3.Text) - 1
ByteLow = Val(Text4(i).Text) Mod 256
ByteHigh = Val(Text4(i).Text) \ 256
MbusWriteQuery = MbusWriteQuery + Chr(Val(Text4(i).Text) Mod 256) +
Chr(Val(Text4(i).Text) \ 256)
Next i
Tramamodbus
datos
MbusRead = False
MbusWrite = True
Winsock1.SendData(MbusWriteQuery)
Envi de datos
ModbusWait = True
ModbusTimeOut = 0
Timer1.Enabled = True
Else
MsgBox("no se pudo hacer la conexin via TCP/IP")
EndIf
EndSub
36
Else
Text5.Text = "Ocurrio un error al escribir los datos"
Text5.BackColor = &HFF
End If
End If
End Sub
Funcin Timer
Private Sub Timer1_Timer()
ModbusTimeOut = ModbusTimeOut + 1
If ModbusTimeOut > 2 Then
ModbusWait = False
ModbusTimeOut = 0
Text5.Text = "Modbus Time Out"
Text5.BackColor = &HFF
Timer1.Enabled = False
End If
End Sub
37
Funcin Desconectar
PrivateSubdesconectar_Click()
If (Winsock1.State <>sckClosed) Then
Winsock1.Close()
EndIf
DoWhile (Winsock1.State <>sckClosed)
DoEvents()
Loop
Text5.Text = "Desconectado"
Text5.BackColor = &HFF
EndSub
38
CONCLUSIONES
Mediante el software desarrollado se puede escribir y leer registros del plc, los cuales
nos brindan la posibilidad de controlar diferentes acciones, en este caso la velocidad,
arranque y parada de un motor asncrono.
La librera Winsock de Visual Basic posee las herramientas necesarias para realizar la
conexin y envi de datos va TCP/IP, que fue de gran utilidad para el desarrollo de la
interfaz, presentndose como una buena opcin a la hora de desarrollar un software
supervisor para una red ModBus.
39
BIBLIOGRAFIA
http://read.pudn.com/downloads126/sourcecode/app/534835/MbusTCPTest/Form1.f
rm__.htm
http://www.dte.upct.es/personal/manuel.jimenez/docencia/GD6_Comunic_Ind/pdfs/
Tema%207.pdf
http://www.rtaautomation.com/modbustcp/
http://www.monografias.com/trabajos75/red-modbus-tcp-ordenador/redmodbus-tcp-ordenador2.shtml
http://www.infoplc.net/Descargas/Descargas_Schneider/Des_Schneider_Files/in
foPLC_net_ALTIVAR_31_COMUNICACION_MODBUS.html
http://www.alamedaelectric.com/Modicon%20Documents/AC%20Drive%20AT
V31%20Prog%20Manual.pdf
Twidoprogramable controllers Software Reference Guide
Manual de usuario PLC TSX ETZ de Telemecanique
40