Hi @Poley ,
I updated your model to use blocking FCAN Send blocks to send the CAN messages, and only one MB, 31.
And I got these results in PCAN-View, the CAN analyzer that I am using:

The cycle time tells us that the messages are sent each 103 milliseconds, not 100 ms. I will try to explain why it is so.
Simulink is using the configured solver step as the base rate for all timings in your models. In your model the solver step is set to 0.001 seconds or 1 ms, which means that your model will be executed each 0.001 seconds and that the duration of each executed step doesn't exceed this value. So to trigger your subsystems each 100 ms, Simulink is using a counter that is incremented on each executed step and when it reaches100 it is reset to 0. Each time your counter is 0 your subsystems that send CAN messages are executed.

From the CAN message trace we can approximate how much it takes to send the CAN messages, and it is seems to be around 3.6 ms.
last message timestamp - first message timestamp = 2.6661 sec - 2.6625 = 0.0036 sec or 3.6 ms
So your execution of the model when the CAN messages are send takes at least 3.6 ms instead of 1 ms, the expected duration. Now if you do 3.6 ms + 99 steps each taking 1 ms you get 102.6 ms. Which is almost the cycle time measured by PCAN-View.
If you want to sent the CAN messages every 100 ms, you will have to use the PIT interrupt to trigger your subsytems each 100 ms exactly.
Regards,
Paul