PLC Programming Course (P3): How to Simulate the PLC Program

PLC Programming Course (P3): How to Simulate the PLC Program

PLC Programming Course (P3): How to Simulate the PLC Program

In this article (Part 3), you’ll learn how to simulate the PLC program that has been written in the previous part.

Simulating the PLC program is the last step before we download our program to the actual PLCs in the plant and test it with the real devices and equipment. On the other hand, it helps the beginner PLC programmers and automation engineers to gain a solid understanding of the program elements function and applications.

So, in this article, you’ll learn how to simulate the PLC program using Siemens PLCSIM software.

Part 1, was about creating a new project and PLC Hardware Configuration. 

In Part 2, we wrote a Ladder Logic PLC Program for a Water Pumping System project.

How to Download the Program to PLC

Downloading to the PLC means that:

– We want to make the PLC understands that to which actual devices it is connected (Hardware and Network Configuration).

– Which commands and actions (Logic) it should take to control the process properly (PLC Program).

I’ve opened the TIA Portal and the water pumping system project and entered the Main OB environment.

I’ll start by running the PLCSIM using the “start simulation” icon here.

NOTE: PLCSIM is the Siemens PLC Simulator that helps us to test our PLC program using a virtual PLC.

How to Download the Program to PLC

After clicking the PLCSIM icon, the virtual PLC and the “Extended download to device” window opens.

I choose the CPU and click “Load”.

Siemens PLCSIM Software

After some time the “Load preview” window opens.

Loading the PLC Program in TIA Portal

In this window, we see an action as “consistent download”.

If you have used any Functions (FC), Function Blocks (FB) or Data blocks (DB) in our software, then with consistent download you could download them automatically without any issues.

I click “Load” to download both the software and hardware to the PLC.

What is Consistent Download in TIA Portal

In the next window (Load results), we see that the download has been completed without any errors; besides, it asks that if we want to RUN the PLC CPU after downloading or not.

Be Careful!

In the actual processes, sometimes, if the software is not functioning properly when the PLC gets into the RUN mode right after the download, it may have some unwanted results. Because the software might start commanding some devices and runs some mechanisms.


1- You should test and simulate the PLC program before downloading it to the actual PLC in the plant.

2- You must think carefully, take required actions, and safety precautions before running the PLC.

I choose the “Start module” option to Run the CPU and click “Finish”.


The “RUN/STOP” LED blinks and the CPU goes into the RUN mode. You could also click the “RUN” button on the CPU.

How to RUN a Siemens S7 1500

Anyways, there are some other methods for downloading the hardware and the software to the PLC.

We can use the “Download to device” icon.

TIA Portal Download to Device

Or we can use the “online” menu options.

By these methods, all the software and hardware information will be downloaded to the device.

TIA Portal Download to Device Menu

But a more common method for downloading the software or hardware to the PLC specifically when the process is running is that to simply choose the PLC and right-click on that.

In the “download to device” menu, there are four options. If you have made some changes to the software and you only want to apply those changes, you should choose “software (only changes)”.

In this way, you’ll let the CPU to stay in the RUN mode. This is especially useful when the process is running, and we don’t want to interrupt the process by stopping the CPU.

The other options will stop the CPU by the way.

So be extremely careful! When the process is running, stopping the PLC CPU abruptly may have some harmful effects on the devices, equipment, or the final product.

Methods of Downloading to PLC

Monitoring the PLC Program in Real-Time

If I click the “Monitoring” Button, you see that the black lines will convert to green and blue lines that show the live or real-time condition of the level switches and the electric motor.

– Where you see the green lines it means that the condition is True.

– Where there is a blue line, the condition is False; same as the “Tank High-Level” Switch that does not sense any water, and therefore this condition is False.

Monitoring the PLC Program in Realtime

Force the Input Values to Your Desired Condition (Creating the SIM Table)

To force the condition of the switches to our desired simulation condition, I have to create a table and I am going to do that via the “Switch to project view” on the PLCSIM window.

How to Create a SIM Table in TIA Portal

In the opening window, I create a new project and name it as “Water Pumping System”.

Creating a New SIM Table in TIA Portal V15

After some processing, our project has been created.

What I need is on the “project tree” and under the “SIM tables” folder. I expand it and open the SIM table 1 by double-clicking on it.

I click on the “Load project tags” icon, and it automatically loads all the project tags.

We need the “Bits” column to modify the level switches inputs to true or false.

I float this table as I want to use it for the rest of the simulation so that you can see both the Ladder Logic and the SIM table at the same time.

How to Load Project Tags in TIA Portal

Time to Simulate the PLC Program!

Let’s start with this condition;

The Pool is full of water and therefore the “Pool Low-Level Switch” is active and sending a 24-volt or a TRUE signal to the PLC. Therefore, I activate its corresponding Bit in the SIM Table (Check the changes in the programming window).

