CREATE TABLE energy_data (
id INT PRIMARY KEY AUTO_INCREMENT,
timestamp DATETIME NOT NULL,
device_id VARCHAR(50) NOT NULL,
active_power FLOAT, -- 有功功率 kW
reactive_power FLOAT, -- 无功功率 kVar
apparent_power FLOAT, -- 视在功率 kVA
power_factor FLOAT, -- 功率因数
voltage_a FLOAT, -- A相电压 V
voltage_b FLOAT, -- B相电压 V
voltage_c FLOAT, -- C相电压 V
current_a FLOAT, -- A相电流 A
current_b FLOAT, -- B相电流 A
current_c FLOAT, -- C相电流 A
frequency FLOAT, -- 频率 Hz
energy_kwh FLOAT, -- 累计电量 kWh
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_timestamp ON energy_data(timestamp);
CREATE INDEX idx_device ON energy_data(device_id);
三、通信架构
3.1 常见架构
架构1:PLC + 智能电表 → EMS
PLC ──RS485── 智能电表 ──Ethernet── EMS服务器
架构2:PLC → 边缘网关 → EMS
PLC ──Ethernet── 边缘网关 ──HTTP/MQTT── EMS
架构3:PLC + 能源控制器 → EMS
PLC ──Ethernet── 能源控制器 ──数据库── EMS
3.2 三菱PLC + 智能电表
智能电表选型:
[tr][td]型号[/td][td]通信方式[/td][td]精度[/td][td]功能[/td][/tr][tr][td]EM200[/td][td]RS485/Modbus[/td][td]0.5级[/td][td]基本计量[/td][/tr][tr][td]EM300[/td][td]RS485/Modbus[/td][td]0.2级[/td][td]高级计量[/td][/tr][tr][td]EM500[/td][td]Ethernet/Modbus TCP[/td][td]0.2级[/td][td]网络版[/td][/tr]3.3 Modbus寄存器映射
[tr][td]寄存器[/td][td]数据[/td][td]数据类型[/td][/tr][tr][td]30001[/td][td]A相电压[/td][td]FLOAT[/td][/tr][tr][td]30003[/td][td]B相电压[/td][td]FLOAT[/td][/tr][tr][td]30005[/td][td]C相电压[/td][td]FLOAT[/td][/tr][tr][td]30007[/td][td]A相电流[/td][td]FLOAT[/td][/tr][tr][td]30009[/td][td]B相电流[/td][td]FLOAT[/td][/tr][tr][td]30011[/td][td]C相电流[/td][td]FLOAT[/td][/tr][tr][td]30013[/td][td]有功功率[/td][td]FLOAT[/td][/tr][tr][td]30015[/td][td]无功功率[/td][td]FLOAT[/td][/tr][tr][td]30017[/td][td]视在功率[/td][td]FLOAT[/td][/tr][tr][td]30019[/td][td]功率因数[/td][td]FLOAT[/td][/tr][tr][td]30021[/td][td]频率[/td][td]FLOAT[/td][/tr][tr][td]30023[/td][td]累计有功电量[/td][td]FLOAT[/td][/tr]四、PLC数据采集
4.1 ST语言实现
(
能耗数据采集 )
VAR
( 智能电表通信 )
Modbus_Handle: INT;
Modbus_Read: MODBUS_READ;
( 能耗数据 )
Voltage_A: REAL;
Voltage_B: REAL;
Voltage_C: REAL;
Current_A: REAL;
Current_B: REAL;
Current_C: REAL;
Active_Power: REAL;
Reactive_Power: REAL;
Apparent_Power: REAL;
Power_Factor: REAL;
Frequency: REAL;
Energy_KWh: REAL;
( 采集定时器 )
Collect_Timer: TON;
END_VAR
( 每5秒采集一次 )
Collect_Timer(IN:=TRUE, PT:=T#5s);
IF Collect_Timer.Q THEN
( 读取电表数据 - Modbus功能码03 )
Modbus_Read(
Handle := Modbus_Handle,
Slave_ID := 1,
Start_Address := 30001,
Quantity := 12,
Data => [Voltage_A, Voltage_B, Voltage_C,
Current_A, Current_B, Current_C,
Active_Power, Reactive_Power,
Apparent_Power, Power_Factor,
Frequency, Energy_KWh],
Status => Modbus_Status
);
IF Modbus_Status = 0 THEN
( 数据有效,写入共享缓冲区 )
Energy_Data.Timestamp := Get_TimeString();
Energy_Data.Device_ID := 'METER01';
Energy_Data.Active_Power := Active_Power;
Energy_Data.Reactive_Power := Reactive_Power;
Energy_Data.Power_Factor := Power_Factor;
Energy_Data.Energy_KWh := Energy_KWh;
Energy_Data.Valid := TRUE;
END_IF;
Collect_Timer(IN:=FALSE);
END_IF;
4.2 数据校验
(
数据校验 )
PROC Validate_Energy_Data()
( 电压校验 - 正常范围 360-440V )
IF Voltage_A < 360 OR Voltage_A > 440 THEN
Alarm_Voltage_A := TRUE;
END_IF;
( 电流校验 - 不超过额定电流 )
IF Current_A > Rated_Current * 1.2 THEN
Alarm_Overload_A := TRUE;
END_IF;
( 功率因数校验 - 正常范围 0.8-1.0 )
IF Power_Factor < 0.8 THEN
Alarm_Low_PF := TRUE;
END_IF;
( 三相不平衡校验 )
V_Unbalance := ABS(Voltage_A - Voltage_B) / Voltage_A * 100;
IF V_Unbalance > 5 THEN
Alarm_V_Unbalance := TRUE;
END_IF;
END_PROC
五、能耗分析
5.1 基础分析
日能耗统计:
SELECT
DATE(timestamp) as date,
SUM(active_power) as total_kwh,
AVG(power_factor) as avg_pf,
MAX(active_power) as max_power,
MIN(active_power) as min_power
FROM energy_data
WHERE DATE(timestamp) = '2026-06-04'
GROUP BY DATE(timestamp);
峰谷分析:
-- 峰时段(8:00-12:00, 14:00-18:00)
SELECT
HOUR(timestamp) as hour,
AVG(active_power) as avg_power,
SUM(active_power) as total_kwh
FROM energy_data
WHERE DATE(timestamp) = '2026-06-04'
AND (HOUR(timestamp) BETWEEN 8 AND 11 OR HOUR(timestamp) BETWEEN 14 AND 17)
GROUP BY HOUR(timestamp);
-- 谷时段(22:00-6:00)
SELECT
HOUR(timestamp) as hour,
AVG(active_power) as avg_power,
SUM(active_power) as total_kwh
FROM energy_data
WHERE DATE(timestamp) = '2026-06-04'
AND (HOUR(timestamp) >= 22 OR HOUR(timestamp) <= 5)
GROUP BY HOUR(timestamp);
5.2 设备能耗分析
-- 各设备能耗排名
SELECT
device_id,
SUM(active_power) as total_kwh,
AVG(active_power) as avg_power,
COUNT(*) as sample_count
FROM energy_data
WHERE DATE(timestamp) = '2026-06-04'
GROUP BY device_id
ORDER BY total_kwh DESC;
-- 设备能耗占比
SELECT
device_id,
SUM(active_power) as device_kwh,
SUM(SUM(active_power)) OVER() as total_kwh,
SUM(active_power) * 100.0 / SUM(SUM(active_power)) OVER() as percentage
FROM energy_data
WHERE DATE(timestamp) = '2026-06-04'
GROUP BY device_id;
5.3 异常检测
-- 检测异常高能耗
SELECT * FROM energy_data
WHERE active_power > (
SELECT AVG(active_power) * 2
FROM energy_data
WHERE device_id = 'MOTOR01'
)
AND timestamp > NOW() - INTERVAL 1 HOUR;
-- 检测功率因数过低
SELECT * FROM energy_data
WHERE power_factor < 0.85
AND timestamp > NOW() - INTERVAL 1 HOUR;
六、深度案例分析:工厂能源管理系统
6.1 背景
某工厂年电费500万,需要降低能耗成本。
6.2 问题经过
[tr][td]问题[/td][td]表现[/td][td]影响[/td][/tr][tr][td]能耗盲区[/td][td]无实时监测[/td][td]无法管理[/td][/tr][tr][td]峰谷不分[/td][td]全部峰时用电[/td][td]电费高[/td][/tr][tr][td]设备空转[/td][td]无人时设备运行[/td][td]浪费严重[/td][/tr][tr][td]功率因数低[/td][td]PF<0.85[/td][td]力调电费罚款[/td][/tr]6.3 解决方案
EMS系统架构:
┌─────────────────────────────────────────────────────────┐
│ EMS 服务器 │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 数据采集 │ │ 数据分析 │ │ 优化控制 │ │
│ │ 模块 │ │ 模块 │ │ 模块 │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ MySQL 数据库 │ │
│ │ - 能耗数据表 - 设备台账 - 电费账单 │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 智能电表 │ │ 智能电表 │ │ 智能电表 │
│ (车间1) │ │ (车间2) │ │ (车间3) │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
┌────┴─────┐ ┌────┴─────┐ ┌────┴─────┐
│ PLC │ │ PLC │ │ PLC │
└──────────┘ └──────────┘ └──────────┘
节能策略:
[tr][td]策略[/td][td]实施[/td][td]节电率[/td][/tr][tr][td]峰谷调度[/td][td]谷时生产,峰时停机[/td][td]15-20%[/td][/tr][tr][td]设备调度[/td][td]闲置设备自动停机[/td][td]5-10%[/td][/tr][tr][td]功率因数补偿[/td][td]自动投切电容[/td][td]减少罚款[/td][/tr][tr][td]设备优化[/td][td]高效设备替换[/td][td]10-15%[/td][/tr]6.4 效果对比
[tr][td]指标[/td][td]优化前[/td][td]优化后[/td][td]提升[/td][/tr][tr][td]年电费[/td][td]500万[/td][td]400万[/td][td]-20%[/td][/tr][tr][td]功率因数[/td][td]0.82[/td][td]0.95[/td][td]+16%[/td][/tr][tr][td]峰时用电占比[/td][td]70%[/td][td]40%[/td][td]-30%[/td][/tr][tr][td]设备空转率[/td][td]25%[/td][td]5%[/td][td]-80%[/td][/tr][tr][td]力调电费罚款[/td][td]15万/年[/td][td]0[/td][td]-100%[/td][/tr]七、节能优化控制
7.1 峰谷调度
(
峰谷调度控制 )
VAR
Current_Hour: INT;
Time_Period: INT; -- 0:谷, 1:平, 2:峰
Production_Enable: BOOL;
END_VAR
( 获取当前时段 )
Current_Hour := Get_Hour();
IF (Current_Hour >= 22 OR Current_Hour <= 5) THEN
Time_Period := 0; ( 谷时 )
Production_Enable := TRUE; ( 允许生产 )
ELSIF (Current_Hour >= 8 AND Current_Hour <= 11) OR
(Current_Hour >= 14 AND Current_Hour <= 17) THEN
Time_Period := 2; ( 峰时 )
Production_Enable := FALSE; ( 禁止高能耗生产 )
ELSE
Time_Period := 1; ( 平时 )
Production_Enable := TRUE;
END_IF;
7.2 设备空转检测
(
设备空转检测 )
VAR
Motor_Run: BOOL;
Motor_Load: REAL;
Idle_Timer: TON;
Idle_Alarm: BOOL;
END_VAR
( 检测空转 )
IF Motor_Run AND Motor_Load < 0.2 THEN ( 负载<20% )
Idle_Timer(IN:=TRUE, PT:=T#5min);
IF Idle_Timer.Q THEN
Idle_Alarm := TRUE;
Motor_Stop_Cmd := TRUE; ( 自动停机 )
END_IF;
ELSE
Idle_Timer(IN:=FALSE);
Idle_Alarm := FALSE;
END_IF;
八、常见问题排查
8.1 通信问题
[tr][td]问题[/td][td]可能原因[/td][td]解决方案[/td][/tr][tr][td]电表不响应[/td][td]地址/波特率错误[/td][td]检查Modbus配置[/td][/tr][tr][td]数据异常[/td][td]接线错误[/td][td]检查PT/CT接线[/td][/tr][tr][td]数据丢失[/td][td]通信中断[/td][td]检查网络/RS485[/td][/tr]8.2 数据问题
[tr][td]问题[/td][td]可能原因[/td][td]解决方案[/td][/tr][tr][td]电量为0[/td][td]电表未累计[/td][td]检查电表设置[/td][/tr][tr][td]功率为负[/td][td]电流方向反[/td][td]检查CT极性[/td][/tr][tr][td]功率因数异常[/td][td]接线错误[/td][td]检查PT/CT相序[/td][/tr]九、核心工具推荐
9.1 智能电表
[tr][td]品牌[/td][td]型号[/td][td]特点[/td][/tr][tr][td]施耐德[/td][td]iEM3000[/td][td]高精度,功能全[/td][/tr][tr][td]西门子[/td][td]7KM3000[/td][td]工业级,可靠[/td][/tr][tr][td]国产[/td][td]EM200/300[/td][td]性价比高[/td][/tr]9.2 EMS软件
[tr][td]软件[/td][td]特点[/td][/tr][tr][td]自研[/td][td]灵活定制[/td][/tr][tr][td]施耐德 EcoStruxure[/td][td]完整解决方案[/td][/tr][tr][td]西门子 Desigo[/td][td]楼宇+工业[/td][/tr]十、金句集锦
本文基于三菱PLC与智能电表/EMS通信实战经验整理,涵盖能耗采集、数据分析、峰谷调度、工厂节能案例等核心主题。 推荐阅读
三菱GX Works3 028:安全PLC编程——SIL2/SIL3安全功能实战
发布于 2026-05-27
三菱 PLC 教程 02:iQ-R 系列硬件组成
发布于 202603
NACHI 机械手教程第 4 章:编程基础
发布于 202603
KEYWORDS
PLC, ST语言, IL, 三菱, 西门子
如果你觉得这篇文章有帮助,请点个在看,分享给更多需要的人!
关注我,获取更多实用干货~
有问题欢迎评论区留言交流!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!