Synchronization between two or more real-time target machines
The following can be used to ensure all real-time target machines have the same model execution time:
- Shared memory I/O modules: A shared memory I/O module in one real-time target machine acts as synchronization master, and broadcasts a network interrupt on which the slaved real-time target machines react.
- PTP (Precision Time Protocol): This protocol can be used to synchronize real-time target machines over Ethernet.
Synchronization with external signals
A device or sensor with a clock can be used to provide the timing. For example, the IO811 Camera Link I/O module can capture a timing signal generated by a camera when an image is acquired. The complete model can then be executed based on this signal to ensure complete synchronization.
An external clock can be used to trigger the model. For example, an external PWM signal can be read by the PWM Capture Code Module running on an a Simulink programmable FPGA. The signal can be used to trigger model execution using the Interrupt Code Module.
A real-time target machine can be triggered from an external source using the DMA interrupt of the IO106 Analog I/O module.
Synchronization of different components of the same target machine
For motor control, a Simulink programmable FPGA can be used to generate PWM commands using the PWM Generation Code Module. An Analog input I/O module is then synchronized to the PWM signal to measure motor feedback. Model execution is synchronized to the PWM period to read all the collected analog samples.
For audio applications, the analog input can be synchronized with the analog output, to guarantee a fixed delay.
For time-based synchronization, Speedgoat offers the IO821 IRIG timing module which can be used to generate an interrupt to trigger a Simulink model at very precise intervals. The timing source for the IO821 can be either GPS, any dedicated timing device, or the I/O module itself (OCXO), and it can be used to synchronize other real-time target machines with IO821 I/O modules installed.