Ну вот и хотелось бы написать вариант без патентных прав.
Не вдаваясь в нюансы и в подробности, код Гистерезиса для примера
Суть, выполнять несколько экземпляров программ из Scada системы с возможностью управления модулями В/В без контроллеров.Код:public class Hysteresis() { public bool EN; // входная переменная разрешающая работу программы public double inCnl; public double low; public double high; public bool mode = true; // По умолчанию нагрев = true, охлаждение = false public bool Q; // Выход гистерезиса public ushort cycle; // Задание цикла выполнения программы в мс public bool terminated = false; // Переменная остановки цикла для остановки программы и(или) для закрытия потока bool _mode; public void Run() { // Копирование входных переменных во внутренние программы bool res = false; do { if (EN) { // Копирование входных переменных во внутренние в начале цикла программы _mode = mode; // Инициализация выходных переменных если требуется. res = Q; // для возможности задания retain при перезапусках // тело программы if (_mode) { if (inCnl < low) res = true; if (inCnl > high) res = false; } else { if (inCnl < low) res = false; if (inCnl > high) res = true; } // тело программы // Копирование выходных переменных из внутренних в конце цикла программы, для некоторых необязательно, будут обработаны программой Q = res; // Задание времени цикла Thread.Sleep(cycle); } } while (!terminated); } }
Вот PID бы аналогично сделать, но доступный и каким-то образом прикрутить еще автонастройку. Типа запустил на Н-ное время, потом получил в каналах Scada соответствующие коэффициенты. Вбил их в основную программу и запустил на постоянку.




Ответить с цитированием