When you use the XNET Write with Single Point mode, it updates the value which will be transmitted according to the timing specified in the XNET database (DBC file). If you call multiple writes before the frame has been transmitted, only the last written value will go out over CAN.
If you look in the XNET help files under NI-XNET API for LabVIEW -> Sessions -> Session Modes, you'll find the information there, including an example of how it works.
In your example - if you've got a loop timing of 100ms but your cyclic message time is 1s, then you will only transmit the last 'written' value over CAN when the message cycle time comes around. If your loop timing is 100ms but your message time is 10ms, then you will transmit the same value 10 times (approximately...windows timing and all that).
In essence, your CAN frame transmission keeps running in the background according the timing you've specified in the DBC file but you can then update the values that are transmitted asynchronously using the Write Single-Point VI.
If you want to ensure the values transmitted are updated each time - you need to use the stream or queued mode and buffer your CAN frames for outputting. That, or you need to use an RT target which can update the data at a deterministic rate.
LabVIEW Champion, CLA, CLED, CTD
(blog)