Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Crear y ejecutar un gráfico deStateflow

Un gráfico de Stateflow®es una representación gráfica de una máquina de estados finito formada por estados, transiciones y datos. Puede crear un gráfico de Stateflow para definir cómo un algoritmo de MATLAB®o un modelo de Simulink®reacciona a las señales de entrada externas, los eventos y las condiciones basadas en el tiempo. Para obtener más información, consulteModelizar máquinas de estados finitos

Por ejemplo, este gráfico de Stateflow presenta la lógica que subyace a un rectificador de media onda. El gráfico contiene dos estados con las etiquetasOnyOff。En el estadoOn, la señal de salida del gráficoyes igual a la entradax。En el estadoOff, la señal de salida se establece en cero. Cuando la señal de entrada cruza cierto umbralt0, el gráfico cambia entre estos estados. Las acciones de cada estado actualizan el valor deyen cada unidad de tiempo de la simulación.

Stateflow chart with two states.

Este ejemplo muestra cómo crear este gráfico de Stateflow para la simulación en Simulink y la ejecución en MATLAB.

Crear el gráfico deStateflow

Abrir el editor deStateflow

El编辑de Stateflow es un entorno grafico对位diseñar diagramas de transición de estados, diagramas de flujo, tablas de transición de estados y tablas de verdad. Antes de abrir editor de Stateflow, escoja el modo de ejecución del gráfico que más se ajuste a sus necesidades.

  • Para modelizar lógica condicional, basada en eventos y con marca de tiempo para algoritmos periódicos o de tiempo continuo de Simulink, utilice la funciónsfnewpara crear un gráfico de Stateflow que pueda simular como un bloque en un modelo de Simulink. En la línea de comandos de MATLAB, introduzca:

    sfnewrectify% create chart for simulation in a Simulink model

    Simulink crea un modelo llamadorectifyque contiene un bloqueChartde Stateflow vacío. Para abrir el editor de Stateflow, haga doble clic en el bloque del gráfico.

  • Para diseñar lógica temporal y máquinas de estados reutilizables para aplicaciones de MATLAB, utilice la funcióneditpara crear un gráfico de Stateflow independiente que se pueda ejecutar como un objeto de MATLAB. En la línea de comandos de MATLAB, introduzca:

    editrectify.sfx% create chart for execution as a MATLAB object

    Si el archivorectify.sfxno existe, el editor de Stateflow crea un gráfico vacío con el nombrerectify

Los componentes principales del Editor de Stateflow son el área de trabajo del gráfico, la paleta de objetos y el panelSymbols

  • El área de trabajo del gráfico es un área de representación donde se crea un gráfico combinando estados, transiciones y otros elementos gráficos.

  • En la parte izquierda del área de trabajo, la paleta de objetos muestra un conjunto de herramientas para añadir elementos gráficos al gráfico.

  • En la parte derecha del área de trabajo, en el panelSymbols, se añaden datos, eventos y mensajes nuevos al gráfico y se resuelve cualquier símbolo sin definir o sin usar.

Default view of the Stateflow Editor.

Sugerencia

Después de crear el gráfico de Stateflow, puede copiar su contenido en otro gráfico con un modo de ejecución diferente. Por ejemplo, puede crear un gráfico para que se ejecute en MATLAB y copiar su contenido en un gráfico para su simulación en Simulink.

Añadir estados y transiciones

  1. Desde la paleta de objetos, haga clic en el iconoStatey mueva el puntero al área de trabajo del gráfico. Aparece un estado con su transición predeterminada. Para colocar el estado, haga clic en un punto del área de trabajo. En el comando de texto, introduzca el nombre de estadoOny la acción de estadoy = x

    Chart with one state, On.

  2. Añada otro estado. Haga clic con el botón secundario y arrastre el estadoOn。Las indicaciones gráficas azules ayudan a alinear los estados horizontal o verticalmente. El nombre del estado nuevo cambia aOff。Haga doble clic en el estado y cambie la acción de estado ay = 0

    Chart with two states, On and Off.

  3. Vuelva a alinear los dos estados y deténgase en el espacio entre los dos estados. Las indicaciones de transición azules indican diferentes formas para conectar los estados. Para añadir transiciones, haga clic en la indicación adecuada.

    De forma alternativa, para representar una transición, haga clic en el flanco de un estado y arrástrelo al flanco del otro estado.

    Chart with the two states joined by transitions.

  4. Haga doble clic en cada transición y escriba la condición de transición adecuadaxox>=t0。Las condiciones aparecen entre corchetes.

    Chart with transition conditions.

  5. Depure el gráfico:

    • Para mejorar la claridad, mueva cada etiqueta de transición a una ubicación adecuada encima o debajo de la transición correspondiente.

    • Para alinear y cambiar el tamaño de los elementos gráficos del gráfico, en la pestañaFormathaga clic enAuto Arrangeo presioneCtrl+Shift+A

    • Para cambiar el tamaño del gráfico de modo que quepa en el área de trabajo, presione la barra espaciadora o haga clic en el iconoFit To View

Resolver símbolos no definidos

