Hoy te voy a demostrar que registrar valores de un PLC se puede hacer en un tiempo record si tienes las herramientas adecuadas.
¿Se puede registrar valores de un PLC en 5 minutos?
Bueno, para empezar, dependerá un poco lo que se quiera registrar.
Lógicamente si se quiere hacer una cosa bestialmente grande y complicada, seguramente no.
Pero si tienes las herramientas adecuadas, y estamos hablando de registrar digamos media docena de valores, a tiempo fijo, se puede sin problemas.
¿Empezar desde cero?
No, lógicamente si cada vez que tienes que hacer un registro, tienes que empezar de cero, no lo vas a poder en 5 minutos.
En general, yo lo suelo hacer de esta manera cuando me toca hacerlo.
Pero no es la forma más eficiente de trabajar.
Por eso he desarrollado una forma de realizar el registro que sea sencillo de implementar cada vez que lo necesite.
Lo que quiero que veas es que se puede darle un poco al rosco y hacer tus propios programas que te cuesten un poco (o mucho) el primer día, pero que para el futuro, sea una gran inversión.
Este método que te presento, lo he incluido dentro de la plantilla del curso de Snap7 y VB.Net.
Lógicamente, tu puedes crear tus propias creaciones.
O comprar software de Siemens, u otros fabricantes que te ayuden. Aunque sus licencias cuestan varios miles de euros.
¿Y cómo hacemos para registrar valores de un PLC?
En mi caso, como la plantilla tienen controles que leen/escriben en el PLC, puedo usar esta característica para crear una colección de controles y pasárselo a la función para que los trate.
Es decir, configuro "la lista de la compra" de los controles que quiero registrar y luego solamente hago la llamada.
Tú, tendrás que realizar algo parecido con tus creaciones.
El video.
Ahora, quiero enseñarte a lo que me refiero, porque vas a ver que es realmente sencillo si lo piensas, y creas tu forma de trabajar.
La que te muestro, es la que yo he creado para el curso de Snap 7, pero lógicamente no es la única, ni tiene por qué ser la mejor.
Solamente es una forma de trabajar, que funciona razonablemente bien.
El código.
Te adjunto el código del bloque de escritura que te he presentado.
Por si lo puedes reutilizar para tus creaciones, o adaptar la idea de alguna forma.
#Region "EScribir archivos "
''' <summary>
''' Escritura en un log de valores de controles
''' </summary>
''' <param name="ColeccionControles">Colección que contendrá los controles cuyos valores se quieren registrar</param>
''' <param name="Archivo">Path completo del archivo de registro</param>
''' <param name="Separador">Caracter separador entre valores (por ejemplo ";" o ",")</param>
''' <param name="Hora">True: Registrar la hora, False: No registrar hora</param>
''' <param name="Fecha">True: Registrar la fecha, False: No registrar la fecha</param>
Public Sub Escribir_Log(ByVal ColeccionControles As Collection, ByVal Archivo As String, ByVal Separador As String, ByVal Hora As Boolean, Fecha As Boolean)
Dim Linea As String = ""
Dim Contador As Integer = 0
Dim file As System.IO.StreamWriter
If Not IO.File.Exists(Archivo) Then
If Fecha Then
Linea = "Fecha"
Contador = Contador + 1
End If
If Hora Then
If Contador > 0 Then
Linea = Linea & " " & Separador & " " & "Hora"
Contador = Contador + 1
Else
Linea = "Hora"
Contador = Contador + 1
End If
End If
For i = 1 To ColeccionControles.Count
If Contador > 0 Then
Linea = Linea & " " & Separador & " "
End If
Linea = Linea & ColeccionControles(i).Name
Contador = Contador + 1
Next
Linea = Linea & vbCrLf
End If
Contador = 0
If Fecha Then
Linea = Linea & Now.ToShortDateString
Contador = Contador + 1
End If
If Hora Then
If Contador > 0 Then
Linea = Linea & " " & Separador & " " & Now.TimeOfDay.ToString
Contador = Contador + 1
Else
Linea = Linea & Now.TimeOfDay.ToString
Contador = Contador + 1
End If
End If
For i = 1 To ColeccionControles.Count
If Contador > 0 Then
Linea = Linea & " " & Separador & " "
End If
Linea = Linea & ColeccionControles(i).PLC_Valor
Contador = Contador + 1
Next
Try
file = My.Computer.FileSystem.OpenTextFileWriter(Archivo, True)
file.WriteLine(Linea)
file.Close()
Catch ex As Exception
End Try
End Sub
#End Region
¿Qué te ha parecido?
Espero que te haya abierto la mente y dado ideas para tus proyectos.
Como ves, se puede hacer en un tiempo mas que razonable si tienes una herramienta ya creada.
Evidentemente me ha llevado muchas horas desarrollar el motor sobre lo que se asienta todo.
Y a ti también te va a costar hacer algo así, o parecido.
Pero créeme que merece a pena una vez lo tienes hecho.
Ni que decir tiene, que si no quieres complicarte la vida, siempre tienes el curso de Snap7 con VB.Net donde tendrás a tu disposición la plantilla actualizada con el motor de lectura/escritura que he creado apoyándome en Snap7.
Poco a poco voy metiendo nuevos controles, y además junto con un alumno del curso que me está haciendo de beta tester, estamos de forma continua realizando pruebas y mejorando la plantilla para que sea más eficiente y robusta.
Recuerda que puedes apuntarte en Guorker.com donde por una cuota mensual, tendrás tarifa plana en todos los cursos disponibles en la plataforma.

Comentarios (15)