Форум программистов, компьютерный форум, киберфорум
Контроллеры PLC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
5 / 4 / 3
Регистрация: 22.11.2022
Сообщений: 146

PID регулятор инертной системы

14.01.2026, 14:46. Показов 4498. Ответов 13

Студворк — интернет-сервис помощи студентам
Здравствуйте.
ПЛК OWEN 160[02], CodeSys 2.3, ST

Задача осуществить автоматическое смешивание для приготовления цементного раствора. Два дозатора, водяной и цементный, управляются пропорциональными клапанами фирмы Parker, управления 0..5 Вольта. Вызов программы 100 мсек
Я сам написал ПИД (изобретаю велосипед), для управления этими дозаторами.
Вода идет со скоростью 400 гал/мин, задача ПИД регулировать поток. ПИД выходит на уставку без проблем и держит любой заданный поток воды. Я решил, сделать по аналогии управления цементным дозатором. Но тут есть:

Проблема № 1: время пока перемешается цемент и плотность увидит плотномер, занимает около 5 сек. То есть при уставке 12.5 ppg, реальной плотности 8.3 ppg(вода) интегратор накапливает такую ошибку, что просто прижимает дозатор к максимуму, из за чего происходит пересып цементом. Я сделал по другому, замораживаю интегратор пока не увижу реакцию системы и тут получаю проблему № 2

Проблема № 2: Я не нашел ответ как вообще осуществляется ПИД регулирования на инертных системах, наверно есть же что то похожее на ПИД регулировании температуры?


Коллеги, не откажите, помогите советом от чего правильно оттолкнуться? На что обратить внимание, что я упускаю из вида?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
FUNCTION_BLOCK PID_CMT
VAR_INPUT
 
    _SP_DENS  : REAL;   (* setpoint density, ppg *)
    _PV_DENS  : REAL;   (* process value density, ppg *)
    _VOLT_MIN : REAL;
    _VOLT_MAX : REAL;
 
    _kP_CMT   : REAL;
    _kI_CMT   : REAL;
    _kD_CMT   : REAL;
 
    (* --- additions for bumpless transfer --- *)
    _AUTO     : BOOL;  (* TRUE = PLC controls, FALSE = manual/pot *)
    _ARM      : BOOL;  (* one-shot when switching to AUTO *)
 
    _U_STRT   : REAL;
 
(*Freez integrator*)
    _I_EN : BOOL;
 
END_VAR
VAR_OUTPUT
 
    U_VOLT    : REAL;
    _OUT_ERR  : REAL;
 
END_VAR
VAR
 
    _dt       : REAL := 0.1;
 
    _err      : REAL;
    _P        : REAL;
    _I        : REAL;
    _I_EN_prev : BOOL := FALSE;
 
    _D        : REAL;
 
    _inited   : BOOL := FALSE;
 
    U_unsat   : REAL;
    U_sat     : REAL;
 
    _pv_prev  : REAL;  (* for D on PV *)
    _dPV      : REAL;
 
    I_min     : REAL;
    I_max     : REAL;
 
    (* optional tuning *)
    _kAw      : REAL := 1.0;   (* anti-windup gain; recommend tune *)
 
END_VAR
 
--------------------------------------------------------------
 
(* ---------------- init ---------------- *)
IF NOT _inited THEN
    _I := 0.0;
    _pv_prev := _PV_DENS;
    _inited := TRUE;
    _I_EN_prev := _I_EN;
    _D := 0.0;
END_IF;
 
(* NaN guards *)
IF (_I <> _I) THEN
 
    _I := 0.0;
 
 END_IF;
 
IF (_pv_prev <> _pv_prev) THEN
 
    _pv_prev := _PV_DENS;
 
END_IF;
 
(* ---------------- P ---------------- *)
_err := _SP_DENS - _PV_DENS;
_P := _kP_CMT * _err;
 
(* ---------------- D (on PV to avoid derivative kick) ---------------- *)
_dPV := (_PV_DENS - _pv_prev) / _dt;
_pv_prev := _PV_DENS;
 
_D := -_kD_CMT * _dPV;  (* D reacts to PV change, not SP step *)
 
