• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • Advertise
  • Subscribe

Motion Control Tips

Automation • Motion Control • Power Transmission

  • News
    • Industry News
    • Editor Blogs
  • Controls
    • HMIs
    • PC-Based Controllers
    • PLCs + PACs
    • Stand-Alone Controllers
    • Software
  • Drives
    • Servo Drives
    • Stepper Drives
  • Encoders
    • Absolute Encoders
    • Incremental Encoders
    • Rotary Encoders
  • Mechanical
    • Bearings
    • Brakes + Clutches
    • Belt + chain
    • Couplings
    • Gears + Gearing
    • Lubrication
    • Shock + Vibration Mitigation
    • Springs + Rings + Seals
  • Linear
    • Actuators
    • Linear Motors
    • Linear Encoders
  • Motors
    • AC Motors
    • DC Motors
    • Brushless Motors
    • Gearmotors
    • Piezo Motors
    • Servo Motors
    • Stepper Motors
  • Systems
    • Conveyors + linear transport systems
    • Gantries + Stages
    • Rotary Tables
    • Grippers + End Effectors
    • Robotics
  • Networks
    • Connections + Sliprings
    • Fieldbuses
    • I/O
    • Sensors + Vision
  • Resources
    • FAQs
      • Motion Casebook
      • Motion Selection Guides
    • Suppliers
    • Video
You are here: Home / FAQs + basics / What are program organization units (POUs) in PLC programming?

What are program organization units (POUs) in PLC programming?

August 6, 2019 By Danielle Collins Leave a Comment

The software model for PLCs, as defined in the IEC 61131-3 standard, Programmable Controllers – Part 3: Programming Languages, consists of, at the top level, a configuration. The configuration defines the hardware structure and logic of the PLC system and contains resources (the PLC or PAC, for example), which are able to execute programs. These resources are controlled by tasks, which invoke the execution of software blocks that make up the PLC project. These software blocks are referred to as Program Organization Units.

IEC 61131-3 defines three types of program organization units (POUs) — programs, function blocks, and functions.

program organization units
The IEC 61131-3 software model for PLCs includes a configuration at the top level, with resources and tasks that execute the program organization units.
Image credit: PLCopen

Programs

Programs are the highest level program organization units and can be written in any of the IEC 61131-3 programming languages. Each program is a network of functions and function blocks (see below) that controls the machine or process. Therefore, at least one program is required in any project.

Programs can read and write to other input or output variables and can communicate with other programs. And they are the only POUs that can declare global variables, which are made available across the project, and access paths, which allow data to be exchanged between configurations

Programs can be called (initiated) by tasks. Each time a program is called, if the values of the program are changed, the changes are retained the next time the program is called, even if it is called by another task.

Function blocks

The most common type of POU, function blocks are segments of reusable code that have internal memory and can return different outputs even when the same inputs are used. In other words, the results of a function block are conditional on the previous output of the function block or the current state of the process or action. An example of a function block is a PID control loop.

Function blocks can be called by programs or by other function blocks, and in some implementations of IEC 61131-3, they can be called by tasks. The memory that will capture and store the output must be allocated for each unique instance of the function block — a process sometimes referred to as instantiation, since it creates an “instance” of the function block.

program organization units
Programs can be called by tasks. Function blocks can be called by programs or by other function blocks. Functions can be invoked by any POU type.
Image credit: Lenze

Functions

A function can be thought of as a subprogram (often an equation) that has no internal memory, so it returns a value rather than an output. This means that any time a function is invoked (performed), if the same inputs are used, the same value will be returned, regardless of the number of times the function is used. Common examples of functions are ADD and SQRT (square root).


The IEC 61131-3 software model — with programs, function blocks, and functions for creating PLC projects — ensures efficient programming by making it possible to copy and reuse software blocks that have already been implemented and tested elsewhere or to identify and deactivate them for troubleshooting.

You might also like

Filed Under: FAQs + basics, Featured, PLCs + PACs, Software

Reader Interactions

Leave a Reply

You must be logged in to post a comment.

Primary Sidebar

LEARNING CENTER

Design World Learning Center

Motion Control Handbook

“mct
EXPAND YOUR KNOWLEDGE AND STAY CONNECTED
Get the latest info on technologies, tools and strategies for Design Engineering Professionals.

RSS Featured White Papers

  • Robotic Automation is Indispensable for the Logistics Industry’s Continued Growth and Success
  • Reliable Linear Motion For Packaging Machines
  • Polymers Outperform Metals In Precision Gearing

Footer

Motion Control Tips

DESIGN WORLD NETWORK

Design World Online
The Robot Report
Coupling Tips
Linear Motion Tips
Bearing Tips
Fastener Engineering.
Wire and Cable Tips

MOTION CONTROL TIPS

Subscribe to our newsletter
Advertise with us
Contact us
About us

Copyright © 2026 · WTWH Media LLC and its licensors. All rights reserved.
The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media.

Privacy Policy | RSS