Skip to content

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).

Mentioned In