7
10/2/2015 VBScript en WinCC V.7 http://plchmiscadas.com/112.php 1/7 VBScript en WinCC V.7 Un ejemplo de una receta producida por el programa "RECIPES" seria la siguiente imagen, ahora bien, si analizamos podemos observar que la receta tiene un código y su nombre en la primera linea, a continuación, los ingredientes referenciados con su código seguido del peso. La siguiente práctica se trata de sacarle rendimiento a VB Script en WinCC V.7 para darle solución a los nuevos requerimientos para la modificación de un sistema de recetas ya implementado. La modificación trata de lo siguiente: HOME OPC OTROS ... SCADA HMI PLC

VBScript en WinCC V

Embed Size (px)

DESCRIPTION

55

Citation preview

Page 1: VBScript en WinCC V

10/2/2015 VBScript en WinCC V.7

http://plc­hmi­scadas.com/112.php 1/7

VBScript en WinCC V.7

Un ejemplo de una receta producida por el programa "RECIPES" seria la siguiente imagen, ahora bien, si analizamospodemos observar que la receta tiene un código y su nombre en la primera linea, a continuación, los ingredientesreferenciados con su código seguido del peso.

La siguiente práctica se trata de sacarle rendimiento a VB Script en WinCC V.7 para darle solución a los nuevos requerimientospara la modificación de un sistema de recetas ya implementado.

La modificación trata de lo siguiente:

HOME OPC OTROS ...SCADAHMIPLC

Page 2: VBScript en WinCC V

10/2/2015 VBScript en WinCC V.7

http://plc­hmi­scadas.com/112.php 2/7

Según las indicaciones nuestro programa tiene que ser capaz de diferenciar entre ingredientes/componentes mayores ymenores, su diferencia es la siguiente, los mayores son los que se introducen directamente a nuestro sistema Scada y nopermite posible manipulación de datos, son los que se van a introducir su peso como setPoint en las diferentes tolvas,actualmente hay 9 tolvas para ingredientes mayores.

Los ingredientes menores son los que se van a dosificar manualmente, con lo cual de los 20 ingredientes que consta nuestrareceta tenemos que diferenciarlos, como lo vamos a realizar. He creado una base de datos en el Sistema Gestor de Bases deDatos SQL Server 2005, prerequisito para la instalación de WinCC, con lo cual vamos a hacer uso de ella, hay una tabladedicada a los ingredientes y que consta de los siguientes campos

En esta tabla será un requisito tener todos los ingredientes, ya con en el campo IngredienteTolva, haremos la diferencia entreingrediente mayor o menor.

Volviendo al archivo *.txt excepto la primera y última linea, siempre se sigue el mismo patrón, y lo que mas adelante vamosha hacer es extraer de la primera linea el código de la receta y su nombre, de las demás, extraeremos el código delingrediente y el peso, de cada ingrediente tendremos que hacer una consulta a la base de datos para saber si está registradoy si es así, saber si es un ingrediente considerado de los Mayores o menores.

A su vez como tenemos 20 Ingredientes, tendremos que ordenarlos, los nueve primeros serán los que van directamente a latolva y los restantes son los Menores, pero estó será en una segunda parte para no extenderse demasiado en está.

Vamos a empezar a ver la configuración y programación que hemos realizado, lo primero que vamos a ver son las variablesque hemos creado, consiste en dos partes, he creado una nueva estructura para tener los datos de una tolva, como es elcódigo de la tolva, el peso del producto o el porcentaje, a su vez unas variables internas para dar de alta un nuevoingrediente.

Page 3: VBScript en WinCC V

10/2/2015 VBScript en WinCC V.7

http://plc­hmi­scadas.com/112.php 3/7

Retomanto los requisitos, la receta se pasara al PC donde esta el WinCC a través de un dispositivo extraible, esto nos obliga harealizar una primera función para obtener la ruta donde esta el archivo y el nombre del mismo, debo decir, que esta parterealizarla en VB Script me ha costado buscar bastante información y he encontrado la solución en el siguiente blog

El programa esta estructurado de la siguiente manera, todo lo que es posible realizarlo en funciones o prodecimientos se haraasí y luego reutilizaremos estas funciones, procedimientos con sus respectivas llamadas, aquí la llamada a la fúncion paraseleccionar la ruta del archivo.

Y una vez seleccionado el archivo, tenemos guardada la ruta en la variable ruta, siguiendo con el código, una primera parte escrear una instancia de un Objeto del tipo FileSystemObject y abrir nuestro archivo para lectura, una vez abierto lo que vamosha hacer es un bucle Do Until objText.File.AtEndOfStream para recorrerlo.

