trigger io component changes based on input from etherCAT
changed rate estimator to only update every 'idle_time' microseconds