The accesses to -KEC1 always time out on the attempt to update the
output values. We noticed that this is related to the timing between
the reading of the inputs and the following write to the outputs.
Fix -KEC1 accesses by waiting before sending the next request to the
board after receiving the reply for the previous one.
When one device fails, this should not influence updates of the other
devices. Thus, early return was the wrong strategy here.
Instead, when communication with a device fails, skip the process data
update and continue with the next device.
We noticed huge load spikes with the latest changes. This was caused
by the modbus goroutine blocking the entire daemon for long periods of
time while doing its data transfer.
Fix this by only holding the lock while performing data accesses.