Документация по системе UniHeater содержится в файле uniheater.pdf.
Там есть краткое описание интерфейса, принципа и алгоритма работы.
Основные файлы UniHeater находится в каталоге ~~\Resource\DaqSite\UniHeater.
На рисунке изображена принципиальная схема канала нагрева UniHeater.
Принципиальная схема канала нагревателя UniHeater.
Она содержит твердотельное реле, включаемое по сигналу меандра GATE и нормально-разомкнутое электромагнитное реле, включаемое по инверсному сигналу блокировки BLK. Твердотельное реле обеспечивает регулирование температуры, а реле блокировки — безопасность работы в случае пробоя твердотельного реле, блокировки по превышению температуры или давления, по внешней блокировке или по сторожевому таймеру. Регулирование осуществляется по датчику температуры T, а блокировка - по датчиками температуры T, давления P и внешней блокировки E. Блокировка также возможна по сторожевому таймеру WDT (WatchDogTimer), который регистрирует время обновления данных от датчиков температуры и давления и блокирует канал при длительном отсутствии обновлений данных.
Окно DEMO.UNIHEATER.CTRL (префикс DEMO взят для примера и может меняться) служит для управления нагревателями:
включения и выключения, задания температуры стабилизации и вызова диалога настройки.
Окно DEMO.UNIHEATER.SETTINGS (префикс DEMO взят для примера и может меняться) служит для более детальной настройки
параметров выбранного нагревателя. Здесь, кроме целевой температуры, можно задать используемые
датчики температуры и давления, условия блокировки по температуре, давлению и сторожевому таймеру,
параметры стабилизации температуры (скважность начального нагрева Q1, коридор температур ΔT1 и скважность Q2 медленного нагрева,
коридор температур ΔT2 и скважность Q3 легкого подогрева).
Здесь также можно сохранить параметры в INI файл инициализации или загрузить их из этого файла.
Использование файла инициализации делает систему легко настраиваемой и удобной в работе.
Конфигурации UniHeater (поскольку они могут содержать разное число каналов) генерируются командными файлами. Генерируется три вида конфигурации - локальная (ctrl), DIM сервер (dis) и клиент (dic). При генерации задается обязательный префикс подсистемы (в данном случае используется префикс DEMO, но вместо него можно задать другой), а также число каналов нагревателей.
Для начала надо скопировать прикладной системы командный файл uniheater_make.cmd в целевой каталог Config прикладной системы и запустить его там (обязательно из среды CRW-DAQ) с такими аргументами:
call uniheater_make --samples DEMO - создать генераторы с префиксом DEMOУказанный вызов создаст генераторы (командные файлы) (demo_uniheater_init.cmd, demo_uniheater_make.cmd, demo_uniheater_zero.cmd) для последующей генерации конфигурации. Файл demo_uniheater_init.cmd содержит параметры генерируемой системы, demo_uniheater_make.cmd - основной генератор конфигурации, demo_uniheater_zero.cmd - "чистильщик" для удаления всех сгенерированных файлов UniHeater.
Для генерации UniHeater конфигурации вызывается (ранее созданный) генератор demo_uniheater_make.cmd.
В результате генерируются такие файлы:| Файл | Назначение |
| Config\demo_uniheater_bind.cfg | Специальный файл для привязки (bind) датчиков температуры и давления к подсистеме UniHeater. Этот файл включается в конфигурацию локальной системы или DIM сервера (но не клиента) и служит для того, чтобы подключить к входам селекторов каналов (&DEMO.UNIHEATER.SELECT_T, &DEMO.UNIHEATER.SELECT_P) кривые датчиков температур и давлений. Для каждой системы этот файл индивидуален, т.к. датчики могут быть разными. |
| Config\demo_uniheater_ctrl.cfg | Файл конфигурации для локальной (не распределенной) подсистемы UniHeater. |
| Config\demo_uniheater_dis.cfg | Файл конфигурации для DIM сервера распределенной подсистемы UniHeater. |
| Config\demo_uniheater_dic.cfg | Файл конфигурации для DIM клиента распределенной подсистемы UniHeater. |
| Circuits\demo_uniheater_ctrl.crc | Мнемосхема панели управления подсистемой UniHeater. |
| Circuits\demo_uniheater_settings.crc | Мнемосхема панели настройки каналов UniHeater. |
| Bitmaps\demo_uniheater_ctrl.bmp | Изображение основного поля для панели управления подсистемой UniHeater. |
| Bitmaps\demo_uniheater_settings.bmp | Изображение основного поля панели настройки каналов UniHeater. |
Все теги и кривые UniHeater имеют префикс DEMO.UNIHEATER (здесь префикс DEMO взят для примера и может меняться).
Например, DEMO.UNIHEATER.GATE_1 - сигнал управления для нагревателя 1.
Нагреватель с номером i (в диапазоне 1..32) включается кнопкой в теге BT_i. Целевая температура стабилизации температуры задается в теге TGOAL_i. Для регулирования температуры используются кривые температуры TREAL_i и давления PREAL_i, которые получаются на выходе селектора каналов, использующего номера датчиков температуры TNUM_i и давления PNUM_i.
Для включения нагревателей используется сигнал меандра DEMO.UNIHEATER.GATE_i, который обычно подается на твердотельное реле, а также сигнал блокировки BLK_i. Обычно инвертированный сигнал блокировки BLK_i подается на нормальноразомкнутое электромагнитное реле охранной блокировки. Это обеспечивает безопасное управление нагревом даже в случае пробоя твердотельного реле или отключения питания электронного блока управления нагревом.
Для блокировок используются пороги верхнего значения температуры TBLK_i и давления PBLK_i, сторожевой таймер WDT_i, сигнал внешней блокировки EBLK_i, а также сигнал контроля качества датчика ICTRL_i.
Все объекты (теги, кривые, окна) UniHeater имеют общий префикс вида XXXX.UNIHEATER,
например, DEMO.UNIHEATER.
Здесь и далее префикс DEMO взят только для примера, в реальных установках он, вероятно, будет другим.
Префикс XXXX обычно связан с названием установки и может содержать в имени точки, например, EGP.MAIN.
Параметры имеют полные имена вида XXXX.UNIHEATER.PPPP, где PPPP - короткое имя параметра.
Например, DEMO.UNIHEATER.GATE_1 - сигнал управления для нагревателя 1.
В именах файлов UniHeater префикс приводится к нижнему регистру, а точки (.)
заменяются на знаки подчеркивания (_).
Например, конфигурация системы DEMO.TEST.UNIHEATER будет иметь префикс файлов
demo_test_uniheater.
Таблица имен тегов UniHeater.
| Короткое Имя Параметра |
Тип Данных |
Описание Параметра | ||
| HNAME_i Heater Name |
string | Имя (без пробелов) нагревателя номер i (в диапазоне [1..32]). Например, HEAT_1. | ||
| TNAME_i Temperature Name |
string | Имя (без пробелов) датчика температуры для нагревателя номер i (до 4 символов). Например, T1. | ||
| PNAME_i Pressure Name |
string | Имя (без пробелов) датчика давления для нагревателя номер i (до 4 символов). Например, P1. | ||
| TNUM_i Temperature Number |
integer | Номер (в диапазоне 1..255) датчика температуры для нагревателя номер i. Используется в селекторе каналов &DEMO.UNIHEATER.SELECT_T для вычисления реальной температуры TREAL_i. | ||
| PNUM_i Pressure Number |
integer | Номер (в диапазоне 1..255) датчика давления для нагревателя номер i. Используется в селекторе каналов &DEMO.UNIHEATER.SELECT_P для вычисления реального давления PREAL_i. | ||
| MODE_i |
integer | Задает режим работы регулятора - 0/1 = НАГРЕВ/ОХЛАЖДЕНИЕ. | ||
| CONF_i |
integer | Задает битовые флаги для диалогов подтверждения (confirmation).
Бит 0 - запрос подтверждения на ВКЛЮЧЕНИЕ для нагревателя номер i. Бит 1 - запрос подтверждения на ВЫКЛЮЧЕНИЕ для нагревателя номер i. Бит 2 - запрос подтверждения на ЧТЕНИЕ/ЗАПИСЬ файла INI для нагревателя номер i. |
||
| HENABL_i Heater Enable |
integer | Флаг (0/1) разрешения работы нагревателя номер i. Если флаг установлен, нагреватель находится в нормальном режиме работы и реагирует на события. При нулевом флаге нагреватель заблокирован и не реагирует ни на какие события. | ||
| TENABL_i TBLK Enable |
integer | Флаг (0/1) разрешения блокировки по температуре для нагревателя номер i. Если флаг установлен, по превышению температуры возникает сигнал блокировки. При нулевом флаге блокировки по температуре нет. | ||
| PENABL_i PBLK Enable |
integer | Флаг (0/1) разрешения блокировки по давлению для нагревателя номер i. Если флаг установлен, по превышению давления возникает сигнал блокировки. При нулевом флаге блокировки по давлению нет. | ||
| WENABL_i WDT Enable |
integer | Флаг (0/1) разрешения блокировки по сторожевому таймеру (WDT - WatchDogTimer) для нагревателя номер i. Если флаг установлен, по сторожевому таймеру, в случае длительного отсутствия обновления данных от датчиков температуры и давления, возникает сигнал блокировки. При нулевом флаге блокировки по таймеру нет. | ||
| PERIOD_i Period of meander |
integer | Период меандра GATE_i в миллисекундах. Меандр (прямоугольный импульс) генерируется программой &DEMO.UNIHEATER.PULSER. Скважность меандра определяется значением QX_i коэффициента заполнения в процентах (в диапазоне 0..100%), которое вычисляется алгоритмом стабилизации температуры. Предполагается, что меандр GATE_i подается на цифровой канал (обычно твердотельное реле) нагревателя. Меандр, за счет изменения скважности, позволяет плавно регулировать температуру с использованием (относительно дешевого) цифрового канала управления нагревателем. | ||
| TGOAL_i Temperature Goal |
real | Целевая температура стабилизации для нагревателя номер i, °C. Это желаемое значение температуры, которую надо поддерживать регулятором. | ||
| TREAL_i Temperature Real |
real | Реальное (измеренное) значение температуры для нагревателя номер i. Это значение вычисляет селектор температур &DEMO.UNIHEATER.SELECT_T по показаниям подключенных к нему кривых датчиков температур и номеру датчика TNUM_i. Селектор позволяет выбирать один из датчиков температур для работы. Значение TREAL_i используется в цепи обратной связи в алгоритме регулирования (стабилизации) температуры, а также для блокировок. | ||
| PREAL_i Pressure Real |
real | Реальное (измеренное) значение давления для нагревателя номер i. Это значение вычисляет селектор давлений &DEMO.UNIHEATER.SELECT_P по показаниям подключенных к нему кривых датчиков давлений и номеру датчика PNUM_i. Селектор позволяет выбирать один из датчиков давлений для работы. Значение PREAL_i используется для блокировок в алгоритме регулирования (стабилизации) температуры. | ||
| GATE_i Gate |
integer | Сигнал (0/1) меандра для твердотельного реле нагревателя номер i. Меандр с периодом PERIOD_i миллисекунд генерирует программа &DEMO.UNIHEATER.PULSER. Он имеет переменную (вычисляемую) скважность, за счет чего позволяет плавно регулировать температуру с помощью относительно дешевого цифрового канала (например, на твердотельном реле). | ||
| BLK_i Blocking |
integer | Сигнал (0/1) блокировки для электромагнитного реле нагревателя номер i.
Блокировка может возникать по ряду условий:
Таким образом, сигнал блокировки можно описать формулой: BLK=((TREAL>TBLK) and TENABL) or ((PREAL>PBLK) and PENABL) or ((delay>WDT) and WENABL) or EBLK or not BT Предполагается, что сигнал блокировки подается на (страхующее) электромагнитное реле. Чаще всего инвертированный сигнал блокировки BLK_i подается на нормально-разомкнутое реле. Это обеспечивает автоматическое отключение питания нагревателя в случае аварийного отключения питания управляющей электроники. |
||
| BT_1 Button |
integer | Состояние (0/1) кнопки включения нагрева. При включении нагрева (BT_i=1) в канале GATE_i будет генерироваться меандр, зависящий от вычисляемого значения скважности (мощности) QX_i. При отключении нагрева (BT_i=0) выдаются сигналы GATE_i=0, BLK_i=1, что (при правильном подключении) обеспечивает надежное отключение нагрева. | ||
| ST_i State |
integer | Логическое состояние нагревателя (0..6):
|
||
| SB_i Status Byte |
integer | Байт статуса, как набор битов состояния нагревателя:
|
||
| QX_i Quantity (of power) |
real | Текущее значение мощности в процентах, от 0 до 100 %, которая вычисляется в зависимости от
измеренной температуры (TREAL_i) и целевой температуры (TGOAL_i) по следующему алгоритму:
|
||
| Q1_i Quantity 1 |
real | Значение начальной мощности нагрева, используемая в алгоритме вычисления QX_i. Это значение обычно больше чем Q2_i, чтобы быстрее выполнить нагрев на начальном этапе. | ||
| Q2_i Quantity 2 |
real | Значение нижнего подогрева, используемая в алгоритме вычисления QX_i. Это значение обычно меньше чем Q1_i но больше чем Q3_i, чтобы понизить скорость нагрева вблизи точки стабилизации. | ||
| Q3_i Quantity 3 |
real | Значение верхнего подогрева, используемая в алгоритме вычисления QX_i. Это значение обычно меньше чем Q2_i, чтобы понизить скорость нагрева выше точки стабилизации. | ||
| DT1_i Delta T 1 |
real | Нижний коридор температур для алгоритма вычисления QX_i. | ||
| DT2_i Delta T 2 |
real | Верхний коридор температур для алгоритма вычисления QX_i. | ||
| WDT_i WatchDogTimer |
real | Значение сторожевого таймера в секундах. Сторожевой таймер выдает блокировку, если в течение указанного периода времени не поступают данные по каналам датчиков температуры и давления. Это предохраняет от аварийного перегрева при разрыве связи с измерительными модулями. | ||
| TBLK_i T of Blocking |
real | Порог блокировки по температуре. Блокировка по температуре выдается, если текущая температура выше порога блокировки: TREAL_i > TBLK_i. | ||
| PBLK_i P of Blocking |
real | Порог блокировки по давлению. Блокировка по давлению выдается, если текущее давление выше порога блокировки: PREAL_i > PBLK_i. | ||
| EBLK_i External Blocking |
integer | Значение (0/1) флага внешней блокировки. Предполагается, что этот флаг блокировки выставляет другая (внешняя по отношению к UniHeater) DAQ-программа по каким-то дополнительным условиям (например, по сигналу радиационной опасности). | ||
| ICTRL_i I Control |
integer | Значение (0/1) флага ошибки датчика ("контроль тока"). Предполагается, что этот сигнал выставляет другая (внешняя по отношению к UniHeater) DAQ-программа, которая по тем или иным признакам определяет неисправность датчика температуры или давления (например, за счет контроля тока датчика). | ||
| QMEAN_i Quantity Mean |
real | Вычисленное среднее значение мощности, усредненное за последний период TSTAT_i секунд. Вычисляется как интегральное среднее кривой GATE_i, умноженное на 100 %. В режиме стабилизации эта величина позволяет оценить реальную мощность, необходимую для стабилизации при данной температуре. | ||
| TMEAN_i Temperature Mean |
real | Вычисленное среднее значение температуры, усредненное за последний период TSTAT_i секунд. Вычисляется как интегральное среднее кривой TREAL_i. В режиме стабилизации эта величина позволяет оценить точность стабилизации температуры. | ||
| TRMSD_i Temperature RMSD |
real | Вычисленное значение среднеквадратичного отклонения (С.К.О.) температуры от среднего значения, усредненное за последний период TSTAT_i секунд. Вычисляется как С.К.О. по кривой TREAL_i. Название RMSD - это сокращение от Root Mean Square Deviation. В режиме стабилизации эта величина позволяет оценить точность стабилизации температуры. | ||
| TSTAT_i Time of statistics |
real | Время накопления статистики (QMEAN, TMEAN, TRMSD) в секундах. | ||
| CLOCK Server Clock |
string | Время по часам сервера (в формате типа 2021.12.21-15:12:25). При наличии связи с сервером часы должны обновляться раз в секунду. Если часы не обновляются 5 секунд, клиент фиксирует разрыв связи. | ||
| SERVID Server Identifier |
string | Идентификатор сервера в формате pid@hostname. Например, 4512@ak-w10-vm. При разрыве связи - Server Disconnected. | ||
| SOUNDS Sound State |
integer | Флаг (0/1) разрешения звуковых сообщений при ошибках (блокировка, разрыв связи). |