该数据块的作用是向可视化导航栏提供一个ST的状态。另外会将ST的状态信息映射到一个字节输出变量上。 每个站点要调用一次该数据库。
名称 | 类型 | 说明 |
Stoe | BOOL | 故障 |
Warn | BOOL | 警告 |
Wart | BOOL | 维护 |
K100 | BOOL | 负载电压反馈 |
FM | BOOL | 完成报告 |
K10_GST | BOOL | 站点初始位置 |
KSP-V | BOOL | 站点工作位置 |
不使用 | BOOL | 取消 |
_Cfg | WORD | 组态位(参见组态位表格) |
Stop_Einzel | BOOL | 停止单次运行 |
一、程序整体定位与核心功能
1. 程序身份
属于VASS 标准自动化库(大众 / 奥迪 / 西门子联合开发)
功能:HMI 操作模式处理块,专门处理触摸屏(HMI)的操作按钮、状态回显、权限控制、界面动画
运行环境:西门子 S7-1200/1500 PLC,TIA Portal
2. 核心目标
读取 HMI 触摸屏按钮信号
控制设备手动 / 自动 / 单步运行三种操作模式的切换与权限
把 PLC 内部状态(故障、报警、待机、运行)同步到 HMI 界面
控制 HMI 界面按钮颜色、显示 / 隐藏动画
管理操作面板编号、操作权限互锁
模块 3:HMI 触摸屏按钮处理(Visutasten)
IF "DB_ARG".PC_AKTIV = DWORD1600000000THEN #"HMI-UDT".bVisuTasten := Byte0;END_IF;IF #"HMI-UDT".bVisuTasten <> Byte0THEN ST_BA.VisuTaLoc := #"HMI-UDT".bVisuTasten;END_IF; 功能:
HMI 按钮信号采集:bVisuTasten 是 HMI 发来的按钮编码
信号保持:按钮按下后状态锁存到本地变量
上升沿检测:按钮松开后清零,防止重复触发
单步运行权限按钮编码定义(隐含逻辑):
Byte1 = 单步启动
Byte4 = 手动模式
Byte8 = 自动模式
Byte9 = 单步模式
---
模块 4:操作权限与面板编号(Bedienfreigabe)
IF #"HMI-UDT".bVisuTasten = Byte4 AND (ST_BA.PanelNrHand =0)THEN ST_BA.PanelNrHand := #"HMI-UDT".PanelNrHand;END_IF;
核心逻辑:操作面板互锁与权限
工业场景意义:
一条产线可能有多个操作面板(触摸屏 / 按钮盒)
程序记录当前正在操作的面板编号
同一时间只允许一个面板控制设备,防止冲突
切换到自动 / 单步模式时,自动清空手动面板权限
---
模块 5:主逻辑(Programm)—— 核心控制区
这是整个程序的大脑,处理模式权限、状态映射、联锁逻辑。
1. 主电源联锁
#_ST_BA.K25_FrHand := ST_BA.K25_FrHand AND K100;#_ST_BA.K26_FrAuto := ST_BA.K26_FrAuto AND K100; K100 = 设备主电源 / 控制电压正常
只有上电正常,才开放手动 / 自动权限
2. 单步运行启动逻辑
IF R_TRIG_SF_FrgAutoEinzel.Q AND Cfg.%X0 AND ST_BA.K8_BaEinzelbet THEN xHM_FrgEinzel :=True;END_IF; 满足 3 个条件,才允许单步运行:
HMI 按下【单步启动】
配置位 X0 激活单步功能
设备处于单步模式
按下【停止】或退出单步模式,立即关闭权限
3. 状态同步到 HMI
#"HMI-UDT".dwVisuWerte1 := ST_BA.VisuStatus;#"HMI-UDT".dwVisuWerte4 := ST_BA.VisuStatusZs; 把 PLC 内部状态字原样复制到 HMI 数据区
HMI 根据这些状态字显示:运行、故障、报警、待机
4. 状态编码逻辑(HMI 界面显示值)
程序通过大量IF-ELSIF把 PLC 二进制状态 → 转换为 HMI 界面数字编码(0/1/2/3)例如:
自动模式 + 正常 → 编码 1
手动模式 + 正常 → 编码 2
故障 → 编码 0HMI 根据编码切换文字、图标、按钮样式。
5. 底部状态栏逻辑
直接映射到 HMI 底部状态栏,实时显示设备健康状态。
---
模块 6:HMI 颜色动画(Farbanimation)
这是工业 HMI 最直观的部分,用颜色表示设备状态。
颜色编码表(程序注释)
00 = 灰色
02 = 绿色(运行)
04 = 红色(故障)
06 = 黄色(报警)
03 = 蓝色(待机)
逻辑:
IF Stoe THEN #"HMI-UDT".dwVisuWerte2.%B0 := Byte10;// 红ELSIF Warn THEN #"HMI-UDT".dwVisuWerte2.%B0 := Byte20;// 黄ELSIF Wart THEN #"HMI-UDT".dwVisuWerte2.%B0 := Byte30;// 浅蓝END_IF; 故障 → 红色
报警 → 黄色
待机 → 浅蓝
运行 → 绿色
配置位 X0 → 控制【单步运行】按钮是否显示
---
模块 7:导航动画(站点总览状态)
"DB_ARG".VisuSS.Station_Stoer := "DB_ARG".VisuSS.Station_StoerOR (K100 AND NOT #_ST_BA.K26_FrAuto AND NOT #_ST_BA.K25_FrHandAND (ST_BA.K8_BaEinzelbet AND Cfg.%X0)); 功能:产线总览界面的站点状态汇总
把当前站的故障 / 报警状态,同步到全厂总览界面
操作员在总览画面就能看到哪个工位异常