(* ---------------- bumpless arm (MAN -> AUTO) ---------------- *)
IF _ARM THEN
    (* on arm: hold current actuator input and set I to match it *)
    U_sat := _U_STRT;
 
    _I_EN_prev := _I_EN;
    
    IF U_sat > _VOLT_MAX THEN
 
      U_sat := _VOLT_MAX;
 
    ELSIF U_sat < _VOLT_MIN THEN
 
      U_sat := _VOLT_MIN;
 
    END_IF
    
    (* optional: you can zero D on arm if you want absolute calm *)
    _D := 0.0;
    
    (* set integrator so output equals held signal *)
    _I := U_sat - _P - _D;
END_IF
 
IF _AUTO THEN
    U_unsat := _P + _I + _D;
    
    U_sat := U_unsat;
 
    IF U_sat > _VOLT_MAX THEN
 
        U_sat := _VOLT_MAX;
 
    ELSIF U_sat < _VOLT_MIN THEN
 
        U_sat := _VOLT_MIN;
 
    END_IF
 
 
    (* keep I aligned while integrator is disabled (P-only mode) *)
    IF (NOT _I_EN) AND (NOT _ARM) THEN
    
        _I := U_sat - _P - _D;   (* bumpless ballast; no accumulation *)
    
    END_IF
    
        (* --- I_EN edge align (optional redundancy) --- *)
    IF (_I_EN AND NOT _I_EN_prev) THEN
    
        _I := U_sat - _P - _D;
    
    END_IF
    
    _I_EN_prev := _I_EN;
 
    (* --- I works only when enabled --- *)
    IF _I_EN THEN
        _I := _I
        + (_kI_CMT * _err * _dt)
        + (_kAw * (U_sat - U_unsat) * _dt);
        
        I_min := _VOLT_MIN - (_P + _D);
    
        I_max := _VOLT_MAX - (_P + _D);
        
        IF _I > I_max THEN
    
            _I := I_max;
    
        ELSIF _I < I_min THEN
    
            _I := I_min;
    
        END_IF
    
    END_IF
 
    U_VOLT := U_sat;
 
ELSE
 
    U_VOLT := _VOLT_MIN;
 
END_IF
 
_OUT_ERR := _err;
 
================END PROGRAM=================
Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.01.2026, 14:46
Ответы с готовыми решениями:

S7-300 Std PID Con LP_SCHED
Приветствую спецов! У меня возникли трудности с PID_ES x 7 и LP_SCHED. Указанная связка почему-то...

Не работает функциональный блок PID из стандартной библиотеки Util.lib
Использую среду программирования Codesys v.2.3 для программирования ПЛК ОВЕН 110.60(М02)....

PID controller on FX1N in GX Works2
Я тут искал искал и нашел библиотеку, вроде все должно было упроститься, но нет же. Там несколько...

13
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3419 / 2738 / 575
Регистрация: 04.09.2018
Сообщений: 8,597
Записей в блоге: 3
14.01.2026, 15:13
Bodden, инертные системы, как правило, регулируются ПИ-регуляторами, т.е. без "Д" (дифф. составляющей).
Если же все-таки ПИД, то выкручивают коэффициенты так, чтобы Дифф-компонента работала только в самом начале процесса и со временем действия, кратным времени действия первичных переходных процессов.

Поясню на примере регулятора температуры:
Текущая t = 20 гр. Точка уставки = 100 гр.
Включаем ПИД-регулятор. Регулятор видит, что разница большая и Дифф-компонента включает нагреватель на полную мощность. В вашем случае - это насып цемента, как я понимаю.
При приближении к точке уставки и пропорционально скорости этого приближения - действие Дифф-компоненты уменьшается, а в некоторой зоне, определенной K/D коэффициентами и вовсе Дифф-составляющая выключается. Таким образом, осуществляется наиболее быстрый "подход" к заданной точке.

Очевидно, что не во всех системах такое нужно, и в вашей в том числе. Поэтому, дифф-составляющую можно (нужно) исключить из процесса регулирования. А воздействовать на регулятор пропорционально-импульсно до некоторого порога (гистерезиса).

