.. _limaBaslerCamera: **************** LimaBaslerCamera **************** In addition to expected parameters offered by the `LimaDevice` class, `LimaBaslerCamera` features a few more. .. _limaBaslerCameras-parameters: LimaBaslerCamera expected parameters ==================================== Network and stream parameters ----------------------------- * cameraIp: the IP number or hostname of the camera. You can connect to the camera also by using its serial number, eg "sn://21803915". This is a **mandatory** parameter. * interPacketDelay: the delay between the transmission of each packet (ticks). It should be as small as possible. Try 500 for GigE network, 12586 for 100Mb network. * frameTransmissionDelay: the delay before image transmission on the Ethernet. Setting different values on synchronous cameras connected to a single server can prevent concurrency issues. * packetSize: The packet size. Should be as large as possible. Try 8192 if jumbo frames are enabled on the network (MTU=9000), use 1444 otherwise. * socketBufferSize: the socket buffer size. Should be automatically set by pylon. TriggerMode options ------------------- The trigger modes available in Lima for the Basler camera are four. Here is the explanation of the parameters which will be set by selecting one of those modes. * IntTrig: * TriggerMode = Off * ExposureMode = Timed * AcquisitionFrameRateEnable = True * IntTrigMult: * TriggerMode = On * TriggerSource = Software * AcquisitionFrameCount = 1 * ExposureMode = Timed * ExtGate * TriggerMode = On * TriggerSource = Line1 * AcquisitionFrameRateEnable = False * ExposureMode = TriggerWidth * ExtTrigMult * TriggerMode = On * TriggerSource = Line1 * AcquisitionFrameRateEnable = False * ExposureMode = Timed Trigger Activation ------------------ Possible options (might not be available for all models) are: * Rising Edge * Falling Edge * AnyEdge * LevelHigh * LevelLow Gain Control ------------ The camera gain will be automatically adjusted by setting `autoGain` to `True`. It can also be manually adjusted by setting `autoGain` to `False` and selecting a value for `gain`, between 0 and 1. 0 corresponds to the minimum `RawGain` value, 1 to the maximum, according to .. math:: RawGain = RawGainMin + gain \cdot (RawGainMax - RawGainMin) Pixel Format ------------ It can be changed by setting the Image Type property: * Bpp8 (i.e. 8 bits-per-pixel) * Bpp10 * Bpp12 * Bpp16 Acquisition Frame Count ----------------------- This parameter is used to set the number of frames acquired in the multi-frame acquisition mode. Temperature ----------- The camera temperature (available only on some models). .. _limaBaslerCameras-setup: Camera Setup ============ In order to have good performance, especially when multiple cameras are controlled on a single server, you should set the following parameters: * `Inter-Packet Delay`: increasing this parameter will slow down the acquisition, but it will improve its stability, especially when multiple cameras are operated on the same control host. Therefore it is recommended to set it to the maximum value allowed by the sensor size and the desired frame rate. * `Packet Size`: it should be set to the maximum value allowed by the network interface, for example 1444 in case of standard MTU size (1500), 8192 in case of "jumbo frames" (MTU = 9000). * `Frame Transmission Delay`: the values should differ for the various cameras controlled by the same control server. This way, they will send the images at slightly different times and concurrency issues will be alleviated. .. _limaBaslerCameras-troubleshooting: Troubleshooting =============== The camera is in UNKNOWN state ------------------------------ This means that the Karabo device cannot connect to the camera. You should check that * the camera is connected to the network, * and it is powered. A possible way to verify that the camera is online is to login to the control server and use the ``ping`` command: .. code-block:: bash ping Camera power can often be controlled via a Beckhoff digital output device, with the same domain name as the camera, but different type and member. For example to the camera ``SCS_XTD10_IMGPI/CAM/BEAMVIEW`` corresponds the Beckhoff device ``SCS_XTD10_IMGPI/DCTRL/CAM_POWER``, which can be used to power on and off the camera. If the camera is online but still in UNKNOWN state, it is likely that * another client is already connected to it. A client can be * another Karabo device, * PylonViewer, * eBUSPlayer, * ... If you cannot find out who is keeping the connection busy, you can power cycle the camera and this will kick-out anybody who was connected. The camera is ACQUIRING but `Camera Frame Rate` is 0 ---------------------------------------------------- If you are in external trigger mode (`ExtTrigMult`, `ExtGate`), it is possible that the camera receives no trigger signal. You can test it by setting the trigger mode to internal (`IntTrig`). It has been reported in some cases that a camera stops sending images after a while. The reason is under investigation but not understood yet. In those cases is normally enough to stop and re-start the acquisition from the Karabo device. In order to mitigate the issue, a watchdog device (`cameraShaker`) can be deployed, which will automatically restart the acquisition in such cases. `Camera Frame Rate` is not 0, but no images are visible in the GUI ------------------------------------------------------------------ Check that in the `Output` node the `hostname` is set correctly. If the control server has a 10 GbE interface dedicated to the GUI server, the IP address of this interface should be set in `output.hostname`. If this is set correctly, it could be that the GUI server is malfunctioning. In case there is a second GUI server available for the topic, try to switch to that one. `Camera Frame Rate` is not 0, but `Output Frame Rate` is 0 ---------------------------------------------------------- This means that the Karabo device receives data, but some other device is connected to one of its output channels, and is blocking. The list of open connections is available in each output channel. You should check who is connected, try to find out its health state, and restart what needed. `Output Frame Rate` is not 0, but the DAQ does not save any data ---------------------------------------------------------------- Check that in the `DAQ Output` node the `hostname` is set to the IP address of the 10 GbE interface dedicated to the DAQ. .. _limaBaslerCameras-issues: `Camera Frame Rate` is Smaller than Expected -------------------------------------------- If you observe that the acquisition rate is smaller than expected, for example smaller than the trigger rate, the reason could be that the settings are not optimal. In this case you could find error messages like [2019/09/19 11:40:13.07e638] 88c2a700 \*Camera\*_AcqThread::Camera::threadFunction (BaslerCamera.cpp:657)-Error: No image acquired! Error code : 0xhex= e1000014 Error description : The buffer was incompletely grabbed. This can be caused by performance problems of the network hardware used, i.e. network adapter, switch, or ethernet cable. To fix this, try increasing the camera's Inter-Packet Delay in the Transport Layer category to reduce the required bandwidth, and adjust the camera's Packet Size setting to the highest supported frame size. Please refer to the :ref:`limaCameras-deployment` and `Setup `_ Sections for the needed settings. Connection to the Camera is Lost During Acquisition --------------------------------------------------- Also this could be caused by sub-optimal settings, as described in the `previous `_ Section.