Anda di halaman 1dari 16

ESCUELA SUPERIOR POLITCNICA DEL LITORAL

Facultad de Ingeniera en Electricidad y Computacin

Maestra en Automatizacin y Control Industrial

Captura de Datos de una Balanza Electrnica y Control de Micro


PLC Logo Siemens 0BA6 mediante Visual Basic 2010

PROYECTO DE CURSO

Programacin Avanzada Visual Basic.Net

Presentado por:

Luis Angel Buchelli Carpio


Fernando Danilo Mora Valverde
Byrone Antonio Almeida Salazar

GUAYAQUIL ECUADOR

Ao: 2013
1. ANTECEDENTES

El avance tecnolgico a nivel mundial resulta ser acelerado conforme avanza el tiempo,
esto involucra cambios y aperturas en mercados regionales, por las exigencias de la
economa global. En tal virtud las organizaciones se ven obligadas a ser ms
competentes e innovadoras, siendo una alternativa la tecnificacin de sus procesos
industriales. Las tcnicas de produccin y fabricacin de cualquier producto es por
consiguiente, un factor prioritario que marca la competitividad. Esta realidad nos
conduce que utilicemos eficaz y eficientemente la capacidad operativa de las mquinas
e instalaciones que se dispone en determinada industria.

As mismo en la actualidad vemos la creacin de distintos softwares de control que


sirven como herramientas en la tecnificacin industrial. Estos softwares poseen
distintos lenguajes de programacin, siendo uno de ellos es Visual Basic.NET
(VB.NET), que es un lenguaje de programacin orientado a objetos resultado de la
evolucin del Visual Basic implementado sobre el framework.NET

Visual Basic fue desarrollado por Alan Cooper en 1991 para Microsoft, con la intencin
de simplificar la programacin utilizando un ambiente de desarrollo completamente
grfico que facilitara la creacin de interfaces grficas y en cierta medida la
programacin misma.

2. JUSTIFICACION TCNICA

En nuestro pas la evolucin productiva est considerando los avances tecnolgicos y


la industria ecuatoriana necesita ser competente, aumentando su productividad de una
forma tal que pueda competir con el mercado internacional en cuanto sus exigencias y
estndares.

La utilizacin de equipos electrnicos como: los Micro PLCs, Balanzas va en aumento,


pero sta tecnologa en algunas ocasiones, no se encuentra lo suficientemente
respaldada por una gestin de mantenimiento adecuada que les garantice un ptimo
funcionamiento de los equipos, as como su disponibilidad y cumplimiento de la funcin
para la que fueron diseados.

Lo que se pretende con ste estudio es analizar, controlar y vincular a un Micro PLC
(Logo Siemens 0BA6) y a una Balanza electrnica mediante la aplicacin de Visual
Basic 2010 para conocer las alternativas de conexin, funcionabilidad y campos de
aplicacin. Tambin se enfoca como una gua de estudio, ya que se pueden utilizar
bancos de estudio terico prcticos para sistemas de enseanza en automatizacin
industrial, apoyando al desarrollo tecnolgico y para la formacin de futuros ingenieros.
3. OBJETIVOS

3.1 GENERAL
Controlar un Micro PLC (Logo Siemens 0BA6) y una Balanza Electrnica mediante
la Aplicacin de Visual Basic 2010.

3.2 ESPECFICOS

- Pesar cualquier objeto de hasta 50 Kg en una balanza electrnica y comprobar


la medicin de la pantalla con la medicin del programa en Visual Basic 2010.
- Controlar cualquier sistema electroneumtico comandado por un Logo Siemens,
el cual ser encendido o desconectado mediante Visual Basic 2010.
- Registrar valores obtenidos en una base de datos.
- Describir el funcionamiento de los Programas mediante diagramas de flujo.
- Aplicar lo aprendido en el curso de Programacin Avanzada Visual Basic.NET.

4. DESCRIPCIN DEL PROYECTO

4.1 BALANZA ELECTRONICA

Empezaremos describiendo el sistema de control y programacin de la Balanza


