Справка по UniHeater


UniHeater (Universal (Unified) Heater) - универсальная (унифицированная) система для управления нагревателями в пакете CRW-DAQ. Система UniHeater может с хорошей точностью регилировать и стабилизировать температуру, содержит систему блокировки по температуре, давлению, сторожевому таймеру и внешнему сигналу. Эта система часто применяется в исследовательских установках, связанных с газовыми комплексами. В текущей версии возможно использование до 32 каналов управляемого нагрева.

Документация по системе UniHeater

Документация по системе UniHeater содержится в файле uniheater.pdf. Там есть краткое описание интерфейса, принципа и алгоритма работы.
Основные файлы UniHeater находится в каталоге ~~\Resource\DaqSite\UniHeater.


Принципиальная схема канала UniHeater

На рисунке изображена принципиальная схема канала нагрева UniHeater.

Принципиальная схема канала нагревателя UniHeater.

Она содержит твердотельное реле, включаемое по сигналу меандра GATE и нормально-разомкнутое электромагнитное реле, включаемое по инверсному сигналу блокировки BLK. Твердотельное реле обеспечивает регулирование температуры, а реле блокировки — безопасность работы в случае пробоя твердотельного реле, блокировки по превышению температуры или давления, по внешней блокировке или по сторожевому таймеру. Регулирование осуществляется по датчику температуры T, а блокировка - по датчиками температуры T, давления P и внешней блокировки E. Блокировка также возможна по сторожевому таймеру WDT (WatchDogTimer), который регистрирует время обновления данных от датчиков температуры и давления и блокирует канал при длительном отсутствии обновлений данных.


Интерфейс пользователя UniHeater

Окно 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

   Все объекты (теги, кривые, окна) 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. Блокировка может возникать по ряду условий:
  • TREAL_i > TBLK_i - превышение температуры при наличии флага TENABL_i
  • PREAL_i > PBLK_i - превышение давления при наличии флага PENABL_i
  • задержка > WDT_i - сторожевой таймер при наличии флага WENABL_i
  • EBLK_i - внешний флаг блокировки (устанавливается внешней программой по другим условиям)
  • BT_i - отключение кнопки нагрева (страхующая охранная блокировка)
Включение сигнала блокировки при отключении кнопки нагрева (BT_i=0) (страхующая охранная блокировка) обеспечивает отключение нагрева (электромагнитным реле) даже в случае пробоя твердотельного реле (управляемого сигналом GATE_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):
  1. UniHeater BT_i=0 view. Нагреватель отключен (BT_i=0) и не заблокирован ни по одному из условий блокировки (TBLK, PBLK, EBLK, WDT).
    Состояние сигналов: BT_i=0, QX_i=0, GATE_i=0, BLK_i=1.

  2. UniHeater BT_i=1 view. Нагреватель включен (BT_i=1) и не заблокирован ни по одному из условий блокировки (TBLK, PBLK, EBLK, WDT),
    но при этом QX_i=0, т.е. нагрев в данный момент не идет (текущая температура выше целевой температуры).
    Состояние сигналов: BT_i=1, QX_i=0, GATE_i=0, BLK_i=0.

  3. UniHeater BT_i=2 view. Нагреватель включен (BT_i=1) и не заблокирован ни по одному из условий блокировки (TBLK, PBLK, EBLK, WDT),
    и при этом QX_i>0, т.е. нагрев в данный момент идет (выдается сигнал меандра).
    Состояние сигналов: BT_i=1, QX_i>0, GATE_i=MEANDER( / \ / \ ), BLK_i=0.

  4. UniHeater BT_i=3 view. Нагреватель включен (BT_i=1) и не заблокирован ни по одному из условий блокировки (TBLK, PBLK, EBLK, WDT),
    но при этом установлен флаг ICTRL_i=1, т.е. (вероятно) обнаружен обрыв термопары.
    Сигнал ICTRL_i является внешним сигналом, который может выставлять другая программа, контролирующая состояние датчиков температуры.
    Состояние сигналов: BT_i=1, QX_i=0, GATE_i=0, BLK_i=0.

  5. UniHeater BT_i=4 view. Нагреватель номинально отключен (BT_i=0) и заблокирован по одному из условий блокировки (TBLK, PBLK, EBLK, WDT).
    Состояние сигналов: BT_i=0, QX_i=0, GATE_i=0, BLK_i=1.

  6. UniHeater BT_i=5 view. Нагреватель номинально включен (BT_i=1), но заблокирован по одному из условий блокировки (TBLK, PBLK, EBLK, WDT).
    Состояние сигналов: BT_i=1, QX_i=0, GATE_i=0, BLK_i=1.

  7. UniHeater BT_i=6 view. Это состояние возникает при разрыве связи удаленного DIM клиента с DIM сервером.
    Состояние сигналов: не определено до восстановления связи.

SB_i
Status Byte
integer Байт статуса, как набор битов состояния нагревателя:
  1. BT - кнопка нагревателя включена.
  2. GATE - сигнал управляющего меандра для твердотельного реле регулирования нагрева.
  3. BLK - состояние блокировки (общее).
  4. BLK - сигнал блокировки для подачи на электромагнитное реле блокировки.
  5. EBLK - состояние сигнала внешней блокировки.
  6. ICTRL - состояние сигнала контроля качества датчика.
  7. TWDT - состояние сторожевого таймера температуры T.
  8. PWDT - состояние сторожевого таймера давления P.
  9. TBLK - выполнено условие блокировки TREAL > TBLK.
  10. PBLK - выполнено условие блокировки PREAL > PBLK.
  11. QXON - выполено условие QX > 0 (идет нагрев).
  12. NETW - состояние канала связи с DIM сервером (в случае удаленного клиента).
QX_i
Quantity (of power)
real Текущее значение мощности в процентах, от 0 до 100 %, которая вычисляется в зависимости от измеренной температуры (TREAL_i) и целевой температуры (TGOAL_i) по следующему алгоритму:
  • При TREAL_i < TGOAL_i-DT1_i выдается значение QX_i = Q1_i.
  • При TGOAL_i-DT1_i < TREAL_i < TGOAL_i выдается значение QX_i = Q2_i.
  • При TGOAL_i < TREAL_i < TGOAL_i+DT2_i выдается значение QX_i = Q3_i.
  • При TREAL_i > TGOAL_i+DT2_i выдается значение QX_i = 0.
Вычисленное значение используется для формирования меандра GATE_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) разрешения звуковых сообщений при ошибках (блокировка, разрыв связи).