programmable logic controller (PLC)