electrnica.

Figura 1

La Figura 1, muestra el diseo del programa visto desde el entorno de visual Basic
2010 en donde se puede observar el puerto a seleccionar, las lecturas del peso en Kg y
Acumulados, es decir el peso que se va adicionando desde el peso inicial. El objetivo
es controlar que la medicin en la pantalla de la balanza sea la misma en visual Basic y
luego los valores de peso y acumulados se registrarn en una base de datos. A
continuacin mediante un diagrama de flujo (Ver diagrama de flujo 1) se procede a
describir la programacin realizada.
Diagrama de Flujo 1
La Figura 2, muestra el diseo del programa visto desde el entorno de visual Basic
2010 en donde se puede observar las lecturas del peso en gramos y acumulados, junto
con un indicador de aguja que mostrar tambin el peso total acumulado. As mismo
muestra una barra que indica la cantidad de registros de datos que han sido
almacenados.

Figura 2

La Figura 3, muestra la base de datos en Microsoft Acces, que ha sido registrada en el


programa, de acuerdo al artculo y pesos actuales y acumulados.

Figura 3
4.1.1 PRIMERA PROGRAMACIN (BALANZA ELECTRNICA).

A continuacin se muestra el primer Programa Realizado en Visual Basic 2010.


Imports System
Imports System.IO.Ports
Imports System.Threading
Public Class Form1
Dim port_com3 As New SerialPort 'variable para conexin puerto serial COM3'
Dim peso As Double = 0 'valor a medirse'
Dim data_com As String 'variable para leer el dato del puerto COM3'
Dim valor() As String 'valor medido'
Dim ne As New Integer
Dim i As Integer = 0
Dim nrow As DataRow 'aadir filas a la base de datos'
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
'TODO: This line of code loads data into the 'PESOS1DataSet.PESO' table. You can move, or
remove it, as needed.
Me.PESOTableAdapter.Fill(Me.PESOS1DataSet.PESO)
Dim puerto_com As String 'lectura como cadena de caracteres'
puerto_com = SerialPort.GetPortNames(1)
ListBox1.Items.Add(puerto_com)
port_com3.PortName = puerto_com
port_com3.BaudRate = 9600
port_com3.Parity = Parity.None
port_com3.DataBits = 8
port_com3.StopBits = 1
port_com3.Handshake = Handshake.RequestToSend
port_com3.Open()
For j = 0 To PESOS1DataSet.PESO.Rows.Count - 1
ComboBoxArticulos.Items.Add(PESOS1DataSet.PESO.Rows(j).Item(4))
Next
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Timer1.Tick
Dim n As New Integer
n=0
While n = 0
n = port_com3.BytesToRead 'lee los bytes datos que vienen del puerto'
If n > 0 Then
data_com = port_com3.ReadLine
If (data_com.ToString.Trim.Length > 0) Then 'convierte en cadena de caracteres y
elimina espacios vacios'
valor = data_com.Split(":") 'solo lee lo que est despus de los dos puntos'
ListBox2.Items.Add(Val(valor(1).ToString)) 'aade a la lista los pesos en forma de
valor numerico'
peso = peso + Val(valor(1)) 'peso acumulado'
TxtSuma.Text = peso
DigitalPanelMeter1.Value = Val(valor(1)) * 1000 'display PESO'
nrow = Me.PESOS1DataSet.PESO.NewRow
nrow(2) = CDbl(Val(valor(1)) * 1000) 'aade peso a base de datos
nrow(3) = CDbl(peso * 1000) 'aade el acumulado del peso a base de datos
nrow(4) = ComboBoxArticulos.Text 'aade el nombre de articulo a base de datos
Timer1.Enabled = False
If peso >= 100 Then
ProgressBar1.Value = 0
peso = 0
End If
End If
End If
End While
DigitalPanelMeter2.Value = peso * 1000 'display ACUMULADO'
Gauge1.Value = peso 'DISPLAY circular PESO ACUMULADO'
ProgressBar1.Maximum = 100 'seteo de mxima cantidad a medir'
If peso < 100 Then
ProgressBar1.Value = peso 'peso acumulado en barra de progreso'
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
nrow(4) = ComboBoxArticulos.Text
Me.PESOS1DataSet.PESO.Rows.Add(nrow)
Me.PESOTableAdapter.Update(PESOS1DataSet.PESO)
Timer1.Start()
Chart1.Series(0).Points.AddXY(nrow(4), nrow(2))
End Sub
Private Sub PESOBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles PESOBindingNavigatorSaveItem.Click
Me.Validate()
Me.PESOBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.PESOS1DataSet)
End Sub
End Class

