PID in PLC S7 200


Thread Starter


Hello to everyone,
I'm quite new in the automation sector and I have some experience in s7 200, but this is the first time dealing with PID.I want to control the rotation of a motor, with only one temperature sensor.

Is there anyone who could tell me how i could possible to do this with a PID? Please, any help or advice should be very helpful.
Hello Lebour;
There is a PID Wizard instruction in the S7-200 instruction library, so doing the actual PID design in the PLC should be easy.
The hard part comes before: what exactly do you want to control, and how are you going to do the control.

Are you planning to use a drive to control the motor, and if so, are you going to use digital, analog or fieldbus control of the drive? Or are you thinking of PWM for the speed control of the motor, for example?

How exactly are you going to use the temperature signal as a PV? What is the link between the temperature measurement and the motor action (controlled by the PID loop)?

Basically, you have to design the feedback loop on paper, to understand your process before you start programming; you must define exactly the different signals entering and leaving the PID instruction (SP, PV, CV) and the different gains that will be used to set the process response to the control. This will shorten the programming side of the problem.

Hope this helps,
Daniel Chartier
Dear Daniel Chartier,
firstly i would like to thank you for your interest. Well, I am not going to use an inverter. I will just change the rotation of the motor with just a 24VDC signal.The motor will change its rotation, when the temperature is raising up to 35C. I'm not quite understand the function of PV and CV.

Can you please give an example?
Thanks for your time, I hope the best for you and your family.
Hello Lebour;

If all you need to do is fire a 24 VDC output when your temperature reaches a certain value, then you do not need PID control.

First, your temperature measurement; there are RTD and Thermocouple expansion modules fopr the S7-200, which would give you simple and reliable readings in your program. Or you could use a transmiter with your temperature sensor, transforming the temperature reading into a voltage or current signal that can be interpreted by your analog inputs. But you will need to scale the values in your program to determine what temperature value you are receiving.

Use a compare instruction (temperature1> setpoint) to determine when your temperature exceeds 35 degrees, for example, and use the result of the comparison to trigger your 24 V output.

Where are you planning to send that 24 V signal, in order to change the rotation on your motor (if you don't use an inverter, how exactly are you planning to change the rotation of the magnetic fields in the motor)? What kind of motor are you using?.

Please, once is never enough, I recommend that you put down on paper exactly what your sequence of operation is going to be, it is critical that you think this out before you start connecting things together.

Please study the S7-200 system manual, it contains all the information you will need on the S7-200 side: instruction set for MicroWin, wiring diagrams, parameters for all input and output modules... You can download it here:

If ever you would like to go back to the original question about PID control, here is a link to basic information on the subject. It is one of the best simplified description of this type of controls, by a gentleman I respect very much, Mr. Ron Beaufort:

Hope this helps,
Daniel Chartier
Dear Lebour,

Seems like you want the motor to switch direction on a specified temperature, i.e. 35C.

If this temperature signal is already connected to your S7 200 Analog input all you need is to put in a small logic using a comparator that will compare this temperature with limit of 35 once it exceeds 35 you set an output bit to swap the DC voltage on your motor.

This is not a PID application!
I think you want to vary the speed of the VFD (inverter) based on temperature input. If I am correct, this would be a PID application (doesn't have to be unless you need great accuracy and stability). You would need an analog input for your temperature and an analog output to supply 0-10v (or whatever) to the inverter... probably corresponding to 0-60 Hz. Am I close?
I think you are actually trying to vary the speed of the motor based on the temperature. If that is correct, this could be done with PID... if you really need that kind of accuracy and stability. In any case, you will need an analog input for your temperature and an analog output to control the 0-10v (or whatever the inverter requires) for the speed (corresponding to 0-60Hz). Am I close?

( Complete thread: )
Hello Daniel Chartier,
If there are one set point and two feedbacks (A and B), can S7-200 provide PID loop Control. In this case, feedback A creates direct acting output and feedback B causes a reverse acting output.(In other words, increasing set point causes the magnitude of feedback A increase and magnitude of feedback B decreases.)