Consideraciones de diseño para diagrama de Moore
Las máquinas de Moore son máquinas de estados finitos en las que la salida se modifica en los flancos de reloj. En los diagramas de Moore, la salida es una función solo del estado actual. En cada paso de tiempo, un diagrama de Moore se activa, calcula su salida y evalúa su entrada para reconfigurarse para el siguiente paso de tiempo. Por ejemplo, después de evaluar su entrada, el diagrama puede pasar a una nueva configuración de estados activos. El diagrama calcula su salida antes de evaluar su entrada y actualizar su estado.
Semántica de Moore
Para garantizar que la salida sea una función solo del estado actual, las máquinas de estados de Moore aplican esta semántica:
Las salidas no dependen de las entradas.
Las salidas no dependen de las salidas previas.
Las salidas no dependen de la lógica temporal.
Directrices de diseño para diagramas de Moore
Para cumplir con la definición de Moore de una máquina de estados, asegúrese de que cada vez que un diagrama de Moore se active, calcule salidas del conjunto actual de estados activos sin tener en cuenta las entradas.
Restricciones de las acciones de estado
Para garantizar que las salidas dependan únicamente del estado actual, puede calcular salidas en acciones de estado, sujeto a las siguientes restricciones:
Combinar acciones. En los diagramas de Moore, puede incluir solo una acción por estado. La acción puede consistir en múltiples instrucciones de comando. Stateflow® evalúa los estados de los diagramas de Moore desde el nivel superior hacia abajo. Los estados activos de los diagramas de Moore ejecutan la acción de estado antes de evaluar las transiciones. Por lo tanto, las salidas se calculan en cada paso de tiempo, independientemente de si una transición externa es válida o no.
No etiquetar acciones de estado. No etiquete acciones de estado en diagramas de Moore con palabras clave, como
entry,duringoexit. De forma predeterminada, los diagramas de Moore ejecutan las acciones de los estados activos antes de evaluar las entradas y actualizar el estado.
Restricciones de las acciones de transición
Las transiciones de los diagramas de Moore pueden contener acciones de condición y transición si estas acciones no introducen una dependencia entre los valores de salida y de entrada. Por ejemplo, en este diagrama, cada transición prueba la entrada u en una condición y modifica la salida y en una acción de condición. Dado que el valor de salida depende del valor de la entrada, esta construcción infringe la semántica de Moore y genera un error.

No utilizar las entradas para calcular las salidas
En los diagramas de Moore, las salidas no pueden depender de las entradas. Utilizar una entrada para contribuir directa o indirectamente al cálculo de una salida genera un error.
No utilizar la memoria del almacén de datos
No puede utilizar la memoria del almacén de datos (DSM) en los diagramas de Moore porque los objetos externos con respecto al diagrama pueden modificar los objetos DSM. Un gráfico de Stateflow utiliza la memoria del almacén de datos para compartir datos con un modelo de Simulink®. La memoria del almacén de datos actúa como datos globales. En la jerarquía de Simulink que contiene el diagrama, otros bloques y modelos pueden modificar la DSM. Los diagramas de Moore no deben acceder a datos que puedan cambiar inesperadamente.
No utilizar coder.extrinsic para llamar a funciones extrínsecas
No puede llamar a funciones extrínsecas con coder.extrinsic en los diagramas de Moore porque no es posible garantizar que las salidas de las funciones extrínsecas dependan solo del estado actual. Llamar a una función extrínseca con coder.extrinsic en un diagrama de Moore genera un error.
No llamar a funciones de código personalizado
No puede llamar a funciones de código personalizado en los diagramas de Moore porque no es posible garantizar que las salidas de las funciones de código personalizado dependan solo del estado actual. Llamar a una función de código personalizado en un diagrama de Moore genera un error.
No utilizar las funciones de Simulink
No puede utilizar las funciones de Simulink en los diagramas de Moore. Esta restricción evita infracciones de la semántica de Moore durante la ejecución del diagrama.
No exportar funciones
No puede exportar funciones en un diagrama de Moore.
No deshabilitar la inserción directa
La semántica de los diagramas de Moore requiere inserción directa.
No habilitar la semántica de superpaso
No puede utilizar la semántica de superpaso en un diagrama de Moore.
No utilizar mensajes
No puede utilizar mensajes en un diagrama de Moore.
Restringir el uso de eventos
Limite el uso de eventos en los diagramas de Moore:
Usos válidos:
Utilice solo un evento de entrada para activar el diagrama.
Utilice la lógica temporal basada en eventos para restringir transiciones.
El cambio del valor de una condición de lógica temporal se comporta como un evento que el diagrama de Moore planifica internamente. En cada paso de tiempo, el número de tics antes de que el evento temporal se ejecute depende solo del estado del diagrama. Para obtener más información, consulte Operadores de lógica temporal.
Nota
En los diagramas de Moore, el evento base para los operadores de lógica temporal debe ser un evento predefinido como
tick(consulte Eventos implícitos basados en datos y estados).
Usos no válidos:
No puede transmitir un evento de ningún tipo.
No puede utilizar eventos locales para restringir transiciones. Los eventos locales infringen la semántica de Moore porque no son determinísticas y pueden producirse mientras el diagrama calcula sus salidas.
No puede utilizar eventos implícitos como
chg(data_name),en(state_name)oex(state_name).
No utilizar los diagramas de Moore para modelar sistemas en tiempo continuo
En diagramas de Moore, no puede establecer el método de actualización en Continuous. Para modelar sistemas con tiempo continuo en Stateflow, utilice diagramas de Mealy o Clásicos.