Baumer工业相机堡盟相机如何使用HeartbeatTimeout功能( 心跳超时功能的优点和行业应用)(C++)

简介: Baumer工业相机堡盟相机如何使用HeartbeatTimeout功能( 心跳超时功能的优点和行业应用)(C++)

项目场景

Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。  


Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。  


Baumer工业相机堡盟相机中心跳超时功能是一种通过定期通讯来获取相机状态的功能。


技术背景

工业相机的心跳超时功能是一种功能,它允许相机监测相机和所连接设备(如计算机或软件应用程序)之间的通信链路。如果摄像机在设定的时间内(称为心跳间隔)没有收到所连接设备的响应,摄像机就会认为连接已经丢失或设备不再正常工作。


发生这种情况时,相机可能会触发警报或采取其他行动,以提醒用户并避免潜在的数据丢失或系统错误。心跳超时通常是可配置的,这意味着用户可以根据自己的具体需要或喜好调整间隔时间。这一功能在工业环境中尤为重要,因为设备之间可靠、连续的通信对于确保系统的顺利运行至关重要。


代码分析

Baumer工业相机堡盟相机SDK示例中101_HeartbeatTimeout.cpp详细介绍了如何配置相机心跳超时功能。


软件SDK示例地址如下所示:Baumer_GAPI_SDK_2.12.0_win_x86_64_cpp\examples\src\1_GigE\101_HeartbeatTimeout\101_HeartbeatTimeout.cpp


1.png


std::cout << "DEVICE PARAMETER SETUP" << std::endl;
std::cout << "######################" << std::endl << std::endl;
try {
    if (pDevice->GetTLType() == "GEV") {
        // SET GevHeartbeatTimeout
        // =======================
        std::cout << "Set HeartbeatTimeout to longer time than 3000 msec during debugging" << std::endl;
        std::cout << "to prevent the camera from auto-disconnection in breakpoints" << std::endl << std::endl;
        if (pDevice->GetRemoteNodeList()->GetNodePresent("DeviceLinkHeartbeatTimeout")) {
            // 1 minute = 60,000,000 usec
            pDevice->GetRemoteNode("DeviceLinkHeartbeatTimeout")->SetDouble(60000000.0);
            std::cout << "    DeviceLinkHeartbeatTimeout: "
                << pDevice->GetRemoteNode("DeviceLinkHeartbeatTimeout")->GetValue();
            if (pDevice->GetRemoteNode("DeviceLinkHeartbeatTimeout")->HasUnit() == true) {
                std::cout << " [" << pDevice->GetRemoteNode("DeviceLinkHeartbeatTimeout")->GetUnit() << "] "
                    << std::endl << std::endl;
            } else {
                std::cout << " [micro seconds]" << std::endl;
            }
        } else {
            pDevice->GetRemoteNode("GevHeartbeatTimeout")->SetInt(60000);  // 1 minute = 60000 msec
            std::cout << "    GevHeartbeatTimeout: " << pDevice->GetRemoteNode("GevHeartbeatTimeout")->GetValue();
            if (pDevice->GetRemoteNode("GevHeartbeatTimeout")->HasUnit() == true) {
                std::cout << " [" << pDevice->GetRemoteNode("GevHeartbeatTimeout")->GetUnit() << "] "
                    << std::endl << std::endl;
            } else {
                std::cout << " [milli seconds]" << std::endl;
            }
        }
    } else if (pDevice->GetTLType() == "U3V") {
        std::cout << "USB3 does not support GevHeartbeatTimeout " << std::endl;
    }
}
catch (BGAPI2::Exceptions::IException& ex) {
    returncode = (returncode == 0) ? 1 : returncode;
    std::cout << "ExceptionType:    " << ex.GetType() << std::endl;
    std::cout << "ErrorDescription: " << ex.GetErrorDescription() << std::endl;
    std::cout << "in function:      " << ex.GetFunctionName() << std::endl;
}
std::cout << std::endl;

