1. 项目概述
在工业自动化领域,PLC与上位机及HMI的通信配置一直是现场工程师的日常工作重点。最近我在一个光伏发电监控项目中,成功实现了松下FP-XH系列PLC通过以太网模块与上位机系统及MCGS触摸屏的完整通信链路搭建。这个方案特别适合需要远程监控光伏逆变器运行状态、发电量统计和故障报警的应用场景。
FP-XH是松下电工推出的高性能小型PLC,其以太网通信模块(FP-XH COM5)支持标准的Modbus TCP协议,这为与各类SCADA系统和HMI设备对接提供了便利。而MCGS作为国内广泛使用的触摸屏品牌,在光伏电站的人机界面应用中占有重要地位。本文将详细解析从硬件连接到软件配置的全过程实现方法。
2. 硬件准备与网络拓扑
2.1 设备清单与连接
实现这个通信系统需要准备以下硬件设备:
- 松下FP-XH PLC主机(如FP-XH C30T)
- FP-XH COM5以太网通信模块
- MCGS触摸屏(推荐TPC7062KX)
- 工业级交换机(建议选用带光纤接口的千兆交换机)
- 标准CAT6屏蔽双绞线
- 光伏逆变器(通过RS485与PLC连接)
典型的光伏监控系统网络拓扑如下图所示:
code复制[光伏逆变器]--RS485-->[FP-XH PLC]--以太网-->[工业交换机]
|
[MCGS触摸屏]
|
[上位机PC]
2.2 以太网模块硬件配置
FP-XH COM5模块的硬件安装需要注意:
- 确认PLC电源完全关闭后,将COM5模块插入FP-XH主机的扩展槽
- 拧紧模块两侧的固定螺丝(扭矩0.5N·m)
- 连接网线时注意接口的卡扣方向,听到"咔嗒"声表示连接到位
- 模块状态指示灯含义:
- PWR:绿色常亮表示电源正常
- LNK:绿色闪烁表示物理链路正常
- ACT:黄色闪烁表示数据传输中
重要提示:在光伏电站这种电磁环境复杂的场所,必须使用屏蔽双绞线并做好接地处理。建议在交换机端加装网络防雷器。
3. PLC端通信参数设置
3.1 FPWIN Pro7软件配置
-
新建工程时选择正确的PLC型号(FP-XH C30T等)
-
在导航栏选择"通信设置"→"COM5端口设置"
-
关键参数配置:
- 通信模式:TCP/IP
- IP地址:192.168.1.10(示例)
- 子网掩码:255.255.255.0
- 默认网关:根据实际网络设置
- 端口号:502(Modbus TCP标准端口)
- 协议类型:Modbus TCP Server
-
寄存器映射设置:
text复制Modbus地址 PLC寄存器 光伏数据项
40001 DT0 逆变器直流电压
40002 DT1 逆变器交流电压
40003 DT2 发电功率(kW)
40004 DT3 日发电量(kWh)
...
40020 DT19 故障代码
3.2 通信测试与诊断
- 使用ping命令测试网络连通性:
bash复制ping 192.168.1.10 -t
-
通过FPWIN Pro7的在线监控功能,确认PLC能正确接收光伏逆变器通过RS485发送的数据。
-
使用Modbus Poll等测试工具验证Modbus TCP服务是否正常:
- 连接地址:192.168.1.10:502
- 功能码:03(读保持寄存器)
- 起始地址:40001
- 读取长度:20
4. MCGS触摸屏配置方法
4.1 设备组态设置
-
在MCGS组态软件中新建工程,选择对应触摸屏型号
-
添加新设备:
- 设备类型:Modbus TCP客户端
- 设备名称:PLC_Modbus
- IP地址:192.168.1.10
- 端口号:502
- 站号:1(默认)
-
通道连接配置示例:
text复制变量名 寄存器类型 地址 数据类型 注释
PV_Voltage 4x寄存器 0 U16 光伏电压
PV_Current 4x寄存器 1 U16 光伏电流
Grid_Power 4x寄存器 2 Float 并网功率
4.2 画面设计与数据绑定
-
创建光伏监控主画面,添加以下元素:
- 实时数据文本框(绑定对应变量)
- 趋势图控件(显示功率曲线)
- 报警显示表格
- 操作按钮(手动/自动切换)
-
重点设计发电量统计页面:
- 使用脚本计算日/月/年发电量
- 添加数据存盘功能,记录历史数据
- 设计报表打印按钮
-
报警功能实现:
javascript复制// 在循环脚本中添加报警判断
if (PLC_Modbus.Error_Code != 0) {
Alarm_Trigger(PLC_Modbus.Error_Code);
SetDevice(PLC_Modbus.Reset_CMD, 1);
}
5. 上位机通信实现
5.1 C# Modbus TCP客户端开发
- 使用NModbus库实现通信:
csharp复制using Modbus.Device;
var factory = new ModbusFactory();
IModbusMaster master = factory.CreateMaster(new TcpClient("192.168.1.10", 502));
// 读取光伏数据
ushort[] inputs = master.ReadHoldingRegisters(1, 0, 20);
float power = ModbusUtility.GetSingle(inputs[2], inputs[3]);
- 数据持久化方案:
- 使用SQLite存储实时数据
- 定时任务生成日报/月报
- 异常数据自动标记
5.2 数据可视化实现
- 使用LiveCharts绘制实时曲线:
csharp复制SeriesCollection = new SeriesCollection
{
new LineSeries
{
Title = "发电功率",
Values = new ChartValues<float>(powerData)
}
};
- 报警推送功能:
- 微信企业号API集成
- 邮件自动发送
- 声光报警器控制
6. 系统调试与故障排查
6.1 常见通信问题处理
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| MCGS无法连接PLC | IP地址冲突 | 修改PLC IP并重启 |
| 数据更新延迟 | 网络带宽不足 | 优化扫描周期,减少数据量 |
| 浮点数显示异常 | 字节序错误 | 调整MCGS中的数据类型设置 |
| 随机通信中断 | 电磁干扰 | 检查屏蔽层接地,更换光纤传输 |
6.2 光伏专用功能调试
-
发电量累计逻辑验证:
- 模拟输入不同功率值
- 检查24小时累计结果
- 验证跨零点数据保存
-
阴影遮挡算法实现:
st复制// PLC梯形图程序示例
LD SM400 // 常ON触点
MOV K0 D100 // 清零计数器
CMP D10 K100 // 比较当前功率与额定值
OUT Y0 // 触发清洁装置
- 防逆流保护测试:
- 模拟电网电压异常
- 验证PLC输出继电器动作
- 检查MCGS报警记录
7. 系统优化建议
-
通信性能优化:
- 将数据采集周期从默认的200ms调整为500ms
- 使用批量读取代替单寄存器读取
- 启用PLC的通信缓存功能
-
安全增强措施:
- 在交换机上配置VLAN隔离
- 设置PLC通信密码
- 启用MCGS的操作日志功能
-
扩展功能建议:
- 添加天气预报接口联动
- 实现手机APP远程监控
- 接入第三方能源管理系统
在实际项目中,我发现光伏系统的通信稳定性很大程度上取决于接地质量。建议在施工时使用独立的接地极,接地电阻应小于4Ω。另外,对于大型光伏阵列,可以考虑采用分布式PLC架构,每个子阵列配置单独的FP-XH PLC,再通过交换机汇聚数据。