Cada linea que leemos, la guardamos en una variable, a su vez el contenido de la linea lo vamos a guardar en un array(arrList) haciendo uso de la función Split , cada "," que encontremos en nuestra linea será el delimitador para cada elementodel array, el ejemplo de la primera linea seria el siguiente:

strNextLine =" ""F"",""005062"","" "",""RECETA_TEST"",""082611"""

arrList(0)=" ""F"" ; arrList(1)=""005062"" ; arrList(2)="" "" ; arrList(3)=""RECETA_TEST"" ; arrList(4)=""082611"""

El condicional If firtline = 0 lo uso solo para obtener los datos de esta primera linea y en el resto del bucle aquí no vuelvo aentrar, ya que cambio el estado de la variable firtline a 1, esto quiere decir que para el resto de lineas entraremos en el else

Page 4: VBScript en WinCC V

10/2/2015 VBScript en WinCC V.7

http://plc­hmi­scadas.com/112.php 4/7

Una vez que hemos entrado en el else, un ejemplo de la lectura de una linea seria el siguiente:

strNextLine =" ""I"",""000038"",""04529.500"""

arrList(0)=" ""I"" ; arrList(1)=""000038"" ; arrList(2)=""04529.500""" ;

Aqui vamos a hacer un bucle For para recorrer el array empezando por el indice 1 que este seria el codigo de nuestroingrediente, como el arrList solo tiene 2 elementos contando el 0 y hemos empezado por el 1 solo nos queda otro elemento,de hay que con el siguiente condicional if i= 1 leeremos el codigo y con su else leeremos el peso/proporcion.

Aquí tenemos la llamada a otra función SearchIngredientes(xxx) , esta función lo que va ha realizar es comprobar si elcodigo esta registrado en la base de datos, su resultado lo obtendremos en la variable result que utilizaremosposteriormente.

Aqui nuestra función SearchIngredientes pasandole como argumentos el codigo a buscar, que es lo que puede pasar? queesté registrado o no, pero sino está vamos a dar la posibilidad de ingresarlo si el operario selecciona que si.

Page 5: VBScript en WinCC V

10/2/2015 VBScript en WinCC V.7

http://plc­hmi­scadas.com/112.php 5/7

Ahora seguimos con el código principal, y obtenemos el resultado de la función en la variable result, y entramos en otrocondicional para cubrir todas la posibilidades que pueden ser:

Lo vamos a registrar result = 6 hacemos visible una ventana de imagen donde esta un pequeño formulario y todos losvalores que hemos guardado en las variable los volvemos a poner a 0 ya que no se puede cargar la receta hasta que esteregistrado el ingrediente y salimos de la función

si result = 7 el usuario no quiere registrar el ingrediente y volvemos a poner todos los valores a 0 y salimos de la función, porúltimo si nuestro ingrediente si que está, entramos en el else, y en esté tenemos que saber si el ingrediente es de losconsiderados Mayores o Menores, para ir a la tolva o no, tenemos que hacer uso de la función OrderIngredients, el cual haráotra consulta a la base de datos para saber que tipo de ingrediente es, una vez que obtenemos su resultado, si es de losMayores lo escribimos en la tolva correspondiente y a su vez en un array donde tenemos que guardar todos los ingredientespor orden para posteriormente imprimirlos, si es Menor, solamente se guarda en el array para imprimirlo.

La función OrderIngredients es la siguiente, y como resultado nos dara el "Verdadero" o "Falso"

Page 6: VBScript en WinCC V

10/2/2015 VBScript en WinCC V.7

http://plc­hmi­scadas.com/112.php 6/7

Con todo esto hasta el momento hemos finalizado en el primer condicional if i= 1, hemos estado analizando el Codigodel Ingrediente, ahora pasamos al else que equivale al tercer y último elemento del arrList y es el Peso

Cuando confirmamos querer dar de alta el nuevo ingrediente, la siguiente imagen seria el formulario, donde el campo deentrada/salida del codigo es solo de salida y obtenemos el codigo de la función principal. Un campo de entrada paraintroducir el nombre del ingrediente y un radiobutton para saber como procesarlo, si es considerado de los Mayores, seráen automatico, de lo contrario en manual.

En el boton Agregar, tenemos el siguiente código:

Page 7: VBScript en WinCC V

10/2/2015 VBScript en WinCC V.7

http://plc­hmi­scadas.com/112.php 7/7

0 Twittear 17159Me gusta

Ahora vamos a ver en funcionamiento esta primera parte en un pequeño video, solo nos faltaria guardar esta receta en labase de datos para su posterior uso y poder imprimirla, pero eso lo haremos en la siguiente.

13 de Mayo del 2013

Si te ha gustado o la información te ha sido útil, compartelo ...