1. Three Types of Signals
FBD logic is built around signals. To read a diagram, distinguish inputs, outputs, and internal signals:
Inputs → internal logic → outputsInputs describe the outside world, outputs send commands outward, and internal signals carry intermediate results inside the program.
2. Inputs
An input is received from an external device or another data source: Start or Stop, a part sensor, a limit switch, a door sensor, a drive-ready signal, or a safety permissive.
Inputs normally appear on the left:
[Start_Button] ──>3. Outputs
An output controls a device or passes a command onward: run a motor, open a valve, light a lamp, sound a buzzer, enable a drive, or command a robot.
Outputs normally appear on the right because they are results of the logic:
──> [Motor_Run]4. Internal Signals
An internal signal is an intermediate program variable. It need not correspond directly to a physical input or output. Naming intermediate results makes complex logic easier to understand.
| Signal | Type | Purpose |
|---|---|---|
| Start_Button | Input | Operator start command |
| Safety_OK | Input | Operating permissive |
| Start_Allowed | Internal signal | Result of checking start conditions |
| Motor_Run | Output | Motor run command |
Start_Allowed is neither a physical button nor a direct motor output. It carries a logic result.
5. Without an Internal Signal
For a motor that requires Start and Safety_OK:
[Start_Button] ──┐
├── [AND] ──> [Motor_Run]
[Safety_OK] ─────┘This simple diagram can be read directly.
6. With an Internal Signal
Introduce Start_Allowed:
[Start_Button] ──┐
├── [AND] ──> [Start_Allowed] ──> [Motor_Run]
[Safety_OK] ─────┘It means that all start conditions are satisfied and can be used elsewhere in the program.
7. Why Use Internal Signals?
They avoid duplicating logic, name intermediate results, simplify debugging, reduce crossing connections, and let several parts of the program share a result.
For example:
Line_Ready = Safety_OK AND Door_Closed AND Drive_Ready AND Air_OK8. Example: Line Permissive
| Signal | Type | TRUE means |
|---|---|---|
| Safety_OK | Input | Safety circuit healthy |
| Door_Closed | Input | Door closed |
| Drive_Ready | Input | Drive ready |
| Air_OK | Input | Air pressure normal |
| Line_Ready | Internal signal | Line ready to start |
| Conveyor_Run | Output | Conveyor run command |
[Safety_OK] ────┐
[Door_Closed] ──┤
[Drive_Ready] ──┼── [AND] ──> [Line_Ready]
[Air_OK] ───────┘Line_Ready can then be used by conveyor, robot, or other mechanism logic.
9. Naming Signals
| Less descriptive | More descriptive |
|---|---|
| Input_1 | Start_Button |
| Input_2 | Door_Closed |
| Flag_1 | Line_Ready |
| Output_1 | Motor_Run |
| Signal_3 | Alarm_Active |
Input_1 and Output_1 are acceptable in introductory examples, but explain their meaning beside the diagram.
10. Simulator Practice
Open the lesson example and start the simulation. Find Safety_OK, Door_Closed, Drive_Ready, Air_OK, the Line_Ready internal signal, and the Start_Line output. Set all readiness conditions TRUE, then activate Start_Button. Observe Line_Ready and Start_Line. Change one readiness input at a time and check both results.
The goal is to distinguish source signals, intermediate results, and final commands.
11. Key Points
| Signal type | Meaning | Typical FBD position |
|---|---|---|
| Input | Signal read by the program | Left |
| Internal signal | Intermediate logic result | Between blocks |
| Output | Command produced by the program | Right |
Separating these roles makes a diagram easier to read and debug.
Practice block
Open the related example in the editor, run the simulation, and repeat the exercise from the article. The JSON is also available as a direct download.