Добавлено через 4 минуты
В вашем случае, работа исполнительного механизма (Y) основывается на показаниях плотности плотномера. Поэтому следующее воздействие на регулирующий орган должно произойти импульсно и только после определения текущего замера.
Это означает, что ИМ (Y) не должен работать, пока не придет новое значение плотности.
1
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 866
14.01.2026, 17:59
Задача осуществить автоматическое смешивание для приготовления цементного раствора
А разве это не по массе делается типа насыпали сколько-то кило в чан и по весу контролируем. Потом льём до нужного суммарного веса и Т.Д.
Чего там пид вообще делает.
0
5 / 4 / 3
Регистрация: 22.11.2022
Сообщений: 146
14.01.2026, 19:34  [ТС]
Цитата Сообщение от Aledveu Посмотреть сообщение
А разве это не по массе делается типа насыпали сколько-то кило в чан и по весу контролируем. Потом льём до нужного суммарного веса и Т.Д.
Чего там пид вообще делает.
Нет, там используются плотномеры, типа кориолисовых от Micromotion. Пропорции конечно есть, но цемент подается компрессором с цементовоза и посчитать массу та еще задача. И еще момент, процесс не прерывный мешает и одновременно отправляет готовый раствор в трубу, примерно кубов 50 готового раствора, на что уходит 70 - 80 тонн сухого цемента. Технология отработанная годами.

Добавлено через 1 минуту
Цитата Сообщение от wizard41 Посмотреть сообщение
Очевидно, что не во всех системах такое нужно, и в вашей в том числе. Поэтому, дифф-составляющую можно (нужно) исключить из процесса регулирования. А воздействовать на регулятор пропорционально-импульсно до некоторого порога (гистерезиса).
Добавлено через 4 минуты
В вашем случае, работа исполнительного механизма (Y) основывается на показаниях плотности плотномера. Поэтому следующее воздействие на регулирующий орган должно произойти импульсно и только после определения текущего замера.
Это означает, что ИМ (Y) не должен работать, пока не придет новое значение плотности.
Меня тоже такая мысль посещала. Спасибо, попробую.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8662 / 4498 / 1670
Регистрация: 01.02.2015
Сообщений: 13,914
Записей в блоге: 12
14.01.2026, 21:07
Я бы попробовал варианты:
1 если параметры процесса (подача цемента и воды) - т.е. положения клапанов почти стабильны и сейчас и через год, то на этих значениях (вводимых с панели) и запускал бы процесс смешения, а через 5 секунд включал бы автоматическое регулирование
По такому принципу включал дымосос и вентилятор котла, давал им по очереди разогнаться частотниками до заданных частот, пооткрывать шиберы, а потом только включал ПИД, который уже устранял небольшое рассогласование. Это было много лучше пусков сразу на автоматике.

2 для инерционных процессов выполнял пересчёт ПИД не через 100 мс, а через 1-5 с.
Для поддержания уровня воды в паровом котле делал период пересчёта даже 15 с - лишь тогда можно было задействовать Тд, да и реакция на предыдущее воздействие становилась видна. Время пересчёта вводил с панели. По такому принципу работал ТРМ12 прежней версии (с новой работать не довелось).
3
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3419 / 2738 / 575
Регистрация: 04.09.2018
Сообщений: 8,597
Записей в блоге: 3
15.01.2026, 21:21
Хороший ответ от ФедосеевПавел, в частности, пример с котлами.
На некоторых котлах, даже, можно как раз понять значение допустимости применения "Д" компоненты, например, в форсунках воздушного типа смешения.
Воздушный поток для пламени в таких форсунках регулируется заслонкой, которая, в свою очередь управляется от некоего мотора с постоянной угловой скоростью перемещения исполнительного органа.
В таких случаях становится ясно, что дифф-компонента в этом случае не играет никакой роли, т.к. не может усилить/ослабить скорость поворота заслонки. Здесь главным управляющим фактором становится именно Ti, т.е. интегральная составляющая - которая, на основании температуры, принимает решение о времени воздействия на заслонку - на сколько ее надо повернуть в текущий момент (продолжительность воздействия на Y).

Знаю и по собственному опыту и по многочисленным статьям/ресурсам - во многих системах автоматического регулирования Дифф-составляющая не то что не помогает, а даже вредит общему процессу регулирования. Поэтому, нужно четко осознавать модель реального объекта регулирования, чтобы принять наиболее верное решение - каким регулятором управлять.