The tank is empty and both the “Tank Low-Level Switch” and “Tank High-Level Switch” are inactive and therefore the pump is working to increase the level of the water within the tank.

Simulate the PLC Program Using a SIM Table

Very soon the “Tank Low-Level Switch” becomes active as it senses the water. To simulate its condition I activate the its Bit in the SIM Table.

Modifying the Values in SIM Table TIA Portal

As a side note, you see that the Flip Flop keeps the “Set” command and the pump is still running despite the “Set” connection is inactive and this is how Flip-Flop works.

How does a Flip Flop Works

As soon as the level of the water reaches the High-Level Switch and activates that, the “Reset” input of the Flip-Flop becomes activated and therefore the pump stops working.

Forcing the Values in SIM Table

Now the water level will settle down due to the consumption through the outlet and again the “Tank High-Level Switch” becomes inactive after some time.

How to Force the Input Values in PLC Simulation

When the water reaches below the Low-Level Switch of the tank, this Switch also becomes inactive and therefore the pump begins working and the water level starts to rise again.

TIA Portal PLC Simulation

This scenario will be continued unless the water level in the Pool decreases and the “Low-Level Switch” of the Pool becomes inactive as a result.

In this situation, the pump stops working instantly, even if the “Set” input of the Flip-Flop is active.


This is due to the priority of the “Reset” input in the SR Flip-Flop as we have talked about it in Part 2.

Here is why we chose the SR Flip-Flop instead of RS Flip Flop.

Ladder Logic PLC Program Flip Flop

OK, that was all the possible conditions with this simple process. We hope you have learned something new from this article.

Thanks for reading another article. Please spread the word by sharing this article:

If you’ve missed the previous parts here are the links to them:

Part 1: How to Configure the PLC Hardware

Part 2: Ladder Logic PLC Programming of a Water Pumping System

Our YouTube Channel

Contact Us

Have a question or suggestion?

[email protected]

Youtube channel

PLC Programming Course (P2): Ladder Logic PLC Programming (A Very SIMPLE Practical Example)

PLC Programming Course (P2): Ladder Logic PLC Programming (A Very SIMPLE Practical Example)

PLC Programming Course (P2): Ladder Logic PLC Programming of a Water Pumping System

In this article (Part 2), you’ll learn the correct steps to a neat and clean Ladder Logic PLC Programming of a simple process.


Ladder Logic PLC Programming is the most popular and easy to learn methods of automating our process using the PLCs. Ladder Logic or LD for short is developed under the open international standard IEC61131 for Programmable Logic Controllers.

In this part of the course, you are going to learn how to interpret the logic of the process and write a Ladder Logic program according to that.

In Part 1 of this series, we configured our PLC hardware in TIA Portal Version 15.1, and in this article (Part 2), we are going to write a PLC program in Ladder Logic (LAD) for this simple Water Pumping System and in Part 3 of this example, we’ll test it using the PLC simulator.

Logic Oriented Documents

First of all, we have to know what the logic behind our process is.

In the actual projects, there are some documents for this purpose, such as Philosophy of operation, I/O lists, Piping and Instrumentation Diagrams, Internal wiring diagrams and so on.

You’ll learn about the Control and Instrumentation documents, and drawings and how to design and draw them in software such as EPLAN or AutoCAD electrical in future articles.

I&C Documents

Understand the Logic, Before PLC Programming!

In this process, the pump should transfer the water from a “Pool” to a “Tank”, automatically.

For being automatic, there should be a “Low-Level Switch” on the bottom and a “High-Level Switch” on Top of the tank as well as a “Low-Level Switch” in the pool.

Level Switches of the Water Pumping System

1. What does Tank’s Low-Level Switch do?

As soon as the Low-Level Switch on the tank does not sense the water, PLC should send a start command to the pump and the pump will start working until the High-Level Switch senses the water.

Understanding the Process Function Before PLC Programming_Low Level Switch

2. What does Tank’s High-Level Switch do?

When the High-Level Switch senses the water, the PLC will send a stop command to the pump and the pump will shut down and will remain shut down until the Low-Level Switch of the tank does not sense the water again.

This procedure will be repeated again and again.

Understanding the Process Function Before PLC Programming_High Level Switch

3. What does Pool’s Low-Level Switch do?

There is also one other situation that PLC will shut down the pump.

This would be when there is no water in the pool and its Low-Level Switch does not sense any water.

Understanding the Process Function Before PLC Programming_Low Level Switch of the Pool

How Many Signals? How Many PLC Cards?

So, in this example, we have:

– Three inputs (which come from the level switches)

– One output (which turns ON and OFF a three-phase electric motor that drives the pump)

Therefore one Digital Input module and one Digital Output module is required.

How to Specify How Many PLC Cards We Need

Important NOTE: How to Command an Electric Motor with a PLC

