И еще есть одна важная вещь. Может быть и самая важная.
Никакого ООП в аквакомпьютере. Он вообще не должен знать чем занимаются датчики и что с ними делать. Он должен просто тупо идти по матрице, состоящей из булевой логики, RS-триггеров, счетчиков и таймеров. Программа должна быть совершенно примитивна, работать быстро и надежно. Весь интеллект должен быть в программе на PC. То есть когда человек на PC в удобном интерфейсе выбирает что делать с каким датчиком, то PC просто меняет матрицу в контроллере.
Собственно говоря так работают и всякие сименсы. Контроллер ничего не знает - знает только TIA Portal на PC. Он генерит матрицу для контроллера и кладет ему в память.
Все верно. Так работает моноблок.
В случае модульной системы сам модуль идет по матрице, производит определенные измерения (и передает их по запросу на центральный блок) или действия (по команде с центрального блока). При этом модули обладают определенной степенью "интеллекта" и способны выполнять определенные простейшие функции без центрального блока.
К центральному модулю может подключаться дисплей, клавиатура, инет для настройки параметров всей системы, а также для обновления ПО и драйверов для новых модулей через инет (или вручную с флешки).
Ну хорошо, сделали мы центральный модуль без операционки ....
Подключаем новый, только что разработанный кем-то и купленный нами модуль. Скачали к нему драйвера .... как их подключить к программе центрального компа ? Уже нужна файловая система, USB вход, дисплей - клавиатура - мышка (тачскрин, вебинтерфейс ....).
Или я хочу вести логи температуры и рН для дальнейшей обработки на "большом" компе. Проще писать их в стандартный файл, чем городить передачу потока данных через порт.
Идея моноблока с низкоуровневым ПО была актуальна когда просто не было достаточно маленьких и дешевых компьютеров, способных работать под операционной системой. В наше время это вообще не проблема 
Когда-то давно я подобные контроллеры делал на простой логике - сейчас ставлю Атмегу и не маюсь с пайкой кучи микросхем. Да и дешевле выходит, и возможные ошибки можно исправить без перепайки платы 
Ну и немаловажный аргумент - твоя программа будет "закрытой" для разработки, т. к. мало кто сейчас умеет писать программы низкого уровня. Следовательно никакого стороннего творчества данная реализация не предусматривает. Т.е. ты пытаешься сделать проект чисто под себя, на основе уже существующих собственных наработок. Но это эволюционный путь 
Я же предлагаю брать все стандартное и широко распространенное, и только сами модули будут "несерийными".
При таком подходе любой программист хорошего уровня может написать программу для центрального модуля на любом языке для любой операционной системы, т. к. ему не нужно знать НИЧЕГО о портах, булевой алгебре (а ну ка спроси, кто сейчас вообще знает, что такое булевая алгебра
), RS-триггерах (это вообще для 99% программистов полная непонятка) и т.д. Все что ему нужно знать, это протоколы обмена данными / командами с модулями и знать имя модуля, которое присвоила ему система при подключении модуля. В-общем система P-n-P винды. На фига мне знать КАКОЙ там тип клавиатуры и ее порт ? У меня есть УСТРОЙСТВО CON: к которому я буду обращаться 
.................
Можно конечно поставить центральный блок с примитивной программой низкого уровня (матрицей), задачей которой являются межмодульные связи и взаимодействие, в память которого загружается готовая матрица после подключения нового модуля и настройки его взаимодействия с остальными, только зачем ?
Степень надежности это не повышает, а вот сложностей добавляет. Подобное реализовано в автомобильных ЭСУД (Электронная Система Управления Двигателем). Там есть программа и есть карты калибровки (та самая матрица), но ЭСУД не предполагает подключения новых устройств, только заранее предусмотренных. Хотя бы потому, что изменится объем матрицы калибровки. Для калибровки ЭСУД нужна не только программа, которая служит визуальным интерфесом, но и так называемые "карты калибровки", для каждого типа ЭСУД (версии ЭСУД) свои. Короче геморрой еще тот. Производитель выпустил новую версию ЭСУД и старые карты уже неправильно считывают калибровку (температура включения вентилятора охлаждения двигателя -(минус)55 грд
)
Ну и этот центральный модуль все равно должен будет работать уже с программой настройки в режиме реального времени, хотя бы для калибровки датчиков и проверки работоспособности системы (режим "отладки" матрицы).
Такое реализовано у меня в машине
Есть ЭСУД, а есть бортовой компьютер, который визуализирует данные от ЭСУД и позволяет в режиме реального времени менять НЕКОТОРЫЕ незначительные параметры (менять основные сложно, там даже не 3D, а 10D зависимости - УОЗ (угол опережения зажигания) зависит от качества бензина, температуры наружного воздуха, температуры двигателя, количества поступающего в двигатель воздуха, оборотов, уровня датчика детонации, показаний лямбда-зонда и еще чего-то там
) Если ты хочешь что-то изменить в картах калибровки, то ЭСУД нужно снимать с машины (можно не снимать, но есть риск ....) и перепрошивать его новой прошивкой.