Добавлено через 3 часа 17 минут
Bodden, могу предложить вам следующее:
1.
Цитата Сообщение от Bodden Посмотреть сообщение
Я сам написал ПИД (изобретаю велосипед), для управления этими дозаторами.
Это совершенно правильное решение. Потому что используя "стандартные" ФБ регуляторов из кодсиса (или где-л. еще) - у вас образуются уже два контура регулирования, которые надо как-то скрещивать между собой. Это влечет дополнительные затраты времени на настройку таких систем, причем не всегда обоснованные.

2. На основании п.1 вы можете легко написать собственную функцию для одновременного регулирования обоих клапанов. Вам не нужны "стандартные" ПИД-регуляторы, имеющиеся в софте разработки.

3. Смешивание компонентов (примесей) для получения итогового состава, как правило, всегда основано на некоторых заранее известных пропорциях. Т.е. изначально ясно, сколько чего добавить, чтобы получилась смесь с нужными характеристиками (1:2, 1:3... и т.п.).
Стало быть, в некоторый начальный период времени запуска установки, клапана Y1 (цемент) и Y2 (вода) открываются пропорционально текущей марке цемента и их соотношений для смешивания.
Примем, что цемент бывает разных марок, а вода - типа всегда одна и та же. Хотя вряд ли это так на практике: в воде могут быть разного рода примеси, разный уровень кислотности (pH), разная жесткость и все такое, т.е. вода как-бы не всегда "одинаковая".
Но для облегчения понимания допустим, что вода всегда одна и та же. Таким образом, где-то в настройках панели (HMI) либо какого-то ПК или еще чего - есть некоторые базовые коэффициенты смешивания частей для данной марки цемента. И именно они сперва начинают работать при пуске этой "бетономешалки".

4. Предположим, что для условно непрерывного процесса регулирования (почему условного - скажу позже) в начальный момент мы открыли клапана Y1 и Y2 (каждый в разной степени) для запуска процесса смешивания.
Где-то на выходе "смесителя" плотномер дискретно измеряет текущую плотность полученного раствора. На основании замеров, регулятор должен что-то делать... И тут есть несколько вариантов, в зависимости от дисбаланса текущей плотности и ее уставки:
а) прикрыть цемент;
б) прикрыть воду;
в) прикрыть цемент и приоткрыть воду;
г) прикрыть воду и приоткрыть цемент.

5. Следствия п.4:
5.1 - варианты работы клапанов 4.В и 4.Г наиболее быстродействующие, чем варианты 4.А и 4.Б.
5.2 - в промежутках между замерами плотности - течение процесса становится фактически не управляемым (не контролируемым). С каждым следующим измерением плотномера воздействие на клапана являются лишь корректирующими, оценка степени влияния которых откладывается "на будущее" (след. замер от плотномера).
5.3 - из п.5.2 следует, что принцип регулирования является условно-непрерывным, т.к. вел-на воздействия на механизм определяется с дискретностью отсчета времени измерений плотномера (5 сек).

6. Влияние D-составляющей (дифф-компонента):
В п.5 мы выяснили, что в связи с довольно большой дискретностью ответа системы (замеров плотномера, опоздание) процесс регулирования является условно-непрерывным, т.е. без мгновенного определения точки состояния установки.
Включение дифф-составляющей в общую формулу регулятора внесет еще больший хаос в результат, способствуя тем самым значительным колебаниям (перерегулированию).
Более того, наличие Дифф-компоненты предполагает, что заранее должны быть примерно известны пропускные способности клапанов цемента и воды, в зависимости от степени их открытия за определенное время. Это значительно усложняет формулу регулятора и, естественно, способы настройки системы в целом.

7. Если интересно, продолжение следует... Даже формулу регулятора можно вывести.
Извиняюсь, отвлекают другие дела. Всех с Новым Годом и прошедшими праздниками!
2
5 / 4 / 3
Регистрация: 22.11.2022
Сообщений: 146
15.01.2026, 22:17  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Таким образом, где-то в настройках панели (HMI) либо какого-то ПК или еще чего - есть некоторые базовые коэффициенты смешивания частей для данной марки цемента. И именно они сперва начинают работать при пуске этой "бетономешалки"
Спасибо Вам за такой развернутый ответ. В панели HMI я заложил данный функционал