工业相机心跳超时功能的特点

工业相机的心跳超时功能旨在监测相机和网络中其他设备之间的通信状态。它通过定期发送信号来确保摄像机在网络中仍有连接和功能。如果摄像机未能在指定的时间范围内作出反应,则假定摄像机已经失去连接,系统会采取适当的行动。这有助于防止因摄像机断开连接而造成的停机或错误,从而影响性能和生产力。


工业相机的心跳超时功能有几个优点。


首先,它有助于检测摄像机与网络或控制系统之间的任何连接或通信的损失。这对于确保从摄像机传输的图像数据的可靠性和一致性非常重要。


第二,心跳超时功能可用于在失去通信时触发警报或提醒,以便及时应对可能出现的任何问题。


第三,该功能可通过自动检测和终止任何不活跃或无反应的摄像机连接,帮助减少网络或控制系统的工作量。


总的来说,心跳超时功能在确保工业相机系统的稳定性、可靠性和效率方面起着关键作用。


工业相机心跳超时功能的行业应用

工业相机的心跳超时功能是为了防止相机在运行期间锁定或冻结。在机器视觉检测、生产线监控和远程监控等场景中,摄像机因画面冻结而导致的故障可能导致大量停机,造成生产损失甚至安全隐患。


心跳超时功能通过以固定的时间间隔向控制系统持续发送信号,确保摄像机保持响应。如果摄像机在指定的时间范围内没有反应,系统可以发出警报或采取纠正措施,如重启摄像机、重启应用程序或切换到备用摄像机。


这一功能在医疗成像、安全监控和航空航天等关键应用中特别有用,在这些应用中,摄像机的正常运行时间和可靠性是最重要的。它还可用于恶劣的环境,在这些环境中,摄像机可能暴露在极端的温度、湿气或振动中,这可能导致它们发生故障。

目录
相关文章
|
19天前
|
存储 C++ 容器
C++STL(标准模板库)处理学习应用案例
【4月更文挑战第8天】使用C++ STL,通过`std:vector`存储整数数组 `{5, 3, 1, 4, 2}`,然后利用`std::sort`进行排序,输出排序后序列:`std:vector<int> numbers; numbers = {5, 3, 1, 4, 2}; std:sort(numbers.begin(), numbers.end()); for (int number : numbers) { std::cout << number << " "; }`
19 2
|
1月前
|
安全 算法 C++
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits处理弱枚举和强枚举
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits处理弱枚举和强枚举
48 3
|
2天前
|
C++
C++:深度解析与实战应用
C++:深度解析与实战应用
7 1
|
2天前
|
安全 vr&ar C++
C++:编程语言的演变、应用与最佳实践
C++:编程语言的演变、应用与最佳实践
|
19天前
|
程序员 C++
C++语言模板学习应用案例
C++模板实现通用代码,以适应多种数据类型。示例展示了一个计算两数之和的模板函数`add&lt;T&gt;`,可处理整数和浮点数。在`main`函数中,展示了对`add`模板的调用,分别计算整数和浮点数的和,输出结果。
12 2
|
1月前
|
设计模式 算法 中间件
【C++ 可调用对象的应用】C++设计模式与现代编程技巧:深入可调用对象的世界
【C++ 可调用对象的应用】C++设计模式与现代编程技巧:深入可调用对象的世界
114 1
|
1月前
|
存储 设计模式 算法
【C/C++ 数据结构 线性表】深入理解与实现栈:从基础到应用的全面探索
【C/C++ 数据结构 线性表】深入理解与实现栈:从基础到应用的全面探索
53 0
|
5天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
19 0
|
5天前
|
C++
c++的学习之路:7、类和对象(3)
c++的学习之路:7、类和对象(3)
19 0
|
4天前
|
设计模式 Java C++
【C++高阶(八)】单例模式&特殊类的设计
【C++高阶(八)】单例模式&特殊类的设计