En mi experiencia, he visto que tanto los microcontroladores como los PLC se utilizan en entornos industriales.
El factor determinante es "¿Quién va a respaldar / mantener / modificar el equipo después de su puesta en servicio?"
En los entornos industriales, se dedica más tiempo a leer (ver la localización de fallas) el código que a lo que se gasta en escribirlo. Esto no significa que esté tratando de encontrar problemas en el código, sino que está utilizando el código para ayudar a diagnosticar problemas en el campo. A menudo, las personas que deben realizar este tipo de detección son electricistas, que se sienten más cómodos leyendo los esquemas eléctricos que los códigos en un formato de texto (por lo tanto, la popularidad de los "lenguajes de programación" de tipo gráfico, como la lógica de escalera). En sitios más grandes, con ingenieros de automatización dedicados, esto se convierte en un factor menos importante.
Muy relacionados con lo anterior están los problemas de inercia histórica para una solución particular. Los antecedentes técnicos del personal y la experiencia previa con hardware / proveedores llevan a requisitos de requisitos previos para proyectos que generalmente se organizan en torno a líneas como ("ya usamos el proveedor X y tenemos repuestos a mano: cualquier cosa implementada en el futuro debe usar X-YZ). ").
También está relacionado, y se está convirtiendo en un problema en los últimos años, "Cómo se comunicará este equipo con el resto de mi equipo / fábrica / sitio / empresa". Por lo general, esto se resuelve previamente para PLC y es un problema mayor para las soluciones de microcontrolador de bajo volumen.
He visto microcontroladores implementados donde se justificaba una solución muy personalizada (pero generalmente solo se implementa como un proyecto-proveedor y es respaldada por el proveedor). Las razones normalmente están relacionadas con la velocidad de ejecución o la necesidad de tener el hardware y el código muy cerca (no hay posibilidad de retrasos en la comunicación y el requisito de separar el proceso crítico de otro código no relacionado)