Эти значения ПЛК принимает, но по факту на данный момент обрабатывается 4 (Минимальное и максимальное открытие цем и вод дозатора). Объясню почему, железо разное и момент старта разный, я пока не придумал как это использовать масштабируемо . Поясню чуть ниже в описании проблем с которыми столкнулся.

Сам процесс выглядит следующим образом. Оператор забивает рецепты требуемые для работы



С этого рецепта рассчитывается требуемый поток воды и начинается добавляться цемент, для выхода на нужную плотность. При смене рецепта, поток пересчитывается.

Во время работы уставки плотности и расхода меняются



При смене расхода, также происходит пересчет воды.

Проблемы с которыми я столкнулся:
1. Транспортная задержка - но более менее, провел замеры. Реакция на воздействия примерно 5 сек
2. Инертность. Тут все печально. Зависит от многих факторов, как промешивается цемент, как он подается, ну и конечно химия, без нее ни куда. В некоторые составы добавляют кальций, плотность при замешивании может быть не предсказуемой.
3. Само оборудование, некоторое мешает за 10 оборотов лопасти, в некотором оператор домешивает черенком от лопаты(это не шутка).
4. Есть составы с бур раствором, там вообще ни каких рецептов нет. Подают бур раствор, подымается цементом до нужной плотности(буфер), модель выпадающая из общей концепции.

Я примерно сделал саму общую модель(пока только примерно), то к чему пришел.



Модель для 10 ppg. Модель грубая, работаю еще над ней, но проблема видна очень хорошо. При небольшом воздействии ПИД регулятором(зеленый), плотность (коричневый) - находиться в перерегулировании, подымаясь до 14.5 ppg. Это терпимо, так ка к плавно она возвращается к уставке, но если выставить 12.5 ppg, то соответственно взлет будет к 16. А это разные классы раствора, один легкий, другой тяжелый. Если уставка тяжелый, то последствия зацементированная линия подачи со всеми вытекающими последствиями.

Я сделал фб для отслеживания тренда плотности, так же сделал фб для что бы замораживать интегрирующую составляющую, во время разгона.

Благодаря вашей поддержке, хочу попробовать:
1. Убрать, отключить диф составляющую
2. Проработать концепцию старта с условной позиции дозатора. Что бы он не с 0 подымал, а с 40% + ожидание реакции
3. Пересмотреть работу P и I компонентов.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3419 / 2738 / 575
Регистрация: 04.09.2018
Сообщений: 8,597
Записей в блоге: 3
15.01.2026, 22:42
Bodden, примерно понимаю ситуацию. Ну и на приведенном графике явно прослеживается запаздывание регулятора, т.е. те вещи, про которые я говорил выше.
Отмечу, что свои выкладки я привожу в общем 'теоретическом' смысле, т.к. нет понимания реального процесса работы устройств.
Даже вот пропорциональные клапана: они могут работать как в непрерывном режиме (постоянно меняя площадь пропускного сечения), так и в импульсном (открываясь на столько-то). Но во втором варианте вводится постоянная времени этого открытия.
В двух словах, это значит следующее: проще просто открыть клапан "на полную" в течение какого-то периода, чем вычислять зависимость времени открытия от нужной (расчетной) площади открытого сечения. Ну чисто математически (и, разумеется, будущей нагрузки на CPU контроллера ПИД-регулятора).
Иными словами, как в той рекламе: "Зачем платить больше, если нет разницы?".
1
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8662 / 4498 / 1670
Регистрация: 01.02.2015
Сообщений: 13,914
Записей в блоге: 12
15.01.2026, 23:00
Можно при включении автоматического управления задание (уставку) давать не скачком, а с плавным линейным нарастанием от текущего измеренного значения - это снизит перерегулирование.
Тогда, может быть, и начальная позиция клапана будет не нужна, или всё вместе даст значительное улучшение.

Перебором можно попробовать найти подходящее решение...
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3419 / 2738 / 575
Регистрация: 04.09.2018
Сообщений: 8,597
Записей в блоге: 3
15.01.2026, 23:14
Весь прикол в том, что мы не знаем что происходит в системе n-ное кол-во времени. Особенно на страте: сколько открыть цементу и сколько воды... В теории, конечно, можно абы-как, а там регулятор типа "вывезет"... Но это не профессиональный подход.