4.2 CONTROL MICRO PLC (LOGO SIEMENS 0BA6)

A continuacin describiremos el sistema de control para el Micro PLC (Logo Siemens


0BA6) que consiste en controlar cualquier sistema electro-neumtico comandado por
un Logo Siemens, el cual ser encendido o desconectado mediante Visual Basic 2010,
bajo la librera Destrasfer.dll
Figura 4

La Figura 4, muestra el diseo del programa visto desde el entorno de visual Basic
2010 en la pestaa Panel de Control, siguiendo los parmetros de la librera
Destransfer.dll, creada por DESMUL24 de Siemens Logo.

Cabe mencionar que en el programa no se pueden ver las entradas y las salidas
porque no se cuenta con la sentencia que se debe enviar al Micro LC logo para que
ste responda (comando test online), en consecuencia queda como propuesta para
mejorar sta programacin en un trabajo futuro.

A continuacin mediante en el diagrama de Flujo 2, se procede a describir la pestaa


del Panel de Control.
Diagrama de Flujo 2

La Figura 5, muestra la pestaa de la Estadstica en donde se indica los cambios por


Mantenimientos General, de Aceite tanto de la unidad FRL (Filtro, Regulador,
Lubricador), as como del compresor. De igual manera indica la Presin del sistema en
el manmetro, fecha y hora del ltimo encendido. Cuando se ejecuta el programa
automticamente se guardan los registros en una base de datos.
Figura 5

A continuacin en el diagrama de flujo 3 se procede a describir el funcionamiento de


sta pestaa.

Diagrama de Flujo 3
Figura 6

La Figura 6, muestra la pestaa de la Base de Datos en donde se indican los registros


(fecha y hora) los cambios por Mantenimientos General, Aceite de la unidad FRL,
aceite del compresor que han sido realizados y los que debern realizarse. A
continuacin, en la Figura 7, se muestra la base de datos almacenada en Microsoft
Access.

Figura 7

4.2.1 SEGUNDA PROGRAMACIN (CONTROL MICRO PLC).


Finalmente se muestra el segundo Programa Realizado en Visual Basic 2010.

Imports DesTransfer ' libreria creada por DESMUL24 Siemens !LOGO


Public Class Form1
Dim datahoy As Date
Dim contador As Integer
Dim contador2 As Integer
Dim contador3 As Integer
Dim con As OleDb.OleDbConnection
Dim dato1 As Long
Dim portType As String
Dim portName As String
Dim dTrans As New LogoCommunicator
Dim i As Integer = 0
Private Sub btnRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnRefresh.Click
refreshPorts()
End Sub
Private Sub refreshPorts()
For Each dPortName As String In My.Computer.Ports.SerialPortNames 'Conseguir todos los puertos disponibles.
cmbSerialPorts.Items.Add(dPortName)
Next
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


