Appearance
PID
ПИД-регулятор связывает аналоговый вход (источник рассогласования) с аналоговыми выходами увеличения и уменьшения; границы воздействия задаются в процентах.
Настройки
ts
export const PIDObjectSettingsSchema = z.object({
settings: z.object({
/** Начальное состояние регулятора (UNDEFINED/ACTIVE/UNACTIVE). */
Value: z.nativeEnum(EPIDObjectInitialValue),
/** id аналогового входа (источник рассогласования). */
AnalogInput: z.string(),
/** id аналогового выхода для увеличения. */
AnalogOutputInc: z.string(),
/** Минимальное воздействие на увеличение (в %). */
IncMinOutput: z.number(),
/** Максимальное воздействие на увеличение (в %). */
IncMaxOutput: z.number(),
/** id аналогового выхода для уменьшения. */
AnalogOutputDec: z.string(),
/** Минимальное воздействие на уменьшение (в %). */
DecMinOutput: z.number(),
/** Максимальное воздействие на уменьшение (в %). */
DecMaxOutput: z.number(),
/** id дискретного выхода для увеличения. */
DigitalOutputInc: z.string(),
/** Порог срабатывания дискретного выхода на увеличение. */
DigitalOutputIncThreshold: z.number(),
/** id дискретного выхода для уменьшения. */
DigitalOutputDec: z.string(),
/** Порог срабатывания дискретного выхода на уменьшение. */
DigitalOutputDecThreshold: z.number(),
/** Интервал расчёта ПИД (миллисекунды). */
SamplingIntervalMs: z.number(),
/** Пропорциональный коэффициент (Kp). */
ProportionalGain: z.number(),
/** Интегральный коэффициент (Ki). */
IntegralGain: z.number(),
/** Дифференциальный коэффициент (Kd). */
DerivativeGain: z.number(),
/** Сохранять пользовательские настройки (0/1). */
SaveUserSettings: z.number(),
}),
});Логика и команды
Команда «изменение поля» (CMD_CHANGE_FIELD) у PID и SHIM: при выборе параметра в дропдауне поле «изменить на» сразу заполняется текущим значением этого параметра из настроек объекта-цели. Механика — специализированный адаптер (Additional data команд).
★ — значение по умолчанию (чем предзаполнена форма / что выбрано при создании).
События — когда объект владелец реакции
- изменение (
MSG_STATUS_CHANGED) ★
Действия — когда объект выбран целью действия
настроить (CMD_SETUP)
- начальное состояние (
Value) — список:- «оставить без изменений» ★
- «активно»
- «неактиво»
- время дискретизации, мс (
SamplingIntervalMs) — число; ★ 1000 - пропорциональная составляющая (
ProportionalGain) — число; ★ 2 - интегральная составляющая (
IntegralGain) — число; ★ 1 - дифференциальная составляющая (
DerivativeGain) — число; ★ 1 - минимум положительного воздействия (
IncMinOutput) — число; ★ 10 - максимум положительного воздействия (
IncMaxOutput) — число; ★ 100 - минимум отрицательного воздействия (
DecMinOutput) — число; ★ 10 - максимум отрицательного воздействия (
DecMaxOutput) — число; ★ 100
изменение поля (CMD_CHANGE_FIELD)
- поле (
field) — список:- «время дискретизации, мс» ★
- «пропорциональная составляющая»
- «интегральная составляющая»
- «дифференциальная составляющая»
- «минимум положительного воздействия»
- «максимум положительного воздействия»
- «минимум отрицательного воздействия»
- «максимум отрицательного воздействия»
- изменить на (
value) — число; ★ 1000
запуск расчётов (CMD_START) ★
- полей нет: команда без параметров
остановка расчетов (CMD_STOP)
- полей нет: команда без параметров
сброс расчетов (CMD_RESET)
- полей нет: команда без параметров
обновить (CMD_UPDATE)
- полей нет: команда без параметров
Условия — когда объект связан в кейсе реакции
- состояние (
State) ★- операторы:
- «находится в состоянии» (
eq) ★ - «не находится в состоянии» (
neq)
- «находится в состоянии» (
- значение — список:
- «работает» ★
- «выключен»
- операторы:
Драйвер-линки
★ — поле по умолчанию в новой связи.
Поля объекта для связи с драйвером
| Поле | Чт. | Зап. |
|---|---|---|
| значение ★ | ✓ | ✓ |
| время дискретизации, мс | ✓ | ✓ |
| пропорциональная составляющая | ✓ | ✓ |
| интегральная составляющая | ✓ | ✓ |
| дифференциальная составляющая | ✓ | ✓ |
| минимум положительного воздействия | ✓ | ✓ |
| максимум положительного воздействия | ✓ | ✓ |
| минимум отрицательного воздействия | ✓ | ✓ |
| максимум отрицательного воздействия | ✓ | ✓ |
| обновить (служебный канал) | ✓ | — |
| авария (служебный канал) | ✓ | — |
Связи только на чтение у драйверов: SNMP, PING.
Хранение
Сохраняется в таблице project_objects через RepositoryObject (Dexie).