PDA

Просмотр полной версии : Запись на экран в примере ПИД регулятора



MacSimov
14.09.2025, 21:50
Добрый вечер, уважаемые форумчане.
Изучаю пример ПИД регулятора что на сайте овена (там их два, но в обоих реализован вывод на экран одинаково)
https://owen.ru/product/pr205/software
собственно с пид регулятором и с блоком ходилкой по шагам разобрался там все понятно.

Но "зацепила" часть часть называемая выводом параметров на экран. Мозг взорвало, но
хочется разобраться и понять как оно работает и
для каких целей на входе и выходе блока по две переменные с одинаковыми именами , на выходе имеющие одинаковые значения

85738
85739

kondor3000
14.09.2025, 21:59
Но "зацепила" часть часть называемая выводом параметров на экран. Мозг взорвало, но
хочется разобраться и понять как оно работает и
для каких целей на входе и выходе блока по две переменные с одинаковыми именами , на выходе имеющие одинаковые значения

Это макрос, управление переменной из 2 мест, например по сети и с экрана
или из программы и с экрана. На выходе, та переменная которая менялась последней, следовательно и вторая тоже поменяется.
Такие же макросы в менеджере есть для целочисленной и Float.

FPavel
14.09.2025, 22:53
Вместо этого макроса лучше объявить сетевую переменную и именно её менять и с экрана и по сети.

MacSimov
14.09.2025, 23:03
Спасибо.Немного разобрался.
Да в примере ПИД они используются тоже для целочисленных и флоат. расписывать не стал, они аналогичные.

Вот к примеру rVPI и rVPIHMI. На входе они привязаны к разным входам блока, а на выходе блока получают одинаковое значение.
rVPIHMI - привязана к экрану и может с него меняться.
rVPI - привязана ко входу 1-> аналоговый режим ->верхняя граница измерений (значение задано 10)
правильно ли я понимаю :
в момент работы программы rVPI меняться в зависимости от "верхняя граница измерения" не может (т.е верхняя граница измерений = rVPI, а не наоборот)
(поменять значение "верхняя граница измерения" кроме как поменять значение переменной rVPI в момент работы программы нельзя,
только в настройках прибора можно начальное установить)
т.е. при запуске программы эти переменные получают значение 0 , что прописано в таблице переменных "значение при запуске" и "верхняя граница измерения" тоже.
(точнее поскольку значения сохраняемые там может и не 0 быть, а что в последний раз упало туда)
и меняются они обе только лишь при изменении rVPIHMI через экран.

Не пойму зачем две переменные то. почему не оставить одну rVPIHMI и привязать ее к "верхняя граница измерения" в настройках прибора - вход 1- аналоговый (где rVPI привязана). Тогда и блок SelChg не нужен.

Я что-то может не вкурил, может ее (rVPI ) к овен клоуд планировалось привязать и управлять значением как с экрана так и с облака, тогда логично.

MacSimov
14.09.2025, 23:23
Вместо этого макроса лучше объявить сетевую переменную и именно её менять и с экрана и по сети.

А не получиться ли так что изменения одновременно могут прилететь? или это не параллельные процессы и пр их последовательно обрабатывает? не обрабатывает ли он их в разных потоках (запись с экрана и запись по сети)? лока (lock () {}) то на них нету.

FPavel
14.09.2025, 23:27
Думаю, что не получится - код обработки экрана и код обработки приёма из сети выполняются не параллельно, а последовательно. Значит кто-то будет раньше.

Королев Кирилл
15.09.2025, 09:39
Спасибо.Немного разобрался.
Да в примере ПИД они используются тоже для целочисленных и флоат. расписывать не стал, они аналогичные.

Вот к примеру rVPI и rVPIHMI. На входе они привязаны к разным входам блока, а на выходе блока получают одинаковое значение.
rVPIHMI - привязана к экрану и может с него меняться.
rVPI - привязана ко входу 1-> аналоговый режим ->верхняя граница измерений (значение задано 10)
правильно ли я понимаю :
в момент работы программы rVPI меняться в зависимости от "верхняя граница измерения" не может (т.е верхняя граница измерений = rVPI, а не наоборот)
(поменять значение "верхняя граница измерения" кроме как поменять значение переменной rVPI в момент работы программы нельзя,
только в настройках прибора можно начальное установить)
т.е. при запуске программы эти переменные получают значение 0 , что прописано в таблице переменных "значение при запуске" и "верхняя граница измерения" тоже.
(точнее поскольку значения сохраняемые там может и не 0 быть, а что в последний раз упало туда)
и меняются они обе только лишь при изменении rVPIHMI через экран.

Не пойму зачем две переменные то. почему не оставить одну rVPIHMI и привязать ее к "верхняя граница измерения" в настройках прибора - вход 1- аналоговый (где rVPI привязана). Тогда и блок SelChg не нужен.

Я что-то может не вкурил, может ее (rVPI ) к овен клоуд планировалось привязать и управлять значением как с экрана так и с облака, тогда логично.

Такая привязка выполнена из-за того, что нельзя напрямую привязать переменные из настроек прибора к виджетам на экране визуализации.

P.S. Если хотите реализовать ПИД-регулирование при помощи ПР205, то можете воспользоваться новым встроенным регулятором с автонастройкой (https://docs.owen.ru/product/programmnoe_obespechenie_owen_logic/986/107398#topic-107446). Пример на сайте создавался еще до выхода нового блока.