Recently, I was at a customer site for a project startup. As I watched the operators going about their day, interacting with both our newly supplied human-machine interface and some preexisting screens that we hadn’t developed, one incident really caught my attention. An operator pressed a button on screen to open a valve. Nothing. He pressed again. Nothing. After a third attempt with the same results, he walked over to the valve and opened it by hand.
The operator went on to explain that this was a relatively common occurrence—the button had always seemed to be temperamental. To see how this button actually went about opening the valve, I began investigating their code. It turned out there were six different conditions, in which at least one had to be met for the button to have any effect. I could find nothing on the screen, however, that gave any indication this was the case. Whether the conditions were met or not, the button looked and behaved exactly the same way. When it didn’t work, there were no messages indicating why. As far as an operator could tell, it was just a software glitch.
Before leaving the site, I met with the operators to get their feedback on the newly installed system. One of the things that they appreciated most was how clear everything was. This was done in a few ways. On the buttons themselves, we put indicators so the operators would know when they could be used or not.