Фреймворк PLC.JS реализует концепцию модульной автоматизации, предоставляя фундаментальные компоненты для построения систем управления в соответствии с онтологией стандартов ISA-88/ISA-95.
Functional Blocks (FB) — стандартизированные программные модули, инкапсулирующие специализированные алгоритмы управления и обработки сигналов. Каждый функциональный блок представляет собой автономный компонент с собственной логикой выполнения и внутренним состоянием, сохраняемым между циклами обработки.
В отличие от Process Objects, которые абстрагируют технологические сущности и бизнес-процессы, Functional Blocks ориентированы на реализацию низкоуровневых алгоритмов управления. Process Objects оперируют доменными понятиями (оборудование, производственные единицы), тогда как Functional Blocks обеспечивают математические и логические преобразования сигналов.
TON (Timer ON Delay) — классический таймер задержки включения, соответствующий стандартному поведению промышленных контроллеров. Реализован классом PlcjsTimer, предоставляющим полный контроль над временными характеристиками и состояниями таймера.
PID (Proportional-Integral-Derivative) — алгоритм пропорционально-интегрально-дифференциального регулирования для задач точного управления технологическими параметрами. Класс PlcjsPID обеспечивает работу в реальном времени с настраиваемыми коэффициентами и ограничениями. В регуляторе реализованы такие популярные алгоритмы как: безударный переход с ручного на автоматический режим, защита от windup.
В рамках философии PLC.JS как фреймворка, построенного на современном языке программирования, реализован минимально необходимый набор функциональных блоков. Такой подход исключает избыточность и предотвращает усложнение архитектуры, позволяя разработчикам эффективно использовать богатые возможности базового языка для реализации специализированной логики.
Ограниченный набор стандартных блоков обеспечивает баланс между готовыми решениями для типовых задач и гибкостью для реализации сложной предметно-ориентированной логики средствами современного программирования.