We have connected the PLC output directly to the electric motor for the sake of simplicity, but as you may know, in reality, there is a contactor in between.

Since it will not affect our PLC program, let’s keep it as it is. However, we will explain the real-world PLC Control Panel devices and its wiring diagram in a future article.

How to Command an Electric Motor By a PLC

Let’s Open Up the PLC Programming Environment

In Part 1 of this article, we have explained how to create a new project and configure the PLC hardware. Therefore, I just open that project and skip the hardware configuration step.

How to Open a Project in TIA Portal V15

In the “PLC Programming” tab, there is an Organization Block by default (OB1).

Depending on the PLC program you are writing, you may need to create other new blocks or functions that you can do that from the “Add new block” submenu.

How to Add a Function Block to a PLC Program

I double-click over the “Main OB” or OB1 to open it.

OB1 is the Main Organization Block or primary environment for PLC programming.

OB1 or Main Organization Block of the PLC Programming

How to and Why We Should Add Tags to the PLC Inputs and Outputs

Before writing anything within the OB1 environment, we should add the Inputs and Outputs of the project and their addresses in a “Tag Table”.

You can create a Tag Table, in “Project tree”, on the left side of the window, and under the “PLC Tags” Folder.

How to Add PLC Tags in TIA Portal


As you’ll see, Tags are some kind of names that we assign to each input and output signal and they will help us to know the corresponding equipment (i. e. instrument switches, contactors, relays, etc.) of each input and output of the PLC cards. As a result, the PLC programming will be more easy.

Furthermore, we’ll have a neat and clean program afterwards so that the automation maintenance engineers can follow the PLC program and troubleshoot the process easily.

I’ll create a new tag table and name it as “Water Pumping System”. I then open it up by double-clicking on it.

How to Create PLC Tag Table in TIA Portal

The first input is the “Pool Low-Level Switch”.

After entering the name, the software automatically assigns the I0.0 address to this input which is the first channel of our only DI Card.

Adding Tags to the PLC Tag Table-PLC Programming

The next one is the “Tank Low-Level Switch” with the address of I0.1.

And the last input signal is “Tank High-Level Switch” with the address of I0.2.

Finally, as you may guess, there is our only output which I’ll name it “Motor-Pump”. And assign the address of Q0.0 to that.

Again by defining these tags in the tag table, we’ll prevent confusion when we’re writing the PLC program or during the maintenance and troubleshooting. Particularly when our process includes thousands of Inputs and Outputs.

I close the tag table to start programming.

PLC Tag Table in TIA Portal

Ladder Logic PLC Programming!

On the right-hand side of the PLC programming window (OB1), under the “Basic instructions” tab, I’ll expand the “Bit Logic Operations” folder and add an SR Flip-Flop from there by dragging and dropping it to the Network 1.

I then assign the “Motor-Pump” or Q0.0 to that.

Using an SR Flip Flop in the Ladder Logic PLC Programming

Q: Why do I chose SR Flip Flop over the RS Flip-Flop?

A: Choosing between the SR and RS Flip Flops is the matter of priority between Setting and Resetting the Flip-Flop. Meaning that, if you want your “Set” input has priority over the “Reset” input, then you should choose the RS Flip-Flop and vice versa.

I’m sure that you will understand it better after we simulate this program in Part 3 of this series.

Difference between RS and SR Flip Flops

Again, for keeping the logic as simple as possible, I assume that all of the level switches are Normally Open switches and will send a True signal (24-volt DC signal) when they sense the water and they send a False (zero signal) when they do not.

To learn more about the Normally Open sensors and Normally Closed sensors and the real cases in the industry, you may want to read this article.

Normally Open Low Level Switch

As we have learned previously, the only condition required for starting the pump is losing the Tank’s Low-Level Switch or I0.1.

Motor Start Ladder Logic PLC Program

So, I connect a closed contact to the “Set” input of the SR Flip-Flop and will assign the I0.1 to that.

Set Input of an SR Flip Flop

This way, when the I0.1 is False,then the Set input of the Flip-Flop would be one or True and consequently, the pump will turn on.

SR Flip Flop in Ladder Logic

As the next step, I click the “Reset” input of the Flip-Flop and connect an open contact to that, for the I0.2.

SR Flip Flop in PLC Program

To continue, I use an“Open Branch” and add a closed contact for I0.0.

Therefore, The electric motor will be shut down, whenever the water level reaches the low level in the Pool OR the high level in the tank.

Water Pumping System Ladder Logic PLC Program

That’s it for this part. I save the project and in Part 3, You’ll learn how to test this PLC program using the PLCSIM software and see how it works.

Thanks for reading another article. Please spread the word by sharing this article:

If you’ve missed the previous part, here is the link to that:

Part 1: How to Configure the PLC Hardware

Part 3: How to Simulate the PLC Program

Our YouTube Channel

Contact Us

Have a question or suggestion?

[email protected]

Youtube channel