Back to all lessons

Lesson 08

Inputs, Outputs, and Internal Signals

How physical inputs and outputs differ from internal program signals.

PLC/FBDbeginneruniversityengineerINOUTINTERNAL_SIGNAL

1. Three Types of Signals

FBD logic is built around signals. To read a diagram, distinguish inputs, outputs, and internal signals:

Inputs → internal logic → outputs

Inputs 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.

SignalTypePurpose
Start_ButtonInputOperator start command
Safety_OKInputOperating permissive
Start_AllowedInternal signalResult of checking start conditions
Motor_RunOutputMotor 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_OK

8. Example: Line Permissive

SignalTypeTRUE means
Safety_OKInputSafety circuit healthy
Door_ClosedInputDoor closed
Drive_ReadyInputDrive ready
Air_OKInputAir pressure normal
Line_ReadyInternal signalLine ready to start
Conveyor_RunOutputConveyor 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 descriptiveMore descriptive
Input_1Start_Button
Input_2Door_Closed
Flag_1Line_Ready
Output_1Motor_Run
Signal_3Alarm_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 typeMeaningTypical FBD position
InputSignal read by the programLeft
Internal signalIntermediate logic resultBetween blocks
OutputCommand produced by the programRight

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.