Implementing Soft Start and Speed Control of Motors Using PLC to Control Inverters

Hello everyone, I am a veteran in automation with over 20 years of experience. Today, let’s discuss a practical topic: how to control inverters with PLCs to achieve soft start and speed regulation of motors.

I remember last year when I worked on a renovation project at a cement factory. Their conveyor belt motors were started directly, causing a loud “bang” each time, and the belts were almost torn apart. The electrician said that the motors needed soft starters. I thought about it and realized that there were several other machines in the factory with similar issues. If we added soft starters to each one, the cost would be quite high. So, I recommended a solution using inverters in conjunction with PLCs, which not only solved the soft start problem but also added speed control functionality, achieving two goals at once.

Connection Methods for Inverters and PLCs

First, let’s talk about how to connect the inverter and PLC. There are three common methods:

  1. Digital Control: The simplest method, using several digital output points from the PLC to control the start, stop, and acceleration/deceleration of the inverter.
  2. Analog Control: The PLC outputs a 4-20mA or 0-10V signal to the inverter for continuous speed regulation.
  3. Communication Control: Using RS485 or Ethernet interfaces, full parameter control is achieved through protocols like Modbus.

For that cement factory project, I used a Siemens S7-1200 in conjunction with a Siemens V20 inverter, employing a mixed control method of analog and digital signals.

Wiring and Parameter Settings

The specific wiring is as follows:

S7-1200        |    V20 Inverter
---------------------------
Q0.0 (Start Signal)  --->  DI1 (Start)
Q0.1 (Direction Control)  --->  DI2 (Reverse)
Q0.2 (Fault Reset)  --->  DI3 (Fault Reset)
QW80 (Analog Output)  --->  AI1 (Frequency Setting)
I0.0 (Fault Indication)  <---  DO1 (Fault Output)

Setting the inverter parameters is also crucial. At that time, I set several important parameters:

P1000 = 2    // Frequency setting source selected as analog AI1
P1080 = 0    // Minimum frequency 0Hz
P1082 = 50   // Maximum frequency 50Hz
P1120 = 5    // Acceleration time 5 seconds
P1121 = 5    // Deceleration time 5 seconds
P0731 = 3    // Set DO1 function as fault indication

PLC Program Implementation

Next is the PLC program part. The core of the soft start is to let the frequency rise slowly from low to high, allowing the motor to start smoothly. I wrote a simple ladder diagram program:

// Start/Stop Control
LD    I0.1            // Start button
O     M0.0            // Self-locking run status
AN    I0.2            // Not stop button
=     M0.0            // Run status

LD    M0.0
=     Q0.0            // Control inverter start

// Soft Start Acceleration/Deceleration Control
LD    M0.0            // Run status
MOVD  500, MD10       // Target frequency 50.0Hz
MOVD  0, MD14         // Initial actual output frequency
TON   T0, 100ms       // 100ms timer

LD    T0              // Timer timing
AN    M0.1            // Not steady speed flag
R     T0              // Reset timer

LD    T0              // Timer timing
AN    M0.1            // Not steady speed flag
LD    MD14            // Current output frequency
LT    MD10            // Less than target frequency
ADD   5, MD14         // Increase frequency by 0.5Hz
MOVD  MD14, MD20      // Store in output variable
// Frequency reaches target value
LD    MD14
GE    MD10
=     M0.1            // Set steady speed flag

// Output frequency to inverter
LD    M8000           // Always ON
MOVD  MD20, MD30      // Current frequency stored in conversion variable
MUL   27648, MD30     // Multiply by analog full scale
DIV   1000, MD30      // Divide by 1000 (because the unit is 0.1Hz)
DTI   MD30, MW80      // Convert to INT and output to QW80

What functionality does this program achieve? When the start button is pressed, the PLC first sends a start signal to the inverter, then the frequency increases from 0 by 0.5Hz every 100ms until it reaches the set 50Hz. This allows the motor to start smoothly, avoiding impact.

Adjustments in Practical Applications

Theory is beautiful, but various problems will definitely arise in practical applications.

For example, at that cement factory, we found that starting without load was fine, but with full load, the 5-second acceleration time was too short, and the motor current was still a bit high. So we changed the acceleration time to 10 seconds, and the problem was solved.

Another interesting adjustment: automatically adjusting the conveyor belt speed based on the amount of material. We added an ultrasonic level sensor under the hopper and then wrote a program:

// Automatically adjust speed based on material level
LD    I1.0            // Ultrasonic sensor value
NORM_X(MIN:=0.0, MAX:=10.0)  // Normalize to 0-1
MUL   800             // Multiply by 80.0
ADD   200             // Add 20.0
MOVE  MD100, MD20     // Set as target frequency (20-100Hz)

This program dynamically adjusts the conveyor belt speed based on the material level sensor value. When there is more material, it runs faster; when there is less material, it runs slower, saving energy and reducing wear during empty runs.

Common Issues and Solutions

During implementation, we encountered several issues, which I would like to share:

  1. Inverter Overload Alarm: Upon inspection, we found that the acceleration time was too short, and extending it appropriately resolved the issue.

  2. Interference Issues: The analog signal was unstable; testing revealed that the cable was not shielded. After adding a shielded cable and ensuring proper grounding, the problem was resolved.

  3. Communication Disconnection: Initially, we used Modbus communication, but the factory environment was too poor, causing frequent disconnections. We eventually switched to analog control, which, although it had fewer functions, greatly improved stability.

Finally, I advise everyone: in practical engineering, reliability always comes first. No matter how fancy the features are, if it’s unstable, it’s useless. Like this project, the final solution looks very simple, but it has been running for over 2 years without a single fault.

If you have any questions, feel free to ask me in the comments, and let’s discuss together!

Leave a Comment