Un autòmat programable, també conegut com a PLC (“Programmable Logic Controller”, o controlador lògic programable), és fonamentalment un ordinador, però dissenyat, tant a nivell de maquinari, com de programari, per a una missió molt concreta: el control de màquines i de processos de fabricació.
Té perifèrics especials com mòduls d’entrada capaços de manegar els senyals procedents dels sensors de la màquina, com poden ser detectors de proximitat o de pressió; mòduls de sortida capaços de controlar els actuadors de la màquina, com motors o calefactors; panells d’operació de màquina, que són la interfície entre la màquina i l’operari, presentant-li en tot moment informació sobre l’estat del procés i permetent-li que actuï sobre el procés, modificant-ne diversos paràmetres.
El disseny físic del PLC es fa de manera que pugui suportar les difícils condicions d’un entorn industrial, com vibracions i interferències electromagnètiques, proveint-lo de fixacions, blindatges, etc; habitualment són ordinadors sense disc dur, on aquest es substitueix per xips de memòria no volàtil, com Flash-EEPROM.
El sistema operatiu ha de ser capaç de donar resposta en temps real; una bona solució pot ser GNU/Linux amb les extensions corresponents, ja que, originàriament, sense aquestes, ni GNU/Linux ni Windows tenen capacitat de resposta en temps real; per a GNU/Linux es disposa de les extensions RTAI i RTLinux, que són microkernels, entre el maquinari i el kernel original del sistema operatiu, que permeten donar resposta en temps real als processos que ho requereixen.
Pel que fa al control del procés, cal un programari que permeti introduir, veure i modificar el programa de control del procés en un dels llenguatges normalitzats per a PLCs, definits a l’estàndard IEC-61131-3; una bona opció en programari lliure és ClassicLadder, que permet la utilització dels llenguatges gràfics d’alt nivell LD (Ladder Diagram, o diagrama de contactes) i SFC (Sequential Function Chart, també conegut com a GRAFCET, o gràfic de control d’etapes i transicions).
Oriol López