Create a GRAFCET diagram type

+5 votes
asked Jan 27, 2019 in Wanted features by ukubauka (120 points)
Many of the PUML features are based on software development. But asciidoc or PUML are increasingly used in automation environment. The preferred definition graph for automation sequences is GRAFCET which also is an international standard. https://de.wikipedia.org/wiki/GRAFCET. Is there a possibility to create a GRAFCET using PUML? What would be the roadmap for such. Who is interested?
commented Feb 11, 2019 by FuSoftware (140 points)
Sounds like a very interesting feature. So far the only alternative is to generate them using the `grafcet` package for LuaLateX. It would be very nice to have that alternative indeed.

2 Answers

+1 vote
answered Jun 20, 2019 by c864ad77e4 (140 points)
Almost any product you use daily involves industrial automation. Still a lot of industrial software is designed the old school way by using pen and paper. We are still in the 90s in the way we work. There are hardly any tools available. Since we cannot make these tools ourselves, we are in desperate need for some help.

For me it is not only Grafcet but also similar S88 sequences. Next there are the program block interface layouts.
commented Mar 5 by TomNeto (100 points)

here is the combination of SB and TB

@startuml

' Define Step Block 1 (SB1)

rectangle SB1

() SB1_Action

' Define Transition Block 1 (TB1)

rectangle TB1

() TB1_Condition

' Define Step Block 2 (SB2)

rectangle SB2

() SB2_Action

' Define Transition Block 2 (TB2)

rectangle TB2

() TB2_Condition

rectangle TB2

() TB2_Condition

' Positioning for SB1

TB1_Condition -right->TB1

TB1 -down-> SB1

SB1 -right-> SB1_Action

SB1 -down-> TB2

' Positioning for SB2

TB2_Condition -right->TB2

TB2 -down-> SB2

SB2 -right-> SB2_Action

@enduml

 SB+TB

+1 vote
answered Mar 4 by Tom Neto
In my old days when I programmed PLC, I was introduced to GRAFCET when I was in France and then to SFC when back to USA. It is a fantastic method to show a automation sequence through steps, considering conditions and actions.

Letter I start using GRAFCET to model any process, any flowchat can be converted to GRAFCET or SFC and it is easier to read, interpret and understand.

It would be fantastic to have PlantUML which such capability.
Who are the developer of PlantUML? Can you speak with someone and mabe help to bring this functionality to Plant UML?
commented Mar 4 by anonymous

I have been testing to create a GRAFCET type, using Activity Diagrams:

1. Transition Block

@startuml

' Define the central shape

rectangle T

' Define inputs and outputs

() T_Input

() Condition

() T_Output

' Positioning

T_Input -down-> T

Condition -right-> T

T -down-> T_Output

@enduml

PlantUML diagram

commented Mar 4 by TomNeto (100 points)

Maybe we could work together to develop some sort of approximation code, using activity code to look like a GRAFCET diagram.

We need to find out a way to show:

  1. Start Point
  2. Transitions
  3. Conditions
  4. Steps
  5. Actions
  6. End Pont

I am still learning how to use this forum, so I copy and past the link of the code I wrote for the Transition Block (TB), and the code flow just below.

Transition Block (TB)

@startuml
' Define the central shape
rectangle T

' Define inputs and outputs
() T_Input
() Condition
() T_Output

' Positioning
T_Input -down-> T
Condition -right-> T
T -down-> T_Output
@enduml

TB
 

commented Mar 4 by TomNeto (100 points)

Step Block (SB)

 

@startuml

' Define the central shape for Step Block

rectangle S

' Define inputs, outputs, and action

() S_Input

() Action

() S_Output

' Positioning

S_Input -down-> S

S -right-> Action

S -down-> S_Output

@enduml

 SB

commented Mar 4 by TomNeto (100 points)

First Attempt to connect the Transition Block to the Step Block

@startuml
' Define Step Block 1 (SB1)
rectangle SB1
() SB1_Input
() SB1_Action
() SB1_Output

' Define Transition Block 1 (TB1)
rectangle TB1
() TB1_Input
() TB1_Condition
() TB1_Output

' Define Step Block 2 (SB2)
rectangle SB2
() SB2_Input
() SB2_Action
() SB2_Output

' Positioning for SB1
SB1_Input -down-> SB1
SB1 -right-> SB1_Action
SB1 -down-> SB1_Output

' Positioning for TB1
TB1_Input -down-> TB1
TB1_Condition -right-> TB1
TB1 -down-> TB1_Output

' Positioning for SB2
SB2_Input -down-> SB2
SB2 -right-> SB2_Action
SB2 -down-> SB2_Output

' Connect SB1 to TB1, and TB1 to SB2
SB1_Output -down-> TB1_Input
TB1_Output -down-> SB2_Input
@enduml

TB connected to SB 

...