¿Cuál es la mejor manera de implementar un Grafcet en código?

Realmente depende del idioma que desee / necesite usar. Puede implementar un SFC / Grafcet en prácticamente cualquier idioma, incluido el lenguaje gráfico como Ladder.

Solo recuerda que un SFC gira en torno a 3 cosas: Estados, Eventos y Acciones.

Podrías representar tus estados usando un vector booleano (o matriz). Sus eventos son, bueno, eventos (cosas que suceden dentro o fuera de su código), y sus acciones son básicamente lo que debe hacer un estado (encender una salida o iniciar un temporizador).

Aquí tenemos un ejemplo muy simple de un SFC:


En este SFC, tenemos 3 estados (S0, S1 y S2, donde S0 es el estado inicial), 3 eventos (E0, E1 y E2). Cada estado puede tener una acción asociada, pero en este ejemplo, no necesitamos las acciones.

La idea es: el programa comienza en S0. Si sucede E1, el programa evoluciona a S1, y así sucesivamente. Una forma de implementar este SFC sería (tenga en cuenta que esta implementación está en python):

  estados = [Verdadero, Falso, Falso]
 eventos = [Falso, Falso, Falso]

 mientras que (Verdadero):

     si indica [0] * eventos [0] == 1:
         estados [0] = falso
         estados [1] = Verdadero
    
     if indica [1] * eventos [1] == 1:
         estados [1] = falso
         estados [2] = Verdadero
        
     si indica [2] * eventos [2] == 1:
         estados [2] = falso
         estados [0] = Verdadero

Todavía necesita implementar las ecuaciones para que los eventos de este programa funcionen, pero de todos modos, creo que es suficiente para tener una idea de cómo implementar un SFC.