Приведённый код был разработан в начале 2013 года на основе опыта предыдущих проектов для промышленной автоматизации, в основе которых лежит дозирование материалов (БСУ, АБЗ, производство цемента и пр.). Работает с Delphi XE и младше (последние наработки были на XE). Код не идеален, но позволял быстро создать рабочий прототип. К тому же он уже немного отличается (не хватает некоторых новых доработок) от того, который применялся в последнем проекте. Как-то поддерживать его или улучшать не собираюсь.
Организована работа в приложениях была так, что все процессы разделены на отдельные потоки (threads) для обеспечения максимальной независимости одних процессов от других. В частности (на примере БСУ или АБЗ) дозирование в каждый из дозаторов производится в отдельном потоке. Далее выгрузка из дозаторов происходит в отдельном потоке, причём сразу после освобождения дозатора может начаться новое дозирование в него (новый производственный цикл). Далее в работу включается смеситель, работающий также в отдельном потоке, который перемешивает материалы и сбрасывает полученную смесь. И всё это независимо от потока, отвечающего за связь с устройствами и основного потока приложения, которое отображает на мнемосхеме главной формы текущее состояние всех устройств и процессов в реальном (на сколько возможно) времени.
На данный момент компания закрыта и никто из работавших в ней не планирует заниматься промышленной автоматизацией (по крайней мере в России в ближайшее время). И я как автор кода и директор компании отдаю во всеобщее безвозмездное пользование. Прошу лишь честно отвечать, откуда код и давать ссылку, если у кого возникнут к вам вопросы.