跳转到内容

Line Debouncer#

相机的 Line Debouncer 功能使您可以过滤掉不需要的短硬件输入信号。

仅允许足够长的信号传递到相机并生效。

This feature is similar to the Input Filter feature, which is only available on ace 2, boost, and dart R cameras.

该功能的使用#

运作原理#

线路消抖会从传入的硬件触发信号的上升沿和下降沿中滤除不需要的短信号(触点颤动)。为此,线路消抖会评估硬件信号逻辑状态的所有变化和持续时间。

此评估周期的最大持续时间由 LineDebouncerTime 参数定义。线路消抖的作用类似于时钟,可测量信号的持续时间以识别有效信号。

每当硬件信号改变其逻辑状态(从高到低,反之亦然)时,时钟就开始计数:

  • 如果新逻辑状态的持续时间于指定的线路消抖时间,新逻辑状态将被视为无效并且不会产生任何效果。
  • 如果新逻辑状态的持续时间与线路消抖时间一样长或更长,新逻辑状态将被视为有效,并允许在相机中生效。

信息

指定线路消抖时间会在有效触发信号送达相机与相关的逻辑状态变化传递到相机的时间之间引入延迟。

延迟的持续时间至少等于 LineDebouncerTime 参数的值。这是因为相机会等待指定的时间来确定信号是否有效。同样,线路消抖会延迟有效触发信号的结束。

The figure below illustrates how the line debouncer filters out invalid signals from the rising and falling edge of a hardware trigger signal. Line debouncer times that allow a change of logical state in the camera are labeled "OK". Also illustrated are the delays relative to the hardware trigger signal.

Line Debouncer 对输入信号的影响

启用 Line Debouncer#

  1. 确保将相机配置为进行硬件触发
  2. LineSelector 参数设置为所需的输入线,例如 Line1
  3. 输入 LineDebouncerTime 参数的值。

选择消抖值#

  • 选择过低LineDebouncerTime值会导致接收到无效信号和信号状态。
  • 选择一个过高的值会导致有效信号和信号状态被拒绝。

选择线路去抖时间时,Basler 建议选择比无效信号的最长预期持续时间稍长的时间。

拒绝有效短信号的风险很小,但是在大多数情况下,这种方法应能产生良好的结果。因此应监视您的应用,并在发现有过多有效信号被拒绝时,视需要调整值。

示例代码#

ace Classic/U/L GigE 相机#
// Select the desired input line
camera.LineSelector.SetValue(LineSelector_Line1);
// Set the parameter value to 10 microseconds
camera.LineDebouncerTimeAbs.SetValue(10.0);
INodeMap& nodemap = camera.GetNodeMap();
// Select the desired input line
CEnumParameter(nodemap, "LineSelector").SetValue("Line1");
// Set the parameter value to 10 microseconds
CFloatParameter(nodemap, "LineDebouncerTimeAbs").SetValue(10.0);
// Select the desired input line
camera.Parameters[PLCamera.LineSelector].SetValue(PLCamera.LineSelector.Line1);
// Set the parameter value to 10 microseconds
camera.Parameters[PLCamera.LineDebouncerTimeAbs].SetValue(10.0);
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK;  /* Return value of pylon methods */
/* Select the desired input line */
errRes = PylonDeviceFeatureFromString(hdev, "LineSelector", "Line1");
CHECK(errRes);
/* Set the parameter value to 10 microseconds */
errRes = PylonDeviceSetFloatFeature(hdev, "LineDebouncerTimeAbs", 10.0);
CHECK(errRes);
# Select the desired input line
camera.LineSelector.Value = "Line1"
# Set the parameter value to 10 microseconds
camera.LineDebouncerTimeAbs.Value = 10.0
其他相机#
// Select the desired input line
camera.LineSelector.SetValue(LineSelector_Line1);
// Set the parameter value to 10 microseconds
camera.LineDebouncerTime.SetValue(10.0);
INodeMap& nodemap = camera.GetNodeMap();
// Select the desired input line
CEnumParameter(nodemap, "LineSelector").SetValue("Line1");
// Set the parameter value to 10 microseconds
CFloatParameter(nodemap, "LineDebouncerTime").SetValue(10.0);
// Select the desired input line
camera.Parameters[PLCamera.LineSelector].SetValue(PLCamera.LineSelector.Line1);
// Set the parameter value to 10 microseconds
camera.Parameters[PLCamera.LineDebouncerTime].SetValue(10.0);
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK;  /* Return value of pylon methods */
/* Select the desired input line */
errRes = PylonDeviceFeatureFromString(hdev, "LineSelector", "Line1");
CHECK(errRes);
/* Set the parameter value to 10 microseconds */
errRes = PylonDeviceSetFloatFeature(hdev, "LineDebouncerTime", 10.0);
CHECK(errRes);
# Select the desired input line
camera.LineSelector.Value = "Line1"
# Set the parameter value to 10 microseconds
camera.LineDebouncerTime.Value = 10.0

您也可以使用 pylon Viewer 轻松设置参数。