'TODO: This line of code loads data into the 'DATOSDataSet.MANTENIMIENTO' table. You can move, or remove
it, as needed.
Me.MANTENIMIENTOTableAdapter.Fill(Me.DATOSDataSet.MANTENIMIENTO)
cmbPortTypes.Items.Add(LogoCommands.PortTypes.Serial_Port)
cmbPortTypes.Items.Add(LogoCommands.PortTypes.Ethernet_Port)
cmbSerialPorts.Visible = False
btnRefresh.Visible = False
Label2.Visible = False
Label3.Visible = False
txtIpAdress.Visible = True
SquareIlluminatedButton1.Enabled = False
SquareIlluminatedButton2.Enabled = False
txtIpAdress.Visible = False
Panel2.Visible = False
End Sub
Private Sub cmbPortTypes_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles cmbPortTypes.SelectedIndexChanged
If cmbPortTypes.Text = LogoCommands.PortTypes.Serial_Port Then
portType = cmbPortTypes.Text
cmbSerialPorts.Visible = True
btnRefresh.Visible = True
txtIpAdress.Visible = False
Label2.Visible = True
Label3.Visible = False
refreshPorts()
ElseIf cmbPortTypes.Text = LogoCommands.PortTypes.Ethernet_Port Then
portType = cmbPortTypes.Text
cmbSerialPorts.Visible = False
btnRefresh.Visible = False
txtIpAdress.Visible = True
portName = txtIpAdress.Text
Label2.Visible = False
Label3.Visible = True
SquareIlluminatedButton1.Enabled = True
End If
End Sub
Private Sub cmbSerialPorts_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmbSerialPorts.SelectedIndexChanged
If cmbSerialPorts.Text = "Ninguno" Then
SquareIlluminatedButton1.Enabled = False
SquareIlluminatedButton2.Enabled = False
Else
portName = cmbSerialPorts.Text
SquareIlluminatedButton1.Enabled = True
SquareIlluminatedButton2.Enabled = False
End If
End Sub
Private Sub txtIpAdress_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
txtIpAdress.TextChanged
portName = txtIpAdress.Text
End Sub
Private Sub btnGetPlcStatus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnGetPlcStatus.Click
Dim plcStatus As Integer
Try
plcStatus = dTrans.getDeviceState()
If plcStatus = LogoCommands.General.LOGO_COMMAND_PLC_RUN Then
txtMessage.AppendText("PLC est en MODO RUN" & vbCrLf)
ElseIf plcStatus = LogoCommands.General.LOGO_COMMAND_PLC_STOP Then
txtMessage.AppendText("PLC est en MODO STOP" & vbCrLf)
Else
txtMessage.AppendText("Mensaje desconocido: " & plcStatus.ToString & vbCrLf)
End If
Catch ex As TXException
txtMessage.AppendText("Error: " & ex.Message & vbCrLf)
Catch ex As Exception
txtMessage.AppendText("Error Desconocido: " & ex.Message & vbCrLf)
End Try
End Sub

Private Sub PilotLight1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


PilotLight1.Click
Try
dTrans.sendStateCommand(LogoCommands.General.PC_COMMAND_CHANGE_STATE_TO_RUN)
txtMessage.AppendText("Cambiado a MODO RUN" & vbCrLf)
Gauge1.Value = CInt(Math.Ceiling(Rnd() * 5) + 88)
Timer2.Enabled = True
Timer2.Interval = 100
ProgressBar1.Value = 0
ProgressBar1.Maximum = 100
ProgressBar2.Value = 0
ProgressBar2.Maximum = 300
ProgressBar3.Value = 0
ProgressBar3.Maximum = 500
Catch ex As TXException
txtMessage.AppendText("Error: " & ex.Message & vbCrLf)
End Try
End Sub

Private Sub PilotLight2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


PilotLight2.Click
Try
dTrans.sendStateCommand(LogoCommands.General.PC_COMMAND_CHANGE_STATE_TO_STOP)
txtMessage.AppendText("Cambiado a MODO STOP" & vbCrLf)
Gauge1.Value = 0
Catch ex As TXException
txtMessage.AppendText("Error: " & ex.Message & vbCrLf)
End Try
End Sub

Private Sub SquareIlluminatedButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles SquareIlluminatedButton1.Click
Try
dTrans.openConnection(portType, portName)
dTrans.setComTimeOut(2000, 2000)
txtMessage.AppendText("Conectado" & vbCrLf)
SquareIlluminatedButton1.Enabled = False
SquareIlluminatedButton2.Enabled = True
datahoy = Now
TextBox2.Text = datahoy
Panel2.Visible = True
Catch ex As TXException
txtMessage.AppendText("FALLO CONEXION: " & ex.Message & vbCrLf)
Catch ex As Exception
txtMessage.AppendText("Error Conexin " & ex.Message & vbCrLf)
End Try
End Sub

