1. 项目概述
这个项目涉及三菱F5U系列PLC的完整控制系统开发,包含触摸屏人机界面、模拟量压力信号采集与处理,以及采用ST(结构化文本)语言进行编程实现。作为一名在工业自动化领域摸爬滚打多年的工程师,我经常遇到需要快速搭建可靠控制系统的需求,而三菱PLC正是这个领域的常青树。
F5U系列作为三菱电机的中端产品,在性价比和功能丰富度上找到了很好的平衡点。它支持多种编程语言,其中ST语言特别适合处理复杂的数学运算和算法实现——这正是压力采集与处理这类任务所需要的。整套系统从硬件接线到软件逻辑都经过实际产线验证,特别是在抗干扰处理和数值滤波方面有独到设计。
2. 硬件配置与接线要点
2.1 基础硬件组成
这套系统的标准配置包括:
- 三菱F5U-32MT/ES PLC主机(32点,晶体管输出)
- GT2103-WTBD触摸屏(7寸,800×480分辨率)
- 4-20mA压力变送器(量程0-1.6MPa)
- 250Ω精密电阻(用于电流信号转换)
- 24VDC开关电源(需独立接地)
特别要注意的是,F5U的模拟量输入不是标配,需要额外加装FX3U-4AD模拟量输入模块。这个模块有4个通道,我们使用其中1个通道接压力信号。
2.2 关键接线示意图
压力信号的正确接入是整个系统可靠工作的基础:
code复制压力变送器+ → 24V+
压力变送器- → FX3U-4AD CH1+
FX3U-4AD CH1- → 250Ω → 0V
250Ω两端电压 → PLC模拟量输入
重要提示:所有模拟量信号线必须使用双绞屏蔽线,屏蔽层在PLC侧单端接地。我曾遇到过因接地不当导致信号波动达5%的案例,正确的接线能避免这类问题。
2.3 硬件抗干扰措施
工业现场电磁环境复杂,必须采取多重防护:
- 电源输入端加装噪声滤波器(如三菱FR-BIF)
- 信号线远离动力线(至少30cm间距)
- PLC机架与柜体间加绝缘垫片
- 模拟量模块供电采用隔离型DC-DC转换器
3. 软件架构设计
3.1 程序整体结构
采用模块化设计,主要功能块包括:
- 模拟量采集处理(FB1)
- 压力值换算工程(FB2)
- 报警管理(FB3)
- 触摸屏通信接口(FB4)
- 主控逻辑(MAIN)
在GX Works2中创建项目时,务必选择"结构化工程"类型,这样才能充分发挥ST语言的优势。我习惯将每个功能块保存在独立的文件中,便于团队协作和版本管理。
3.2 模拟量采集处理实现
核心采集程序用ST语言编写如下:
st复制// 模拟量采集功能块
FUNCTION_BLOCK FB_AnalogInput
VAR_INPUT
iChNum : INT; // 通道号(1-4)
iFilterLen : INT := 5; // 滤波窗口大小
END_VAR
VAR_OUTPUT
rRawValue : REAL; // 原始AD值
rEngValue : REAL; // 工程值
bQuality : BOOL; // 信号质量标志
END_VAR
VAR
aHistory : ARRAY[1..10] OF REAL; // 历史数据缓存
rSum : REAL;
iPtr : INT := 1;
END_VAR
// 移动平均滤波算法
rRawValue := TO_REAL(ADREAD(iChNum)); // 读取原始AD值
aHistory[iPtr] := rRawValue;
rSum := 0;
FOR i := 1 TO iFilterLen DO
rSum := rSum + aHistory[i];
END_FOR;
rRawValue := rSum / iFilterLen;
// 信号质量判断
bQuality := (rRawValue >= 0.0) AND (rRawValue <= 4000.0); // 4-20mA对应0-4000
// 工程值转换在FB2中实现
END_FUNCTION_BLOCK
3.3 压力值换算工程
压力变送器量程为0-1.6MPa,输出4-20mA,对应PLC数值为0-4000。转换公式:
code复制工程值 = (原始值 - 0) × (1.6 - 0) / (4000 - 0)
ST语言实现时需要考虑除零保护和单位换算:
st复制FUNCTION_BLOCK FB_PressureConvert
VAR_INPUT
rRawValue : REAL;
rMinEng : REAL := 0.0; // 0 MPa
rMaxEng : REAL := 1.6; // 1.6 MPa
rMinRaw : REAL := 0.0; // 4mA
rMaxRaw : REAL := 4000.0;// 20mA
END_VAR
VAR_OUTPUT
rPressure : REAL; // 单位MPa
rPressure_kPa : REAL; // 单位kPa
END_VAR
// 带保护的范围检查
IF (rMaxRaw - rMinRaw) <= 0 THEN
rPressure := 0;
rPressure_kPa := 0;
RETURN;
END_IF;
// 线性转换
rPressure := (rRawValue - rMinRaw) * (rMaxEng - rMinEng) / (rMaxRaw - rMinRaw) + rMinEng;
rPressure_kPa := rPressure * 1000; // 转换为kPa
END_FUNCTION_BLOCK
4. 触摸屏界面开发
4.1 GT Designer3项目配置
- 新建项目时选择正确的PLC型号(FX5U)
- 通信参数设置:
- 接口类型:以太网(或RS485)
- IP地址:192.168.1.10(与PLC一致)
- 端口号:5001
- 添加需要监控的PLC寄存器:
- D100:压力测量值(MPa)
- D102:压力测量值(kPa)
- M100:系统运行状态
- M101:报警信号
4.2 主要界面元素设计
主监控画面包含:
- 实时压力曲线图(采样周期500ms)
- 数字显示框(带单位切换功能)
- 历史数据记录按钮
- 系统状态指示灯
- 参数设置入口按钮
报警画面设计要点:
- 使用报警历史控件(GT-ALM-HISTORY)
- 配置报警条件(如D100 > 1.5MPa)
- 设置不同级别的报警颜色(警告/严重)
- 添加报警确认按钮
实用技巧:在画面切换时添加0.5秒的过渡延时,可以避免快速操作时的通信拥堵。这个细节在大型项目中尤为重要。
5. 数据处理高级技巧
5.1 数字滤波算法比较
除了基本的移动平均滤波,我们还测试了其他算法:
| 滤波类型 | 响应速度 | 抗脉冲干扰 | 实现复杂度 | 适用场景 |
|---|---|---|---|---|
| 移动平均 | 慢 | 一般 | 简单 | 平稳信号 |
| 中值滤波 | 中等 | 优秀 | 中等 | 存在突发干扰 |
| 一阶滞后 | 可调 | 差 | 简单 | 快速变化信号 |
| 加权递推平均 | 中等 | 良好 | 复杂 | 需要兼顾响应速度 |
最终选择复合滤波策略:先中值滤波去除突发干扰,再加权递推平均平滑信号。
5.2 压力波动分析算法
为检测系统异常,我们实现了基于ST语言的波动分析:
st复制// 在FB_PressureAnalyzer中实现
VAR
rLastValue : REAL;
rDiffSum : REAL := 0;
iSampleCount : INT := 0;
rMaxDeviation : REAL := 0.02; // 允许最大波动2%
END_VAR
// 计算连续波动率
rCurrentDiff := ABS(rPressure - rLastValue);
rDiffSum := rDiffSum + rCurrentDiff;
iSampleCount := iSampleCount + 1;
rLastValue := rPressure;
IF iSampleCount >= 60 THEN // 1分钟数据
rAvgFluctuation := rDiffSum / iSampleCount;
bUnstable := (rAvgFluctuation > (rPressure * rMaxDeviation));
// 重置计数器
rDiffSum := 0;
iSampleCount := 0;
END_IF;
6. 系统调试与优化
6.1 模拟量校准步骤
- 在无压力状态下,测量250Ω电阻两端电压应为1V(对应4mA)
- 在GX Works2中监控D8260(FX3U-4AD模块的CH1原始值)
- 若零点偏差超过±20,需调整模块上的电位器VR1
- 施加满量程压力,检查电压应为5V(对应20mA)
- 如有偏差,调整VR2增益电位器
- 在程序中设置正确的偏移量和增益系数
6.2 常见故障排查表
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| 压力显示为零 | 变送器供电异常 | 测量24V电源输出 |
| 显示值波动大 | 信号线受干扰 | 检查屏蔽层接地 |
| 触摸屏通信中断 | IP地址冲突 | 用PING测试网络连通性 |
| 压力值偏高/偏低 | 量程参数设置错误 | 检查FB_PressureConvert参数 |
| ST程序编译错误 | 变量类型不匹配 | 检查所有TO_REAL转换 |
6.3 性能优化建议
-
扫描周期优化:
- 将模拟量采集放在单独的低优先级任务中
- 设置合理的滤波窗口大小(通常5-7点)
- 压力换算功能块仅在值变化时执行
-
内存管理:
- 使用局部变量代替全局变量
- 对大型数组进行分段处理
- 定期清理历史数据缓冲区
-
通信优化:
- 触摸屏刷新率设置为500ms-1s
- 重要数据使用直接地址访问
- 启用通信压缩功能(GT Designer3中设置)
7. 项目扩展方向
这套基础框架可以进一步扩展:
-
多传感器融合:
- 增加温度传感器进行温压补偿
- 实现差压测量功能
- 添加流量累计计算
-
高级控制功能:
- PID压力控制回路
- 压力-流量复合控制
- 基于时间的压力曲线控制
-
信息化集成:
- 通过MQTT上传数据至SCADA
- 实现OPC UA服务器功能
- 生成PDF格式的日报表
在实际项目中,我通常会先确保基础压力采集系统稳定运行2-3周,然后再逐步添加扩展功能。这种渐进式的开发方式能有效降低风险。