Antes de poder ejecutar el gráfico, debe definir cada símbolo que se usa en el gráfico y especificar su alcance (por ejemplo, datos de entrada, datos de salida o datos locales). En el panel deSymbols, los símbolos no definidos están marcados con un distintivo de error rojo。La columnaTypemuestra el alcance sugerido de cada símbolo no definido basándose en su uso en el gráfico.

  1. Abra el panelSymbols

    • Si está creando un gráfico en un modelo de Simulink, en la pestañaModeling, enDesign Data, seleccioneSymbols Pane

    • Si está creando un gráfico independiente para ejecutarlo en MATLAB, en la pestañaState Chart, seleccioneAdd Data>Symbols Pane

  2. En el panelSymbols, haga clic enResolve Undefined Symbols

    • Si está creando un gráfico en un modelo de Simulink, el editor de Stateflow resuelve los símbolosxyt0como datos de entradaeycomo datos de salida

    • Si está creando un gráfico independiente para ejecutarlo en MATLAB, el editor de Stateflow resuelvet0,xeycomo datos locales

    Before and after views of the Symbols pane resolving the undefined symbols t0, x, and y.

  3. Dado que el umbralt0no cambia durante la simulación, cambie su alcance a datos constantes. En la columnaType, haga clic en el icono de tipo de datos situado junto at0y seleccioneConstant Data

  4. Establezca el valor del umbral ent0。En la columnaValue, haga clic en la entrada vacía situada junto at0e introduzca un valor de 0.

  5. Guarde el gráfico de Stateflow.

Ahora el gráfico está listo para la simulación en Simulink o para su ejecución en MATLAB.

Simular el gráfico como un bloque de金宝app

Para simular el gráfico dentro de un modelo de Simulink, conecte el bloque del gráfico con otros bloques del modelo a través de puertos de entrada y de salida. Si desea ejecutar el gráfico desde la ventana de comandos de MATLAB, consulteEjecutar el gráfico como un objeto de MATLAB

  1. Para volver al editor de Simulink, en la barra del explorador en la parte superior del área de trabajo, haga clic en el nombre del modelo de Simulink:rectify。Si la barra del explorador no está visible, haga clic en el iconoHide/Show Explorer Baren la parte superior de la paleta de objetos.

  2. Añada una fuente al modelo:

    • Desde la biblioteca Sources de Simulink, añada un bloqueSine Wave(Simulink)

    • Haga doble clic en el bloqueSine Wavey establezcaSample timeen 0.2.

    • Conecte la salida del bloqueSine Wavecon la entrada del gráfico de Stateflow.

    • Etiquete la señal comox

  3. Añada un sumidero al modelo:

    • Desde la biblioteca Sinks de Simulink, añada un bloqueScope(Simulink)con dos puertos de entrada.

    • Conecte la salida del bloqueSine Wavecon la primera entrada del bloqueScope

    • Conecte la salida del gráfico de Stateflow con la segunda entrada del bloqueScope

    • Etiquete la señal comoy

  4. Guarde el modelo de Simulink.

    In a Simulink model, a Sine Wave block creates an input signal for the chart. A Scope block plots the input and output of the chart.

  5. Para simular el modelo, haga clic enRun。杜兰特拉simulacion埃尔德Stateflow重新编辑salta los estados activos y las transiciones mediante la animación del gráfico.

  6. Después de simular el modelo, haga doble clic en el bloqueScope。El bloque Scope muestra los gráficos de las señales de entrada y salida a los gráficos.

    Scope block showing the input and output of the chart.

    Los resultados de la simulación muestran que el rectificador filtra valores de entrada negativos.

Ejecutar el gráfico como un objeto deMATLAB

Para ejecutar el gráfico en la ventana de comandos de MATLAB, cree un objeto el gráfico y llame a su funciónstep。Si desea simular el gráfico dentro de un modelo de Simulink, consulteSimular el gráfico como un bloque de Simulink

  1. Cree un objeto de gráficorutilizando el nombre del archivosfxque contiene la definición del gráfico como una función. Especifique el valor inicial para el valorxdel gráfico como un par nombre-valor.

    r =纠正(x = 0);
  2. Inicialice datos de entrada y salida para la ejecución del gráfico. El vectorXcontiene valores de entrada de una onda sinusoidal. El vectorYes un acumulador vacío.

    T = 0:0.2:10; X = sin(T); Y = [];
  3. Ejecute el objeto del gráfico llamando a la funciónstepmúltiples veces. Pase valores individuales del vectorXcomo datos de gráficox。Recopile los valores resultantes deyen el vectorY。Durante la ejecución, el editor de Stateflow resalta los estados activos y las transiciones mediante la animación del gráfico.

    fori = 1:51 step(r,x=X(i)); Y(i) = r.y;end
  4. Elimine el objeto de gráficordel espacio de trabajo de MATLAB.

    delete(r)
  5. Examine los resultados de la ejecución del gráfico. Por ejemplo, puede llamar a la funciónstairspara crear una gráfica de escalones que compare los valores deXeY

    ax1 = subplot(2,1,1); stairs(ax1,T,X,color="#0072BD") title(ax1,"x") ax2 = subplot(2,1,2); stairs(ax2,T,Y,color="#D95319") title(ax2,"y")

    MATLAB figure showing the input and output of the chart.

    Los resultados de la ejecución muestran que el rectificador filtra valores de entrada negativos.

Temas relacionados