MATLAB: Synchronizing 2 Simulink Models on 2 different machines via UDP

communicationsimulinkSimulink Desktop Real-Timesynchronizationudp

Hi, I'm trying to sinchronize 2 simulink models in 2 different machines to divide the work load of each. So far this is a test and my model is a simple mass, damper, spring moving only on the x-asis connected to a PID controller. I change the reference point with a joystick and visualize via VR Sink. Everything works fine if ran in one machine.
So what I did was divide the model so I put the PID controller in one machine, and the Plant with the physics in another machine and connected the models via UDP. If I start the models at the same time (by clicking the run button on both machines at the same time) the model works excellent with what appears to be zero delay.
The problem arises when I start the model in one machine first, and then, few seconds later I start the other. If I do this, the mass behaves like it's on crack and flyes everywhere. I believe this is because there is old data stored in some type of buffer somewhere and the model that starts late gets old data feed to it and it never schincronizes again; however I am not sure of this because in theory UDP is a best effort protocol and old data should be disregarded, right?
Anyways, some more useful information:
Ran on Matlab 2012a.
The model is compiled as a "Real-time windows target" and I use the Analog Input to get data from the joystick and Package output/Input to send/receive UDP data between machines.
From one machine I send the output from the PID controller and the other sends position data from the Physics Plant, so both computers send data to the other.
I did the experiment using a simple wireless router, and also tried Wireless Ad-Hoc connection to make sure the router wasn't causing the problem.
I appreciate any help given. Thanks!

Best Answer

Ok, I found a good workarround my problem. Like Mr. Roberson said, the old packages were stored somewhere in the receiving computer and were not disregarded even thou the program was nor running yet.
So what I did was to consume those packets faster than they were being sent, by changing the sample time on the Packet Input block to be 100 times faster