FAQs Técnicas

Realizar una pregunta

Unity: uso de paréntesis en programación ST

Se indican dos formas de configurar una función AND que aparentemente deben ser válidas, pero que una de ellas no lo es; ¿cuál es la razón?
VARIABLE1:=AND (%m112); Esta línea UNITY la acepta sin error de compilación.
VARIABLE1:=AND %m112; Esta línea UNITY no la acepta y aparece un error de compilación.

Lo que se indica es cierto, pero no es un error de Unity. Se adjunta el manual de referencia de Unity v4.1 en el que se documenta el funcionamiento de las llamadas formales e informales a bloques de función dentro de la programación en leguaje de texto estructurado ST (a partir de la p.572: llamada de funciones elementales; y más concretaamente en p.574: llamadas formales e informales); en éste apartado se detalla lo siguiente:

"Con este tipo de llamada (llamada con nombres de parámetros formales), la llamada está compuesta por el parámetro actual de la salida seguido de la instrucción de asignación :=, el nombre de la función y una lista entre paréntesis con las asignaciones de valores (parámetros actuales) a los parámetros formales".

El problema de hacer la llamada sin paréntesis es que la función que se pretende ejecutar (en el ejemplo que indicas, el bloque AND) no reconoce los parámetros de entrada a la misma. El hecho de que entre paréntesis no se indiquen todos los valores de entrada de una función no es un problema, está contemplado y también está indicado en la documentación:

"En principio, no es necesario asignar un valor a todos los parámetros formales. Si no se asigna un valor a un parámetro formal, durante la ejecución del bloque de función se utilizará el valor inicial. Si no se ha definido ningún valor inicial, se aplicará el valor predeterminado (0)".

¿Ha sido útil?
¿Qué podemos hacer para mejorar la información?