CAN bus communication. Issue with two slaves having same CAN ID
Offsets, as used in for example CANopen, are based on CAN identifiers (called &quot;COBID&quot; in CANopen). You'll have an identifier such as for example 0x200 + node id. So one node with id 1 sends data with 0x201 identifier and another with node id 2 sends it with 0x202 and so on. This enables up to 127 nodes to send the same data without caring about timing between each other.
Also, in case of CANopen specifically, you can change COBID of certain PDOs by SDO accessing the PDO communication settings in the OD, preferably during the pre-operational phase at start-up.
The only other option is time multiplexing, where you ensure that two nodes never send the same data at the same time. One way to achieve this is to have a supervisor node provide a sync message that is sent cyclically once per 10ms/100ms etc. Then each node may send its data with a time offset from the point where it receives the sync. Such systems must be fully deterministic though, you cannot afford some higher priority message occupying the bus and delaying these &quot;time offset&quot; messages. You also need to calculate the transmit time for all frames on the bus given the baudrate.