Program Organization Units (POUs) are the main building blocks in PLC programming. A typical PLC project starts by creating POUs such as Programs, Functions, and Function Blocks. Programs run cyclically and can hold variables that keep their values between scan cycles. Functions are used for calculations and do not keep memory. Function Blocks are reusable components with their own data and can be instantiated multiple times. In the example, a Program POU named MainProgram has a variable 'counter' initialized to 0. Each scan cycle, the program increments 'counter' by 1. The execution table shows the value of 'counter' before and after each step, demonstrating how it retains its value between cycles. Understanding POUs helps organize PLC code logically and makes it easier to maintain and reuse.