WinCC Unified JavaScript Synchronous/ Asynchronous

Con la llegada de TIA Portal V16 , una de las novedades fue el WinCC Unified, como deberia haber empezado con la instalación y los pasos básicos, he pasado a contestar una pregunta que me habian realizado y así vamos agregando nuevamente contenido a la web.

El problema era la ejecución de un script que no se ejecutaba correctamente.

Como el nuevo lenguaje de Scripting para WinCC Unified es JavaScript, tendremos que aprender algunos conceptos si no estamos familiarizados.

Pues aquí un concepto que tenemos que tener presentes, la diferencia entre la ejecución de scripts de forma Síncrona y Asíncrona.

Con el siguiente ejemplo va a quedar bien claro el concepto, he creado dos botones tal y como se ve en la imagen, y este primero se va a ejecutar de forma síncrona, esto quiere decir, que se va a ir ejecutando como si fuese VBScript, linea a linea y para que se ejecute la siguiente instrucción tiene que acabar la anterior. Vamos a sacar por pantalla un trace de un mensaje para que sea mas fácil de entender.

 

En el siguiente código el script se va a ejecutar de forma asíncrona, esto que quiere decir, es que se va a ir ejecutando línea a línea, pero no es necesario que acabe la primera instrucción para que se ejecute la siguiente.

Si vemos el código, he introducido la función de escribir un archivo de texto, que se que requiere un tiempo en medio de los mismos trace que teniamos anteriormente. Notese que la función tiene la ejecución aync

 

Si estamos en runtime y ejecutamos el código del primero botón , todo se ejecuta normal y en orden, como ya estabamos familiarizados con VBScript.

 

Pero si vemos el siguiente trace de los mensajes, vemos que no esta según el orden que hemos escrito nuestro código.La instrucción de escribir archivo, se inicio cuando le correspondio, pero no se espero a que finalizara para escribir el siguiente trace, se lanzo la orden y se siguio con el código, por ese motivo estan todos los traces consecutivos y por ultimo que se escribio correctamente el archivo de texto.

Con esto ya nos queda claro que funcion tenemos que asignar a la ejecución de nuestros Scripts.

-Orden consecutiva según se ha escrito el código (Síncrono)

-Orden por ejecución de la función que se ejecuta, sin importar el orde (Asíncrono)

 

07-03-2020

Todas las marcas comerciales, softwares, logos son propiedad de sus respectivos titulares.