Private Sub SquareIlluminatedButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles SquareIlluminatedButton2.Click
Try
If dTrans.diconnect() Then
txtMessage.AppendText("Desconectado" & vbCrLf)
SquareIlluminatedButton1.Enabled = True
SquareIlluminatedButton2.Enabled = False
Panel2.Visible = False
Else
txtMessage.AppendText("Fall la Desconecin" & vbCrLf)
End If
Catch ex As TXException
txtMessage.AppendText("Falla: " & ex.Message & vbCrLf)
Catch ex As Exception
txtMessage.AppendText("Error Desconocido: " & ex.Message & vbCrLf)
End Try
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Try
Dim dato1() As Integer = dTrans.getRemoteIOStatus().ToArray
Catch ex As System.IO.IOException
MsgBox("ERROR")
End Try
i=i+1
If i > 67 Then
Timer1.Stop()
End If
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

Dim pba1 As String


Dim pba2 As String
Dim pba3 As String
Dim nrow As DataRow

If contador3 < 500 Then


If contador2 < 300 Then
If contador < 100 Then
ProgressBar1.Value = contador
contador = contador + 1
If ProgressBar1.Value = 99 Then
ProgressBar1.Value = 0
contador = 0

pba1 = Now.ToShortDateString
nrow = Me.DATOSDataSet.MANTENIMIENTO.NewRow
nrow(1) = pba1.ToString
Me.DATOSDataSet.MANTENIMIENTO.Rows.Add(nrow)
Me.MANTENIMIENTOTableAdapter.Update(Me.DATOSDataSet.MANTENIMIENTO)

End If
End If
ProgressBar2.Value = contador2
contador2 = contador2 + 1
If ProgressBar2.Value = 299 Then
ProgressBar2.Value = 0
contador2 = 0
pba2 = Now.ToShortDateString
nrow = Me.DATOSDataSet.MANTENIMIENTO.NewRow
nrow(2) = pba2.ToString
Me.DATOSDataSet.MANTENIMIENTO.Rows.Add(nrow)
Me.MANTENIMIENTOTableAdapter.Update(Me.DATOSDataSet.MANTENIMIENTO)

End If
End If
ProgressBar3.Value = contador3
contador3 = contador3 + 1
If ProgressBar3.Value = 499 Then
ProgressBar3.Value = 0
contador3 = 0

pba3 = Now.ToShortDateString
nrow = Me.DATOSDataSet.MANTENIMIENTO.NewRow
nrow(3) = pba3.ToString
Me.DATOSDataSet.MANTENIMIENTO.Rows.Add(nrow)
Me.MANTENIMIENTOTableAdapter.Update(Me.DATOSDataSet.MANTENIMIENTO)

End If
End If

End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
End
End Sub
End Class

5. CONCLUSIONES

Se comprob y compar la medicin de la Balanza electrnica en Visual Basic


2010, dando resultados aceptables.
El programa realizado en visual Basic 2010, enciende y desconecta el Micro
PLC Logo siemens para cualquier sistema electroneumtico.
Todos los programas registran los valores en una base de datos en Microsoft Access,
esto nos permite ampliar la funcionabilidad del proyecto.
Se cumplieron los objetivos planteados, pero queda la apertura para mejorar
ste proyecto en algn trabajo futuro o con un software de similares
aplicaciones.

6. RECOMENDACIONES

Se recomienda realizar la programacin con algn software de similares


aplicaciones y luego compararlo con Visual Basic 2010.
Debido a que en el programa no se pueden ver la entradas y las salidas porque
no se cuenta con la sentencia que se debe enviar al Micro LC logo para que ste
responda (comando test online), se propone mejorarlo en un trabajo futuro, o
se recomienda aplicarlo con algn software similar.

Anda mungkin juga menyukai