常见问题

一、问题排查思路

  1. 基于SDK开发的程序异常,建议先运行客户端,查看相应功能是否正常。
  2. 如果客户端正常,但基于SDK开发的程序异常,需要重点排查二次开发的程序问题。
  3. 如果客户端也异常,请参考以下典型问题和解决方法。
  4. 若根据以上排查思路仍不能解决问题,请记录问题现象或图片、客户端版本号、库名称和库版本号,联系技术支持获取支持。
    注解
    客户端版本号、库名称和库版本号可从客户端 > 帮助 > 关于中获取。

二、常见问题及解决方法

1. GigE相机问题

  1. 无法发现相机

    问题原因:防火墙可能阻断了设备通信数据,导致无法发现相机。

    解决方法:关闭所有防火墙。

  2. 打开相机失败

    1. 问题原因:相机被其他进程连接。

      解决方法:您可检查客户端内相机连接状态。若相机状态为被占用,关闭其他占用相机的程序,并确保相机处于无连接状态。

    2. 问题原因:相机心跳时间过长,而程序上一次没有执行关闭设备或者销毁设备句柄接口,直接异常退出(在调试模式下常见),导致设备一直是占用状态。

      解决方法:您需断电重启相机,或者等待相机心跳超时,从而释放权限。

    3. 问题原因:相机和工控机不在同一个网段,连接失败。

      解决方法:您可修改相机IP,使相机IP和PC在同一个网段中。在客户端中,右键单击需修改IP的设备,单选修改IP,并修改至同一网段。

      注解
      查看和修改IP的详细操作步骤,请参见客户端用户手册。
  3. 开始取流失败

    1. 问题原因:工控机内存不足。

      解决方法:在工控机中,检查系统内存和使用情况。若内存紧张, 在客户端中,进入设置 -> 缓存,适当降低取流缓存节点的取值。

    2. 问题原因:Linux系统句柄资源不足。

      解决方法:Linux下检查系统的句柄数量配置,扩大集成句柄数量限制,客户在终端中执行ulimit –n 65535。

      注意
      此命令仅对当前终端生效; 若需要对所有终端生效,需要修改系统配置文件。
  4. 调用SDK执行软触发命令时,软触发命令执行失败

    问题原因:设置触发源不是软触发。

    解决方法:调用SDK时,在执行软触发命令时,需保证相机处于软触发模式以及触发源为软触发。

  5. 相机不出图

    问题原因:相机配置异常,可能是配置了触发模式,但是未给相机触发信号。

    解决方法:检查相机触发配置,例如是否开启触发模式、触发源配置是否正确。

  6. 相机图像花屏/丢帧/多帧

    1. 问题原因:带宽不足,丢包。

      解决方法:检查带宽使用情况,避免多个相机使用1个网口,多个相机分别使用不同的网口,避免带宽使用率过高。

    2. 问题原因:网卡未开启巨帧,网络传输效率偏低。

      解决方法:检查环境的MTU配置,调大修改MTU至9000。

    3. 问题原因:网络原因导致丢包,且您在客户端设置 -> 网络中开启了自适应丢帧。开启后,当SDK检测到当前帧数据不完整时,会丢弃整帧。在网络存在堵塞等问题时,会导致持续无图。

      解决方法:关闭自适应丢帧选项,检查带宽使用情况,优化网络。

    4. 问题原因:若您使用的为线阵相机,可能由于PartialImageOutPutMode节点配置为PartialImageDiscard(残帧丢弃)。设置为PartialImageDiscard后,若触发输出的图像高度不足,图像不完整,SDK将不完整的图像丢弃。

      解决方法:检查相机PartialImageOutPutMode节点配置, 检查外部触发。

    5. 问题原因:相机配置了外部触发,但是外部触发信号数量异常,导致相机在收到信号后出图偏多或者偏少。

      解决方法:检查相机触发配置及触发源。

    6. 问题原因:调用取流接口后,未及时释放资源,导致SDK缓存空间不足,引起相机发送图像无法存储,丢帧。

      解决方法

  7. MV_CC_GetImageBuffer() 接口报错无数据

    1. 问题原因:相机没有出图,SDK接口无法获取图像。

      解决方法:检查相机配置,触发源等,确保相机出图。

    2. 问题原因:相机出图时间大于接口超时时间。

      解决方法:调整超时时间(nMsec)的值,确保调整后的超时时间大于相机出图时间。

    3. 问题原因:上层获取的图像数据没有及时释放,SDK内部无空间可用。

      解决方法:调用 MV_CC_GetImageBuffer() 拿到的图像,及时调用 MV_CC_FreeImageBuffer() 释放。

  8. HB解码 MV_CC_HB_Decode() 接口报错

    问题原因:HB图像数据不完整(SDK收到图像数据不完整),解码库对异常数据解码进行解码,失败。

    解决方法:调用 MV_CC_HB_Decode() 前,对当前帧信息中的丢包进行校验( MV_FRAME_OUT_INFO_EX 中nLostPacket字段),如果丢包,则优化网络。

  9. 相机异常掉线

    问题原因:网络阻塞,网卡休眠或者网口连接处松动。

    解决方法:检查网络带宽,设置操作系统的电源选项,使计算机不要进入睡眠状态;确认下网口是否松动,检查带宽使用情况。

  10. 编译报ld:-lMvCameraControl找不到libMvCameraControl库

    问题原因:安装完成后,当前控制台中会出现环境变量不生效的情况。

    解决方法:排查环境变量是否生效,Lib库是否存在。

    1. 确认环境变量中关于SDK的环境变量都生效了
      echo $MVCAM_COMMON_RUNENV
    2. 若执行该命令后,未打印相应的SDK路径,执行如下命令:
      cd (客户端安装路径)
      source set_env_path.sh
    3. 若正常打印相应的SDK路径,进入lib库路径,检查库是否存在。
      cd /opt/MVS/lib/64
      ls -lh

  11. 编译报ld:-lMvCameraControl 不兼容的符号(not compatable symbol)

    问题原因:SDK版本与硬件版本不匹配,或者编译链不支持。

    解决方法

    1. 确认当前的硬件环境和SDK版本。

      uname -a
      cd /opt/MVS/lib/64
      readelf -h libMvCameraControl.so

      查看SDK的头部信息和系统信息是否匹配。

    2. 检查gcc版本。在控制台输入gcc -v,获取gcc版本。若低于最低版本要求,您可升级gcc版本。详情可咨询技术支持。

      各个SDK的gcc最低版本如下表所示:

      SDK版本 gcc最低版本
      x86_64 4.8.5
      i386 4.4.7
      armhf 4.8.2
      aarch64 4.9.4
      arm-none 4.1.1

2. U3V相机问题

  1. 打开相机失败

    1. 问题原因:相机驱动未正确安装,或者被识别成其他厂商驱动。

      解决方法:检查驱动是否安装正确。您可在控制台输入“lsusb”,并在列表中查看对应设备。

    2. 问题原因:设备通过USB2.0连接线和(或)端口连接。

      解决方法:检查USB接线和接口,确保连接至3.0接口。

    3. 问题原因:相机被其他进程连接。

      解决方法:您可检查客户端内相机连接状态。若相机状态为被占用,关闭其他占用相机的程序,并确保相机处于无连接状态。

    4. 问题原因:Linux环境中libusb库版本冲突,符号异常。

      解决方法:用ldd libMvUsb3vTL.so查看当前U3V依赖的libusb路径。

  2. 取流异常/丢帧/帧号重置

    1. 问题原因:USB接口带宽不足,导致丢数据。

      解决方法

      • 在客户端中,右键设备,单击U3V传输配置,调节传输包大小
      • Linux可以使用USB脚本调节USB接口的缓存,调节图像分辨率、帧率。

    2. 问题原因:存在EMC干扰,导致流链路数据异常,流链路重置,帧号重置。

      解决方法:检查设备环境,减少静电;增加磁环提高抗干扰能力。