Hello,
Here are three methods to improve the rate of CAN messages transmission:
1) If you want to trigger the transmission of two CAN messages in the same Gpt_PitNotification 1ms notification, which is the case in model provided in your attachment, you could modify the Pdu ID, but in such a way that one Can_Write block has the value 0 and the other one 1. It is important that those blocks that must transmit at the same moment in time have different Pdu IDs.
This, as you mentioned, will queue the two messages to be transmitted when the CAN bus is free.
Since the Step time of your model is also 1 ms, I would strongly recommend assigning another Pdu ID to the Can_Write that is located in the main Simulink canvas of your model, under Can_module.
2) A better way, I would say, is to trigger the transmission of the first queue message in the Gpt_PitNotification and then transmit the rest of the queue in the CanIf_TxConfirmation, block, which is already present in your model but not actually used.
This means that you should keep only one Can_Write block in the Gpt_PitNotification IRQ Handler, with Pdu_ID value e.g. 0 for that first message, and then in the CanIf_TxConfirmation IRQ Handler create a logic for transmitting the rest of the queue.
By doing so, whenever a transmission finished notification callback is executed, another transmission can be immediately triggered without wasting any time.


In the TX_Complete_Event function you can also implement that logic to check the Pdu_ID, to make sure that you are in the right interrupt for transmitting the desired next message in queue.
3) For each CAN message you could use another CanHardwareObject, which I see you have already plenty configured in the S32 Configuration Tool. Important thing here is to choose those who use interrupt, not polling, as processing type:
.