You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TIA Openness 15.1无法获取项目HMI屏幕列表技术求助

使用TIA Openness 15.1 Python API获取HMI屏幕列表失败的解决方案

问题背景

尝试通过TIA Openness 15.1的Python代码获取项目中指定HMI设备的所有屏幕列表(后续需提取屏幕关联标签),但多次尝试均未成功获取到屏幕数据。

常见错误原因及解决代码

错误核心

多数失败案例是因为未正确定位到HMI设备的Runtime对象,错误访问DeviceSoftware属性导致无法获取屏幕集合。

正确实现代码

import clr
# 添加TIA Openness必要程序集引用
clr.AddReference('Siemens.Engineering')
clr.AddReference('Siemens.Engineering.Hmi')
clr.AddReference('Siemens.Engineering.Hmi.Runtime')

from Siemens.Engineering import TiaPortal, TiaPortalMode
from Siemens.Engineering.Hmi import HmiDevice

# 初始化TIA Portal实例
tia = TiaPortal(TiaPortalMode.WithUserInterface)
# 打开目标项目
project = tia.OpenProject(r"C:\Path\To\Your\Project.ap15")

# 定位目标HMI设备
target_hmi_name = "你的HMI设备名称"  # 替换为截图中的设备名称
hmi_runtime = None

for device in project.Devices:
    # 判断设备类型为HMI设备且名称匹配
    if isinstance(device, HmiDevice) and device.Name == target_hmi_name:
        hmi_runtime = device.Runtime
        break

if hmi_runtime:
    # 获取所有屏幕列表
    screens = hmi_runtime.Screens
    print(f"已找到 {len(screens)} 个HMI屏幕:")
    for idx, screen in enumerate(screens, 1):
        print(f"{idx}. 屏幕名称:{screen.Name}")
        
        # 额外:获取当前屏幕关联的标签(示例)
        for item in screen.ScreenItems:
            # 判断元素是否包含Tag属性且关联标签不为空
            if hasattr(item, 'Tag') and item.Tag is not None:
                print(f"   关联标签:{item.Tag.Name}")
else:
    print(f"未找到名称为「{target_hmi_name}」的HMI设备,请检查设备名称是否正确")

关键注意点

  • 必须引用Siemens.Engineering.Hmi.Runtime程序集,屏幕集合属于HmiRuntime对象的属性
  • 需通过isinstance(device, HmiDevice)过滤出HMI设备,避免误处理PLC设备
  • 运行代码前确保TIA Portal 15.1已正常授权,且目标项目未被其他进程锁定
  • 若HMI设备存在多个版本的设备软件,Runtime属性会自动关联到当前激活的配置

内容的提问来源于stack exchange,提问作者Elijah Prisyazhnyuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 22:02:43