3. 读取并显示当前标定数据

任务目标

编写一个Python脚本,通过INCA的自动化接口读取指定标定变量的当前值,并在控制台显示。本案例以标定变量 VVT_WINKEL 为例,演示完整的读取流程。

环境依赖

  • INCA 7.x 或更高版本(含自动化接口)
  • Python 3.6+
  • 安装 pyinca 库:pip install pyinca
  • 已打开的INCA工程,且目标标定变量已加载到工作区

关键完整代码

import pyinca

def read_calibration_value(var_name):
    """
    读取指定标定变量的当前值
    Args:
        var_name: 标定变量名称(字符串)
    Returns:
        当前值(浮点数或整数)
    """
    # 连接到正在运行的INCA实例
    inca = pyinca.INCA()
    
    # 获取当前激活的工作区
    workspace = inca.get_workspace()
    if workspace is None:
        raise RuntimeError("未找到激活的工作区,请先在INCA中打开并激活工程")
    
    # 获取工作区中的标定对象
    cal_object = workspace.get_cal_object()
    if cal_object is None:
        raise RuntimeError("工作区中未加载标定对象")
    
    # 读取变量当前值
    value = cal_object.get_variable_value(var_name)
    return value

if __name__ == "__main__":
    # 目标标定变量
    target_var = "VVT_WINKEL"
    
    try:
        current_value = read_calibration_value(target_var)
        print(f"标定变量 {target_var} 的当前值: {current_value}")
    except Exception as e:
        print(f"读取失败: {e}")

运行方式

  1. 启动INCA并打开包含 VVT_WINKEL 的工程,确保工作区已激活。
  2. 将上述代码保存为 read_cal_value.py。
  3. 在命令行执行:python read_cal_value.py

验证方法

  • 通过条件:控制台输出 标定变量 VVT_WINKEL 的当前值: [数值],且该数值与INCA界面中显示的当前值一致。
  • 错误排查:若提示“未找到激活的工作区”,请检查INCA中是否已激活工作区;若提示变量不存在,请确认变量名拼写及该变量是否已加载到当前标定对象中。

常见问题

  • 连接失败:确保INCA正在运行且自动化接口已启用(INCA菜单:Options → Automation Interface)。
  • 变量读取类型:本代码自动适配整型和浮点型变量;若变量为数组或结构体,需改用 get_variable_array() 或逐元素读取。