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

如何在运行时从TwinCAT代码(TwinCAT Vision)访问GigE相机功能?

在TwinCAT Vision中运行时读写GigE相机参数(无需配置助手)

GigE相机基本遵循GenICam标准,TwinCAT Vision底层支持直接访问相机的GenICam参数节点,无需依赖配置助手即可实现运行时读写,以下是具体实现步骤:

1. 映射相机的GenICam参数节点

  • 先完成相机的基础连接配置(确保TwinCAT能识别到GigE相机),这一步是必要的,但无需通过配置助手修改参数。
  • 在TwinCAT设备树中展开目标GigE相机,找到GenICam Node Map,这里包含了相机所有可配置的参数节点(比如曝光时间对应ExposureTime)。
  • 将需要读写的节点直接拖拽到PLC变量表中,自动生成关联变量(例如fbCameraDevice.ExposureTime,命名随工程结构调整)。

2. PLC程序中直接读写参数

读取参数

直接读取映射后的变量即可获取当前参数值:

VAR
    nCurrentExposure : DINT;
    fbCameraDevice : FB_VisionCamera; // 相机实例函数块
END_VAR

nCurrentExposure := fbCameraDevice.ExposureTime;

写入参数

赋值后需调用相机的ApplySettings方法确认生效,部分参数需要相机处于停止采集状态:

// 先停止采集(若参数修改需要)
fbCameraDevice.StopAcquisition();
// 设置曝光时间为1500微秒
fbCameraDevice.ExposureTime := 1500;
// 应用设置
fbCameraDevice.ApplySettings();
// 重启采集
fbCameraDevice.StartAcquisition();

3. 关键注意事项

  • 参数范围校验:写入前可读取对应参数的Min/Max节点(如ExposureTimeMin、ExposureTimeMax),确保设置值在合法区间内。
  • 枚举参数处理:对于触发模式这类枚举型参数,直接使用TwinCAT提供的枚举常量赋值即可,例如:
    fbCameraDevice.TriggerMode := TRIGGER_MODE.ON;
    fbCameraDevice.ApplySettings();
    
  • 只读参数排查:若参数无法写入,先确认该参数是否为只读属性(可在GenICam Node Map中查看节点属性),或相机当前状态是否允许修改(如正在采集时部分参数锁定)。

4. 高级场景:直接调用GenICam API

如果某些特殊参数未在节点映射中显示,可使用FB_GenICamNode函数块直接操作:

VAR
    fbGenICamNode : FB_GenICamNode;
    nExposureValue : DINT;
    hCameraHandle : HANDLE;
END_VAR

// 初始化节点(传入相机句柄和参数节点名)
hCameraHandle := fbCameraDevice.DeviceHandle;
fbGenICamNode.Init(sNodeName := 'ExposureTime', hDevice := hCameraHandle);

// 读取参数
fbGenICamNode.Read(nValue => nExposureValue);

// 写入参数
fbGenICamNode.Write(nValue := 2000);

内容的提问来源于stack exchange,提问作者Rainer Bärs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:25:12