Preface - I don't know of any way to program or download a PLC without using the associated programming software. Industrial PLCs are not cheap and generally not open source (that is, there is no API or other documentation on how to implement your own version of their programming software).
As mentioned in an answer your earlier question, the changes you are allowed to make without stopping the controller are generally limited to what is referred to as a "word for word" change, which means you can typically only replace one hard-coded constant for another.
So, to your questions:
Like I mention above, you're generally changing one address with one address, or the contents of one register with one new register. There can be a list of changes like this, but that's the scope of what you're allowed to do. Changing logic, or the flow of the PLC, usually requires restarting. The changeover happens at the end of downloading, but I don't know this happens or what the trigger looks like; as I mentioned there's no explicit definition (that I've seen) of what the packet structure looks like for downloading software.
I don't know what you mean when you call "logic scan" and "scan cycle" as two different terms. I don't think the change would happen mid-scan, but I could be wrong.
I don't know if there could be a delay. Simple PLC code I work on has a sweep time of 10-15ms, complex PLC code has a sweep time of 30-40ms. This is a negligible amount of time relative to the amount of time to download new code, even if it IS just a word-for-word change. That word-for-word change may take 2-3 seconds to download, but that's maybe 100 cycles of the PLC.
I don't know what you're trying to do, but there shouldn't be any time where you're relying on downloading and re-downloading PLC code down and expecting to get timing accuracy down to the individual sweep cycle. Get an I/O card and toggle a switch, or write a message and toggle a bit, etc., if you need timing that close.
More background on what you're trying to do would be helpful. From your questions, "I'm looking for timing relationships between the networking data and the updated PLC logic" - again, I don't know WHY you care about this, downloading is a horrible way to switch code (that's what a
switch statement is for, or a state machine), but what I would do would look like this pseudo-code:
loopCount = loopCount+1;
myConst = 5;
You continuously read messages coming off the PLC. Each message gets 1) a number that increments every sweep, and 2) a number that is fixed.
You update the PLC code to change myConst from 5 to 6 or anything else, download the change, and see how many cycles elapse between when you push download and when
myConst changes. You can have multiple constants, change them all, and see if they all update simultaneously or if
loopCount increments between updates.
But again, seriously, don't expect to ever be able to reliably download logic to the individual sweep precision.