Saltar a contenido

StateChart UML

UML State Chart:

  • Un diagrama de estado es una máquina que cambia de un estado a otro en tiempo de ejecución.
  • Los estados están unidos por transiciones, cada una de las cuales tiene una condición de guardia. Se pueden llamar acciones o métodos tanto en estados como en transiciones. Cuando una condición de guardia obtiene el valor TRUE(evento), se activará la transición. Esto ejecuta las acciones o métodos que pertenecen a la transición y luego cambia al siguiente estado. Las condiciones de guardia son simplemente variables booleanas que reflejan eventos o son una expresión. Los eventos son entradas del usuario de una visualización/interfaz de usuario, E/S, eventos de tiempo o eventos del sistema. Otro evento que a menudo se requiere es el evento de finalización que ocurre cuando se completan las acciones o métodos de un estado.

  • Inserta todos los estados requeridos en el editor de diagrama de estado e implementa el control de flujo. Para hacer esto, codifique las condiciones de protección para las transiciones especificando una variable booleana o una expresión ST. Implementas la funcionalidad real del diagrama de estado en las acciones y métodos que se llaman en los estados o durante las transiciones.

Por tanto, los métodos y acciones asignados a un diagrama de estado contienen los algoritmos. Así es como se implementa el concepto de clase orientada a objetos de forma convencional.

Durante la fase de diseño del software, ya puede utilizar el editor de gráficos de estado como herramienta de diseño. Por ejemplo, puede crear un archivo de gráficos (BMP) a partir de un diagrama de estado para agregarlo a una especificación o un documento de diseño.

  • Identifica todos los estados que tendrá la máquina.

  • Identificar las posibles transiciones de estado de un estado a otro.

  • Identificar los eventos que ocurren durante el tiempo de ejecución de la máquina y que desencadenan una transición de estado. Agrupa los eventos relevantes cronológicamente.

  • Identifique las ENTRY acciones o métodos DO de, y EXIT para llamar durante un estado.

  • Identifique acciones o métodos para llamar durante las transiciones.

  • Definir el comportamiento en caso de error.


Diagrama de Estado:

  • Un diagrama de estado es un formalismo gráfico con el que se puede programar gráficamente una máquina de estados finitos. Una máquina de estados es un sistema que se encuentra continuamente en uno de un número finito de estados en tiempo de ejecución. Las acciones se pueden ejecutar en cada estado. Cuando ocurre un evento, se produce una transición al siguiente estado. También se pueden realizar acciones durante la transición.

  • En CODESYS, TwinCAT un diagrama de estado es una POU que se crea en el lenguaje de implementación de Statechart. Este tipo de POU se identifica por el_uml_icon_statechart.png símbolo en la vista POU o en la vista Dispositivos. Puede crear programas, bloques de funciones, funciones, métodos, acciones o propiedades como diagramas de estado. El editor proporciona elementos para estados, pseudoestados y transiciones.

  • Tanto los estados como las transiciones pueden llamar métodos o acciones. Los pseudoestados son elementos de control que se utilizan para controlar el proceso, pero no invocan ninguna acción ni método.


Imagen UML TwinCAT StateChart Simbols:

UML TwinCAT StateChart Simbols

Imagen UML Codesys StateChart Simbols:

UML Codesys StateChart Simbols

Imagen UML Codesys StateChart CoffeMachine:

UML Codesys Statechart CoffeMachine

Imagen UML TwinCAT StateChart:

UML TwinCAT Statechart


  • En TwinCAT para utilizar UML State Chart, se podra utilizar con el TF1910, el cual tendra un coste de licencia según el Performance Level (PL)
  • En Codesys para utilizar UML State Chart, se podra utilizar con el ide Codesys Professional Developer Edition, según el informe de caracteristicas realizado en otoño de 2023 (pongo link mas abajo) UML State Chart sera discontinuado en el Q1 2024 (minuto del video 35:09), desde mi punto de vista es un gran error ya que no se deben de perder las diferentes posibilidades de programación si no todo lo contrario se deben de mantener y añadir nuevos lenguajes y formas de programar para que sea el usuario el que decida que utilizar...