Добавлено через 6 минут
Ну и если учесть тот факт, что СУ получается двух-контурная и одно-направленная.
Насыпанный цемент в резервуар обратно не вычерпаешь, если пересыпали.. То же и про воду.. Т.е. эти два компонента являются взаимо-регулирующими.
А это означает, что при некоторых обстоятельствах, когда обе части не особо контролируются, можно выйти на предел объема бака, в котором все это смешивается... Так и не достигнув желаемой композиции...
1
5 / 4 / 3
Регистрация: 22.11.2022
Сообщений: 146
15.01.2026, 23:22  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Весь прикол в том, что мы не знаем что происходит в системе n-ное кол-во времени. Особенно на страте: сколько открыть цементу и сколько воды... В теории, конечно, можно абы-как, а там регулятор типа "вывезет"... Но это не профессиональный подход.
А знаете что? Меня это подтолкнуло к мысли...
У меня есть в функционале HMI, логирование работ в ручном режиме. Можно попробовать про анализировать действия оператора и сделать какие нибудь выводы.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3419 / 2738 / 575
Регистрация: 04.09.2018
Сообщений: 8,597
Записей в блоге: 3
15.01.2026, 23:31
Цитата Сообщение от Bodden Посмотреть сообщение
У меня есть в функционале HMI, логирование работ в ручном режиме.
Bodden, это называется "статистика". Да, можно конечно на основании некоторого анализа произведенных действий составить протокол реагирования управления в зависимости от "...." разного. Но это точно не цель регулятора.
Регулятор должен работать только по задаче, опираясь на текущие настройки. Он не должен, условно, ориентироваться на некоего Петрова - Сидорова.
0
5 / 4 / 3
Регистрация: 22.11.2022
Сообщений: 146
15.01.2026, 23:35  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Bodden, это называется "статистика". Да, можно конечно на основании некоторого анализа произведенных действий составить протокол реагирования управления в зависимости от "...." разного. Но это точно не цель регулятора.
Я понимаю и ни хочу так делать. Цель изучить время реакции воздействие на дозатор.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3419 / 2738 / 575
Регистрация: 04.09.2018
Сообщений: 8,597
Записей в блоге: 3
15.01.2026, 23:49
Цитата Сообщение от Bodden Посмотреть сообщение
Цель изучить время реакции воздействие на дозатор.
Время реакции в вашем случае - это время ответа от измеряющего устройства - плотномера. Пока он не пришлет новые данные - регулятор ничего не сможет сделать.
Далее, когда он прислал эти данные, вы (ну не вы лично, а регулятор) должен сделать следующее:
- рассчитать дельту (ошибку)
- на основании дельты рассчитать импульс реакции (длительность/площадь открытия клапана(ов))
- выдать эту реакцию на ИМ (исполнительный механизм).
- ждать... нового измерения плотномера.

Добавлено через 4 минуты
В вашей системе есть задержка (запаздывание) ответа от точки управления. Она, как правило, инертная, но в большинстве случаев довольно близко предсказуемая. Это и есть коэффициенты T/I.
При правильном их подборе, регулятор будет "чувствовать" на сколько что открыть/закрыть, чтобы достичь нужной цели. Быстрота этих реакций называется качеством регулирования.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.01.2026, 23:49
Помогаю со студенческими работами здесь

FATEK PLC (FBs-32-ma.) в симуляторе не работает PID - function (N30)
Привет! подскажите пожалуйста - в winproladder в симуляторе никак не могу заставить работать PID-...

ПИД-регулятор
Пытаюсь сделать ПИД регулятор для управления тепло нагревателем. Есть входной параметр ввиде...

Не работает ПИ-регулятор в TwidoSuite Simulator
Помогите, пожалуйста! В TwidoSuite вынесла самый простой ПИ-регулятор (PID 1). Взяла уже самый...

ПИД-регулятор в цепи отрицательной обратной связи
Всем доброго времени суток! Помогите, пожалуйста, разобраться. Есть структурная схема с...

Пропорциональный регулятор
В книге на страницах 17-19 описывается П-регулятор, не пойму, почему там говорится, что при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru