MATRIX VISION's Hardware Real-Time Controller (in short HRTC) is a component of the FPGA which is used for time-critical I/O and acquisition control. For this reason the HRTC supersedes the use of an external PLC for camera and process control in many cases. A HRTC program consists of a sequence of operating steps, which are processed by the controller. For the creation of these sequences, you can use, for example, the GUI tool wxPropView.
Figure 1: Entering a Hardware Real-Time Controller program in wxPropView
The sample in Figure 1 shows how to achieve a defined image frequency of 10 images per second in five program steps. For more information, please have a look at the corresponding product manual chapter "HRTC - Hardware Real-Time Controller" (here mvBlueFOX).
To use the HRTC you have to set the trigger mode (TriggerMode) and the trigger source (TriggerSource) (C++ syntax):
Current trends in digital cameras are moving towards the usage of bus systems like IEEE1394, USB and Gigabit Ethernet, which are not capable of real-time. If applications with digital cameras do require complex trigger and flash control, cameras with I/O and trigger inputs like the mvBlueFOX may be used or additional separate I/O boards come into operation. When using I/O boards some uncertainty due to the latency of the bus systems still persists. Therefore it is more sensible to move the real-time relevant features into the camera and thus simplify the local system.
Possible applications (excerpt) are:
Generation of trigger signals
Synchronization of multiple cameras
Fast generation of image sequences with different flash and exposure control
Dark and light image acquisitions to generate a reference image
Exposure control on images with different wave lengths (R/G/IR)
Figure 3: Processing chain from sensor to server: the more components in-between, the bigger the friction loss.
Example: Delay the expose start of the following camera
If a defined delay should be necessary between cameras (here mvBlueFOX), the HRTC can do the synchronization work.
In this case, one camera must be the master. The external trigger signal that will start the acquisition must be connected to one of the cameras digital inputs. One of the digital outputs then will be connected to the digital input of the next camera. So camera one uses it's digital output to trigger camera two. How to connect the cameras to one another can also be seen in the following image:
Figure 4: Connection diagram for a defined delay from the exposure start of one camera relative to another
Assuming that the external trigger is connected to digital input 0 of camera one and digital output 0 is connected to digital input 0 of camera two. Each additional camera will then be connected to it predecessor like camera 2 is connected to camera 1. The HRTC of camera one then has to be programmed somehow like this:
0. WaitDigin DigIn0->On
1. TriggerSet 0
2. WaitClocks <trigger pulse width>
3. TriggerReset
4. WaitClocks <delay time>
5. SetDigout DigOut0->On
6. WaitClocks 100µs
7. SetDigout DigOut0->Off
8. Jump 0
<trigger pulse width> should not less than 100µs.
When the cameras are set up to start the exposure on the rising edge of the signal, of course is the desired <delay time> minus <trigger pulse width>. If more then two cameras shall be connected like this, every camera except the last one must run a program like the one discussed above. The delay times of course can vary.
Figure 5: Delay the expose start of the following camera