0
0
Scada-systemsHow-ToBeginner · 4 min read

SCADA Project for Wind Farm Monitoring: Setup and Example

A SCADA project for wind farm monitoring involves collecting real-time data from turbines using sensors, sending it to a central system for visualization and control. You set up PLCs or RTUs to gather data, use communication protocols like Modbus, and build dashboards to monitor wind speed, power output, and alarms.
📐

Syntax

A typical SCADA project for wind farm monitoring includes these parts:

  • Data Acquisition: Use PLCs or RTUs to read sensor data like wind speed and turbine status.
  • Communication Protocols: Use protocols such as Modbus TCP/IP or IEC 60870-5-104 to send data to the SCADA server.
  • SCADA Server: Collects data, processes it, and stores it in a database.
  • HMI/Dashboard: Visualizes data and alarms for operators.

Example syntax for Modbus TCP read command in Python:

python
from pymodbus.client.sync import ModbusTcpClient

client = ModbusTcpClient('192.168.1.100', port=502)
client.connect()

# Read 2 registers starting at address 0
result = client.read_holding_registers(0, 2, unit=1)
if not result.isError():
    print(f"Register values: {result.registers}")
else:
    print("Read error")

client.close()
Output
Register values: [123, 456]
💻

Example

This example shows a simple Python script using pymodbus to read wind speed data from a turbine's Modbus TCP device and print it. It demonstrates connecting to the device, reading registers, and handling errors.

python
from pymodbus.client.sync import ModbusTcpClient

# IP and port of the turbine's Modbus device
client = ModbusTcpClient('192.168.1.100', port=502)
client.connect()

# Assume wind speed is stored in register 10
result = client.read_holding_registers(10, 1, unit=1)

if not result.isError():
    wind_speed = result.registers[0] / 10  # scale factor
    print(f"Current wind speed: {wind_speed} m/s")
else:
    print("Failed to read wind speed")

client.close()
Output
Current wind speed: 7.8 m/s
⚠️

Common Pitfalls

  • Wrong IP or port: Ensure the Modbus device IP and port are correct to avoid connection failures.
  • Incorrect register addresses: Using wrong register addresses returns errors or wrong data.
  • Ignoring scaling factors: Sensor data often needs scaling to convert raw values to real units.
  • Not handling communication errors: Always check for errors to avoid crashes.

Example of wrong and right Modbus read:

python
# Wrong: reading wrong register
result = client.read_holding_registers(1000, 1, unit=1)  # likely invalid
if result.isError():
    print("Error: Invalid register")

# Right: reading correct register
result = client.read_holding_registers(10, 1, unit=1)
if not result.isError():
    print("Read successful")
Output
Error: Invalid register Read successful
📊

Quick Reference

ComponentDescriptionExample
PLC/RTUCollects sensor data from turbinesSiemens S7, Schneider M340
Communication ProtocolTransfers data to SCADA serverModbus TCP/IP, IEC 60870-5-104
SCADA ServerProcesses and stores dataIgnition, Wonderware
HMI/DashboardVisualizes data and alarmsWeb dashboard, SCADA client
Sensor DataWind speed, power output, statusRegisters with scaling factors

Key Takeaways

Use PLCs or RTUs to gather real-time turbine data via sensors.
Communicate data using standard protocols like Modbus TCP/IP.
Always verify register addresses and apply scaling factors correctly.
Handle communication errors to keep the system stable.
Visualize data on dashboards for easy monitoring and control.