ПО промышленных установок обычно собирается как из конструктора:
SCADA, среда разработки для ПЛК, драйверы для обмена с
оборудованием или OPC-сервера. С одной стороны, там устоявшиеся
подходы, с другой в зависимости от масштаба и серьезности задачи
вариаций много. Журнал событий обычно уже реализован в SCADA, надо
только разобраться как использовать, изредка бывает и на уровне
ПЛК, когда ПЛК сильно интегрирован с конкретной SCADA. Базы
рецептов могут быть на уровне ПЛК, могут
быть на уровне базы данных SCADA, могут отсутствовать. Разделение фронтэнд-бекэнд очевидное, при желании можно можно реализовать всю логику в SCADA, оставив только безмозглый ввод-вывод без ПЛК, но это плохая идея. Для тестирования на моделях есть всякое ПО разной степени серьезности, я в свое время использовал программные симуляторы ведомых устройств с самописными скриптами на C и VBS.
В общем, тема очень обширная, материалов у меня накоплено несколько десятков гигабайт. Книги, которая бы достаточно полно все охватывала не видел. Книгу Петров И.В. Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования. уже прочитали?