触摸屏历史趋势曲线的组态与数据存储
在工业自动化现场,触摸屏不仅是操作面板,更是数据记录与分析的核心工具。通过历史趋势曲线,工程师可以直观地回顾生产过程中的温度、压力、流量等关键变化,从而快速定位故障原因或优化工艺参数。本文将以通用的组态逻辑为基础,详细讲解从底层变量配置到数据导出的完整流程。
一、 前期准备与变量规划
在开始绘制曲线之前,必须确保 PLC 中的数据已被正确映射到触摸屏内部,并规划好数据的存储深度。
- 打开触摸屏组态软件,新建或打开现有项目。
- 进入“变量标签”或“变量管理”页面,建立需要记录的内部变量。
- 设置变量地址。例如,若记录 PLC 中的温度值,将变量地址
Temp_01关联到 PLC 寄存器D100。 - 确认变量的数据类型。模拟量信号通常选择
16位有符号整数(Word)或32位浮点数(Float),需与 PLC 内部数据格式严格一致,否则曲线会显示乱码或最大/最小值。 - 规划采样频率与记录时长。根据生产节拍决定采样周期。例如,对于变化缓慢的温度,建议
2000ms(2秒)记录一次;对于高速压力,可能需要100ms。
在规划存储深度时,需估算所需的缓冲区大小。若已知采样周期 $T_{sample}$ 和需保留的总时长 $T_{total}$,则所需的记录点数 $N$ 可通过以下公式计算:
$$ N = \frac{T_{total}}{T_{sample}} $$
例如,若需保留 24 小时的数据,每 2 秒记录一次,则计算如下:
$$ N = \frac{86400s}{2s} = 43200 \text{ 个点} $$
二、 配置历史数据缓冲区
触摸屏无法直接从 PLC 实时读取过去的每一毫秒数据,因此需要在触摸屏内部建立“数据缓冲区”作为中转站。
- 找到“历史数据记录”或“数据采样”功能模块。
- 创建一个新的数据缓冲区,命名为
Process_Log_01。 - 配置缓冲区属性。选择存储介质为
内部 Flash或外部 SD 卡(推荐外部存储以延长屏幕寿命)。 - 设定采样周期。输入计算好的周期值(如
2000),单位通常是毫秒。 - 添加记录变量。在缓冲区的变量列表中,勾选之前建立好的
Temp_01、Pressure_01等变量。 - 设置触发方式。
- 如果希望上电即记录,选择“连续记录”。
- 如果仅在生产过程中记录,设置触发位为
System_Run(PLC 传来的运行信号)。
数据流向逻辑可以概括如下:
graph LR
A[PLC Real-time Register
D100, D200] -->|Periodic Read| B[HMI Internal Buffer
Process_Log_01] B -->|Display| C[History Trend Curve
Control] B -->|Storage/Export| D[External USB/SD Card
Data.csv]
D100, D200] -->|Periodic Read| B[HMI Internal Buffer
Process_Log_01] B -->|Display| C[History Trend Curve
Control] B -->|Storage/Export| D[External USB/SD Card
Data.csv]
三、 组态历史趋势曲线控件
缓冲区建立好数据源后,通过图形控件将其可视化。
- 打开画面编辑窗口,选中“历史趋势图”或“曲线”控件。
- 拖拽控件到合适位置,调整大小以覆盖足够的显示区域。
- 双击控件进入属性设置窗口。
- 绑定数据源。在“通用”或“数据”选项卡中,选择之前创建的缓冲区
Process_Log_01。 - 配置通道(波形)。通常一个曲线控件支持多通道,点击“添加通道”,分别关联变量:
- 通道 1:选择
Temp_01,设置线条颜色为红色,线宽为1.5px。 - 通道 2:选择
Pressure_01,设置线条颜色为蓝色,线宽为1.5px。
- 通道 1:选择
- 设定坐标轴量程。
- X 轴(时间轴):设置显示模式为“滚动”或“固定帧”。勾选“显示时间标尺”。
- Y 轴(数值轴):设定下限为
0,上限为500(根据传感器量程调整)。
- 启用游标功能。勾选“启用光标”或“数据读取”,这样操作人员暂停查看时,能直接显示具体时刻的数值。
四、 数据存储与文件导出
仅凭屏幕上的图形无法满足长期的存档要求,必须将数据导出为通用的文件格式(如 CSV 或 Excel)。
- 插入一个“数据导出”按钮到画面。
- 双击按钮,进入事件脚本编辑区。
- 编写导出逻辑。以常见的组态软件脚本为例(函数名可能因品牌不同,但逻辑一致):
- 在“按下”或“点击”事件中,调用
DataSave或CopyFile指令。 - 指定源文件为内部缓冲区对应的文件路径(通常是
\History\Process_Log_01.dtl)。 - 指定目标路径为 USB 存储路径(如
\USB\Storage\Batch_001.csv)。
- 在“按下”或“点击”事件中,调用
示例脚本逻辑如下:
// 检查 USB 是否就绪
IF CheckUSB() == 1 THEN
// 将缓冲区数据复制为 CSV 文件
DataCopy("\Flash\Data_Buffer.dbf", "\USB\Backup_Data_20231027.csv")
// 显示导出成功提示
SetMessage("数据导出成功!")
ELSE
SetMessage("未检测到 U 盘,请插入后重试。")
END IF
- 设置文件格式。在导出配置中,确保选择
CSV格式,并勾选“包含表头”,这样生成的 Excel 表格第一行会显示变量名称,方便阅读。
五、 优化显示与用户体验
为了让曲线更具可读性,需对显示细节进行微调。
- 添加数值显示标签。拖拽一个“数值显示”元件(IO 域),绑定变量
Temp_01。 - 设置显示格式。将整数位数设为
3,小数位数设为1。 - 利用脚本实现坐标轴自适应。如果数据波动范围变化很大(例如 0-10 和 0-1000 切换),编写宏指令根据当前最大值动态调整 Y 轴的上限属性。
- 测试报警标记。配置事件记录,当变量超过阈值时,在曲线上标记一个红色的报警点或竖线。
以下表格汇总了不同应用场景下的推荐参数配置:
| 应用场景 | 采样周期 | 推荐记录时长 | 缓冲区大小 | 是否启用数据压缩 |
|---|---|---|---|---|
| 慢速温控 (如炉温) | 5000ms | 72 小时 | 约 50KB | 否 (需精确查看) |
| 液压站压力 | 200ms | 10 分钟 | 约 100KB | 是 (仅记录变化点) |
| 流量计量累计 | 1000ms | 30 天 | 约 5MB | 否 (需连续累加) |
| 高速冲压频率 | 10ms | 1 分钟 | 约 20MB | 是 (建议采用环形覆盖) |
六、 常见问题处理
问题 1:曲线显示为一条直线
- 检查 PLC 中的数据是否在变化。
- 检查 触摸屏变量的“数据采集”是否勾选。
- 确认 变量的“最大值”和“最小值”设置是否将实际值截断了。
问题 2:历史数据丢失
- 排查 缓冲区模式。如果是“先进先出”(FIFO),旧数据会被新数据覆盖。切换 为“停止记录”模式(满即停)。
- 检查 断电保持设置。确保 缓冲区所在的存储区具有掉电保持功能,或配置了断电自动保存。
问题 3:导出的 CSV 文件乱码
- 确认 编码格式。工业设备通常使用
ANSI或GB2312编码,而 Excel 默认可能尝试用UTF-8打开。 - 使用 记事本打开文件,另存为 时选择
UTF-8编码,然后再用 Excel 打开即可解决。

暂无评论,快来抢沙发吧!