Usar tablas de verdad para modelar la lógica combinatoria
Las tablas de verdad implementan el diseño de lógica combinatoria en un formato tabular. Puede utilizar tablas de verdad de Stateflow® que permitan modelar la toma de decisiones para detectar y gestionar fallos y cambiar de modo.
Las funciones de tablas de verdad de un gráfico de Stateflow se ejecutan solo cuando se llama a la función de tabla de verdad. Puede definir una función de tabla de verdad en un gráfico, estado o subgráfico de Stateflow. La ubicación de la función determina el conjunto de estados y transiciones que puede llamar a la función.
Si desea llamar a la función desde dentro de un estado o subgráfico y sus subestados, coloque la función de tabla de verdad en ese estado o subgráfico. Esa función anula otras funciones del mismo nombre en los elementos principales y precedentes de ese estado o subgráfico.
Si desea llamar a la función en cualquier lugar de un gráfico, coloque la función de tabla de verdad en el nivel del gráfico.
Si desea llamar a la función desde cualquier gráfico del modelo, coloque la tabla de verdad en el nivel del gráfico y habilite la exportación de funciones en el nivel de gráfico. Para obtener más información, consulte Export Stateflow Functions for Reuse.
Una función de tabla de verdad puede acceder a los datos de gráficos y estados que quedan por encima en la jerarquía de Stateflow.
Como alternativa, para una implementación más directa de la lógica de decisión, puede añadir un bloque Truth Table directamente al modelo de Simulink®. Para implementar la lógica de control, los bloques de Truth Table utilizan MATLAB® como lenguaje de acción.
Diseño de una tabla de verdad
Esta función de tabla de verdad se denomina ttable
. Toma tres argumentos (x
, y
y z
) y devuelve un valor de salida (r
).
Esta función consta de esta disposición de condiciones, decisiones y acciones.
Condición | Decisión 1 | Decisión 2 | Decisión 3 | Decisión 4 |
---|---|---|---|---|
x == 1 | V | F | F | - |
y == 1 | F | V | F | - |
z == 1 | F | F | V | - |
Acción | r = 1 | r = 2 | r = 3 | r = 4 |
Cada una de las condiciones introducidas en la columna Condition debe evaluarse como verdadera (valor distinto de cero) o falsa (valor cero). Los resultados de cada condición se especifican como V (verdadero), F (falso) o - (verdadero o falso). Cada una de las columnas de decisión combina un resultado por condición con un AND lógico en una condición compuesta, que se conoce como decisión.
Se evalúa una tabla de verdad por decisión, comenzando por Decision 1. Decision 4 abarca el resto de decisiones posibles. Si una de las decisiones es verdadera, la tabla realiza la acción asociada y, después, la ejecución de la tabla de verdad se ha completado.
Por ejemplo, si las condiciones x == 1
e y == 1
son falsas, y la condición z == 1
es verdadera, Decision 3 es verdadera y la variable r
se establece igual a 3. El resto de las decisiones no se comprueban y la evaluación de la tabla de verdad ha finalizado. Si las primeras tres decisiones son falsas, la decisión predeterminada es automáticamente verdadera y su acción (r=4
) se ejecuta. Esta tabla enumera pseudocódigo correspondiente a la evaluación de este ejemplo de tabla de verdad.
Pseudocódigo | Descripción |
---|---|
if ((x == 1) & !(y == 1) & !(z == 1)) r = 1; | Si Decision 1 es verdadera, establezca |
elseif (!(x == 1) & (y == 1) & !(z == 1)) r = 2; | Si Decision 2 es verdadera, establezca |
elseif (!(x == 1) & !(y == 1) & (z == 1)) r = 3; | Si Decision 3 es verdadera, establezca |
else r = 4; endif | Si el resto de las decisiones son falsas, la decisión predeterminada es verdadera. Establezca |
Definir una función de tabla de verdad
Para definir una función de tabla de verdad:
En la paleta de objetos, haga clic en el icono de función de tabla de verdad
.
En el área de diseño del gráfico, haga clic en la ubicación de la nueva función de tabla de verdad.
Introduzca la etiqueta de firma de la función.
La etiqueta de firma de la función especifica un nombre para la función y los nombres formales de sus argumentos y valores devueltos. Una etiqueta de firma tiene la siguiente sintaxis:
Puede especificar varios valores devueltos y varios argumentos de entrada. Cada valor devuelto y cada argumento de entrada puede ser un escalar, un vector o una matriz de valores. Para funciones con solo un valor devuelto, omita los corchetes en la etiqueta de firma.[return_val1,return_val2,...] = function_name(arg1,arg2,...)
Puede utilizar el mismo nombre de variable tanto para argumentos como para valores devueltos. Cuando utiliza la misma variable para una entrada y una salida, se crean datos en el lugar. Por ejemplo, una función con esta etiqueta de firma utiliza las variables
y1
ey2
como entradas y como salidas:Si exporta esta función a código C, el código generado trata[y1,y2,y3] = f(y1,u,y2)
y1
ey2
como argumentos en el lugar que se pasan por referencia. El uso de datos en el lugar reduce el número de veces que el código generado copia los datos intermedios, lo que da lugar a un código más eficiente.En el panel Symbols y Model Explorer, los argumentos y los valores devueltos de la firma de función aparecen como elementos de datos que pertenecen a la función. Los argumentos tienen el ámbito
Input
. Los valores devueltos tienen el ámbitoOutput
.Especifique las propiedades de datos para cada argumento y valor devuelto, como se describe en Establecer propiedades de datos. Cuando un argumento y un valor devuelto tienen el mismo nombre, solo se pueden editar las propiedades del argumento. Las propiedades del valor devuelto son de solo lectura.
Para programar la función, abra el editor de tablas de verdad haciendo doble clic en el cuadro de funciones.
En el editor de tablas de verdad, añada condiciones, decisiones y acciones. Para obtener más información, consulte Program a Truth Table.
Cree cualquier elemento de datos adicional requerido por la función. Para obtener más información, consulte Añadir datos en Model Explorer.
La función puede acceder a sus propios datos o a datos que pertenecen a estados principales o al gráfico. Los elementos de datos de la función pueden tener uno de estos ámbitos:
Constant
: los datos constantes mantienen su valor inicial en todas las llamadas a función.Parameter
: los datos de parámetros mantienen su valor inicial en todas las llamadas a función.Local
: los datos locales persisten de una llamada a función a la siguiente. Válido solo para tablas de verdad que utilizan C como lenguaje de acción.Temporary
: los datos temporales se inicializan al comienzo de cada llamada a función. Válido solo para tablas de verdad que utilizan C como lenguaje de acción.
En funciones de tablas de verdad que utilizan C como lenguaje de acción, defina los datos locales cuando desee que los valores de datos persistan en las llamadas a función durante toda la simulación. Defina datos temporales cuando desee inicializar los valores de datos al comienzo de cada llamada a función. Por ejemplo, puede definir un contador con ámbito
Local
si desea realizar un seguimiento del número de veces que llama a la función. En cambio, puede designar un contador de bucle para tener el ámbitoTemporary
si no necesita que el valor del contador persista cuando se complete la función.En las funciones de tablas de verdad que utilizan MATLAB como lenguaje de acción, no es necesario definir datos de función locales o temporales. En su lugar, en estas funciones se pueden utilizar variables no definidas para guardar valores a los que solo se puede acceder durante el resto de la llamada a función. Para guardar valores que persisten en todas las llamadas a función, utilice datos locales en el nivel del gráfico.
Sugerencia
Puede inicializar los datos locales y temporales en la función desde el área de trabajo de MATLAB. Para obtener más información, consulte Inicializar datos desde el área de trabajo base de MATLAB.
Llamar a funciones de tablas de verdad en estados y transiciones
Puede llamar a las funciones de tablas de verdad desde las acciones de cualquier estado o transición o desde otras funciones. Si exporta una función de tabla de verdad, puede llamarla desde cualquier gráfico del modelo. Para obtener más información sobre cómo exportar funciones, consulte Export Stateflow Functions for Reuse.
Para llamar a una función de tabla de verdad, utilice la firma de función e incluya un valor de argumento real para cada argumento formal en la firma de función.
[return_val1,return_val2,...] = function_name(arg1,arg2,...)
Si los tipos de datos del argumento real y formal difieren, la función convierte el argumento real al tipo del argumento formal.
Especificar propiedades de funciones de tablas de verdad
Las propiedades que se enumeran a continuación especifican cómo interactúa una función de tabla de verdad con los demás componentes de un gráfico de Stateflow. Puede modificar estas propiedades en Property Inspector, Model Explorer o el cuadro de diálogo de propiedades Truth Table.
Para utilizar Property Inspector:
En la pestaña Modeling, en Design Data, seleccione Property Inspector.
En el editor de Stateflow, seleccione la función de tabla de verdad.
En Property Inspector, edite las propiedades de la función de tabla de verdad.
Para utilizar Model Explorer:
En la pestaña Modeling, en Design Data, seleccione Model Explorer.
En el panel Model Hierarchy, seleccione la función de tabla de verdad.
En el panel Dialog, edite las propiedades de la función de tabla de verdad.
Para utilizar el cuadro de diálogo de propiedades de la tabla de verdad:
En el editor de Stateflow, haga clic con el botón secundario sobre la función de tabla de verdad.
Seleccione Properties.
En el cuadro de diálogo de propiedades, edite las propiedades de la función de tabla de verdad.
También puede modificar estas propiedades de forma programática con objetos Stateflow.TruthTable
. Para obtener más información sobre la interfaz programática de Stateflow, consulte Visión general de la API de Stateflow.
Nombre
Nombre de función. Haga clic en el enlace del nombre de la función para colocar la función en primer plano de su gráfico nativo.
Opción de inserción directa de funciones
Controla la inserción directa de una función en el código generado:
Auto
: determina si se realiza la inserción directa de la función basándose en un cálculo interno.Inline
: inserta la función directamente si no la exporta a otros gráficos y no forma parte de una recursión. (Una recursión existe si la función se llama a sí misma directa o indirectamente a través de otra llamada a función).Function
: no inserta la función directamente.
Esta propiedad no está disponible en Property Inspector.
Etiqueta
Etiqueta de firma para la función. La etiqueta de firma de la función especifica un nombre para la función y los nombres formales de sus argumentos y valores devueltos. Esta propiedad no está disponible en Property Inspector.
Subespecificación
Controla el grado de diagnóstico para la subespecificación en la función de tabla de verdad. Para obtener más información, consulte Correct Overspecified and Underspecified Truth Tables.
Sobreespecificación
Controla el grado de diagnóstico para la sobreespecificación en la función de tabla de verdad. Para obtener más información, consulte Correct Overspecified and Underspecified Truth Tables.
Lenguaje de acción
Controla el lenguaje de acción para la función de tabla de verdad de Stateflow. Elija entre MATLAB o C. Esta propiedad solo está disponible en los gráficos que utilizan C como lenguaje de acción. Para obtener más información, consulte Diferencias entre C y MATLAB como sintaxis de lenguaje de acción.
Descripción
Descripción de la función de tabla de verdad.
Enlace del documento
Enlace a la documentación online de la función de tabla de verdad. Puede introducir una dirección URL o un comando de MATLAB que muestre la documentación como un archivo HTML o como texto en la ventana de comandos de MATLAB. Cuando hace clic en el hipervínculo Document link, Stateflow evalúa el enlace y muestra la documentación.
Consulte también
Bloques
Objetos
Herramientas
- Model Explorer (Simulink)