Here are a few ideas based on personal experience developing and deploying a downtime reporting system. The facility already had a plant-wide production monitoring system in place, so it was easy to add a few new tags for each workstation to track downtime.
For many of the workstations, the PLC code used the model of a state machine, so downtime was defined by no change in the state number in five minutes. Each workstation had its own HMI, so when the PLC determined it was down, a screen popped up on the HMI that could not be closed until the operator touched a button to indicate the reason for the downtime.
Don't give them too many reasons. Initially the supervisors wanted far too many downtime reasons. I was able to persuade them to limit the choices because the HMIs were only 6" screens and I didn't want to make the buttons too small. That argument was more successful than arguing that the operator's can't be expected to make fine distinctions between similar reasons.
Don't make one of the reasons "Other". A few weeks after deploying the reporting system we learned that over half of the downtime was due to "Other".
The downtime reasons we settled on were, Scheduled Maintenance, Equipment Failure, Starved (Upstream equipment problem), Blocked (Downstream equipment problem), Setup, Quality, Break/Lunch, plus one or two workstation-specific reasons.