How to Automate Industrial Processes with Python and PLC Data

In modern industrial automation, PLC (Programmable Logic Controller) systems are widely used to control and monitor manufacturing processes. However, integrating PLC data with Python-based automation can enhance efficiency, enable predictive maintenance, and optimize workflows.

This guide explains how to use Python to automate industrial processes by reading, analyzing, and acting on PLC data.


Workflow Overview

The following workflow describes the automation process:

flowchart TD;
    A[Connect to PLC] -->|Modbus/OPC UA| B[Read PLC Data];
    B --> C[Analyze Data];
    C -->|Trigger Alerts| D[Send Notifications];
    C -->|Adjust Settings| E[Write to PLC];
    C -->|Log Data| F[Store in Database];
    F --> G[Visualize Data];
    G --> H[Generate Reports];
    D --> I[Remote Monitoring];
    E --> I;
    H --> I;

Step 1: Connecting Python to Your PLC System

Option 1: Using Modbus for PLC Communication

Many PLCs support Modbus (TCP/RTU) for data exchange. Python’s pymodbus library can be used to read and write data to a PLC.

from pymodbus.client.sync import ModbusTcpClient

# Connect to PLC
client = ModbusTcpClient('192.168.1.10', port=502)
client.connect()

# Read data from register 100
response = client.read_holding_registers(100, count=1, unit=1)
print("PLC Value:", response.registers[0])

client.close()

Option 2: Using OPC UA for More Advanced PLC Integration

For advanced industrial automation, OPC UA is a preferred standard. Python's opcua library helps retrieve real-time data from PLCs.

from opcua import Client

client = Client("opc.tcp://192.168.1.20:4840")
client.connect()

# Read sensor value from PLC
node = client.get_node("ns=2;s=TemperatureSensor")
value = node.get_value()
print("Temperature:", value)

client.disconnect()

Step 2: Automating Responses Based on PLC Data

Once data is collected, Python can analyze and trigger automated actions such as machine adjustments, alerts, or process optimizations.

Example: Sending Alerts for High Temperature

threshold_temp = 80  # Set temperature threshold

if value > threshold_temp:
    print(f"⚠️ ALERT: High temperature detected ({value}°C)")
    # Send email notification or activate cooling system

Example: Automatically Adjusting PLC Settings

Python can write data back to the PLC for automated process control.

new_setpoint = 50  # Adjust a process parameter
client.write_register(200, new_setpoint, unit=1)  # Writing to register 200

Step 3: Visualizing and Logging Data for Better Monitoring

1. Real-Time Data Visualization with Matplotlib

import matplotlib.pyplot as plt
import time

temperatures = []
timestamps = []

for _ in range(10):  # Collect 10 data points
    value = node.get_value()
    temperatures.append(value)
    timestamps.append(time.strftime('%H:%M:%S'))
    time.sleep(2)  # Sample every 2 seconds

plt.plot(timestamps, temperatures, marker='o')
plt.xlabel('Time')
plt.ylabel('Temperature (°C)')
plt.title('Real-Time PLC Temperature Data')
plt.show()

2. Storing PLC Data in a Database for Future Analysis

import pymysql

conn = pymysql.connect(host='localhost', user='root', password='password', database='plc_data')
cursor = conn.cursor()

# Insert new temperature data
sql = "INSERT INTO sensor_logs (timestamp, temperature) VALUES (NOW(), %s)"
cursor.execute(sql, (value,))
conn.commit()
conn.close()

Step 4: Automating Scheduled Tasks for PLC Data Processing

To automate tasks like data collection, alerts, or system adjustments, use the schedule library.

import schedule

def check_temperature():
    value = node.get_value()
    print("Checking temperature:", value)
    if value > threshold_temp:
        print("⚠️ High temperature detected!")

schedule.every(10).seconds.do(check_temperature)  # Run every 10 seconds

while True:
    schedule.run_pending()

Step 5: Integrating Python with Industrial Robotics & IoT

1. Controlling a Robotic Arm Based on PLC Input

If a PLC detects a defective product, Python can trigger a robotic arm to remove it using libraries like pySerial.

import serial

robot = serial.Serial('/dev/ttyUSB0', 9600)
robot.write(b'MOVE_ARM_DISCARD\n')  # Send command to robotic arm

2. Sending PLC Data to the Cloud for Remote Monitoring

To enable remote monitoring, send PLC data to an IoT platform like AWS, Google Cloud, or Azure IoT.

import paho.mqtt.client as mqtt

client = mqtt.Client()
client.connect("mqtt.broker.com", 1883, 60)
client.publish("plc/temperature", value)

Conclusion

By integrating Python with PLC data, industrial processes can be automated, monitored, and optimized in real time.

This guide covered:
Connecting Python to PLCs using Modbus and OPC UA
Automating alerts and machine adjustments
Visualizing PLC data in real time
Logging data into a database for future analysis
Integrating Python with robotics and IoT

🚀 Start automating your industrial workflows today with Python and PLCs!

Related Posts

Articles

Our Products


Related Posts

Articles

Our Products


Get in Touch with us

Speak to Us or Whatsapp(+66) 83001 0222

Chat with Us on LINEiiitum1984

Our HeadquartersChanthaburi, Thailand