PDA

Просмотр полной версии : Сетевые переменные в энергонезависимой памяти ПР200 и OwenLogic.



Rinat_X
08.10.2024, 07:50
Здравствуйте коллеги!
Я программирую ПР-200 в среде OwenLogic.
Как заставить сетевые переменные записываться и считываться из энерго независимой памяти?
То есть, с верхнего уровня по ModBus протоколу записываются различные уставки.
Проблема заключается в следующем, после перезагрузки(сброса питания) все эти сетевые переменные(уставки ранее записанные) обнуляются.
Спасибо!

kondor3000
08.10.2024, 08:33
Здравствуйте коллеги!
Я программирую ПР-200 в среде OwenLogic.
Как заставить сетевые переменные записываться и считываться из энерго независимой памяти?
То есть, с верхнего уровня по ModBus протоколу записываются различные уставки.
Проблема заключается в следующем, после перезагрузки(сброса питания) все эти сетевые переменные(уставки ранее записанные) обнуляются.
Спасибо!

Делать инициализацию сетевых при включении, из энергонезависимых переменных.
Тут есть примеры, Инициализация сетевых переменных https://owen.ru/forum/showthread.php?t=37203&page=9&p=429061#81
Спрашивайте, если что то не понятно.

Rinat_X
08.10.2024, 08:52
Вы предлагаете сделать значение по умолчанию, а далее входе работы значения менять по ModBus.
Из примера:
function_block Inizial // Инициализация сетевых переменных
var_input
In1,In2 : udint;
R1,R2 :real;
end_var
var_output
Out1,Out2 : udint;
OutR1,OutR2 :real;
end_var
var
Init : bool:=false; // Переменная инициализации
end_var

if not Init then // Инициализация сетевых переменных при пуске
Out1:=123;
Out2:=456;
OutR1:=-12.35;
OutR2:=-45.67;
Init:=true;
else // Работа сетевых переменных после инициализации
Out1:=In1;
Out2:=In2;
OutR1:=R1;
OutR2:=R2;
end_if

end_function_block

Я не совсем имел ввиду это, опишу подробнее.

Есть сетевые переменные к примеру "Уровень жидкости" и "Температура жидкости".
В ходе работы оператор задает значения этим переменным через ПО верхнего уровня(по ModBus-у) 1000мм и 75 градусов.
Внезапно происходит отключение света,по истечению некоторого времени питание возобновилось.
В итоге ПР200 должен запуститься со значениями 1000мм и 75 градусов в соответствии с последними записанными уставками.

EFrol
08.10.2024, 09:08
В РЭ на ПР200 стр.23 сказано:
79180
Я бы начал с проверки батарейки на плате, а потом уже обратился в СЦ.
Однако надо убедиться, что нет записи в эти переменные из прошивки.

Rinat_X
08.10.2024, 09:23
Спасибо!!!

Моя вина(как и у многих) не внимательно читал РЭ.)))

nnov4k
23.10.2024, 19:36
Добрый вечер. Подскажите пожалуйста, имеется простой набор блоков с проверками, кто изменился позднее (дискретный вход, значение на экране или сетевая переменная), то и подаётся на выход. Есть ли возможность сохранения значения выхода при сбросе по питанию?
делал все переменные энергонезависимыми - всё равно после загрузки дискретный вход взводится, он считается последним и логика отрабатывает и подаёт на выход единицу. Хочется именно сохранить старое значение без костылей с модуля инициализации.
Как понимаю в модуле нужно сделать COM энергонезависимым, далее при загрузке восстановить значение на него же - в теории выходом может моргнуть...

kondor3000
23.10.2024, 20:01
Добрый вечер. Подскажите пожалуйста, имеется простой набор блоков с проверками, кто изменился позднее (дискретный вход, значение на экране или сетевая переменная), то и подаётся на выход. Есть ли возможность сохранения значения выхода при сбросе по питанию?
делал все переменные энергонезависимыми - всё равно после загрузки дискретный вход взводится, он считается последним и логика отрабатывает и подаёт на выход единицу. Хочется именно сохранить старое значение без костылей с модуля инициализации.
Как понимаю в модуле нужно сделать COM энергонезависимым, далее при загрузке восстановить значение на него же - в теории выходом может моргнуть...

У вас так понимаю будет не один бит, а 8 или 16. Тогда зачем запоминать каждый бит, если есть маска бит (целочисленная переменная)
Входы реле должны включаться кнопкой, а не выключателем. Одно нажатие включено, второе выключено.
Cетевую переменную уже можно сохранить через SelChgI, в примере макрос уже есть.
Тут пример, 2 варианта https://owen.ru/forum/showthread.php?t=26216&page=382#3814

nnov4k
23.10.2024, 23:08
Входы реле должны включаться кнопкой, а не выключателем. Одно нажатие включено, второе выключено.
https://owen.ru/forum/showthread.php?t=26216&page=382#3814
Благодарю за оперативный и содержательный ответ! Очень изящное решение. Как понимаю прямо переменные не сохранить, возьму за образец инициализацию
У меня к сожалению или к счастью выключателями - в этом действительно небольшой костыль ) но текущей версией нормально обходится, кроме косяка со сбросом питания.

melky
24.10.2024, 09:00
Если у вас выключатели, то работать должно наверное через XOR и запоминание происходить уже где-то после него. Так как вы выключателем включили, потом по сети выключили, а выключатель физически остался включенным, но для системы это уже выключенное состояние. Потом выключение выключателя должно привести к включению, и так по кругу. В общем надо обвязкой тут играться, а не просто подачей сигнала от выключателя на переменную.

Сергей0308
24.10.2024, 21:11
А зачем при использовании выключателей что-то сохранять, что выключатели не сохраняют своё состояние, мне просто интересно, для чего всё это нужно?

melky
24.10.2024, 23:37
Сергей0308 обычный выключатель + сетевая переменная. Процедура описана выше. Включателем включили, потом через сетевую выключили. Потом моргнуло питание.

Ваши действия ?
Для простоты понимания. Если знаете как распаиваются проходные переключатели (можете погуглить), то выключатель + сетевая переменная это аналог если грубо.

1exan
25.10.2024, 03:57
Сергей0308 обычный выключатель + сетевая переменная. Процедура описана выше. Включателем включили, потом через сетевую выключили. Потом моргнуло питание.

Ваши действия ?
Для простоты понимания. Если знаете как распаиваются проходные переключатели (можете погуглить), то выключатель + сетевая переменная это аналог если грубо.

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

melky
25.10.2024, 08:36
1exan не, а можно сделать так, чтобы меняя положение выключателя, производилось обратное действие. Было выключено - включится, было включено - выключится. Аналогию я привел. Но для программы это не решается простым опросом входа.

Вспоминается первый же урок по управлению из более 2-х мест на выключателях с использованием XOR. Кто-то мешает вместо реальных входов использовать сетевые переменные?
Тут только вопрос к реализации потом в Scada или Облаке с отображением, чтобы 1 не было типа "Включен" а надо ориентироваться на реальный выход.

1exan
25.10.2024, 09:08
1exan не, а можно сделать так, чтобы меняя положение выключателя, производилось обратное действие. Было выключено - включится, было включено - выключится. Аналогию я привел. Но для программы это не решается простым опросом входа.

Вспоминается первый же урок по управлению из более 2-х мест на выключателях с использованием XOR. Кто-то мешает вместо реальных входов использовать сетевые переменные?
Тут только вопрос к реализации потом в Scada или Облаке с отображением, чтобы 1 не было типа "Включен" а надо ориентироваться на реальный выход.

Это не очень удобно и совсем не наглядно

melky
25.10.2024, 09:22
Давнишняя тема тут на форуме, когда стоимость ПР110 на то время была дешевле одного дизайнерского выключателя и требовалось сделать реализацию проходных переключателей.
Главное не в наглядности, а в задаче.

Сергей0308
25.10.2024, 14:43
1exan не, а можно сделать так, чтобы меняя положение выключателя, производилось обратное действие. Было выключено - включится, было включено - выключится. Аналогию я привел. Но для программы это не решается простым опросом входа.

Вспоминается первый же урок по управлению из более 2-х мест на выключателях с использованием XOR. Кто-то мешает вместо реальных входов использовать сетевые переменные?
Тут только вопрос к реализации потом в Scada или Облаке с отображением, чтобы 1 не было типа "Включен" а надо ориентироваться на реальный выход.

Вообще то для определения состояния выхода вполне достаточно знать только состояния всех входов(включая сетевую переменную), в смысле, это функция.

melky
25.10.2024, 14:59
Сергей0308 вход может включить нагрузку при 0 а так же при 1, что зависит от состояния других входов и текущего положения выхода. з.ы. я уже не знаю как объяснять. пример на XOR это демонстрирует лучше, чем я могу сказать словами.

Сергей0308
25.10.2024, 15:07
Сергей0308 вход может включить нагрузку при 0 а так же при 1, что зависит от состояния других входов и текущего положения выхода. з.ы. я уже не знаю как объяснять. пример на XOR это демонстрирует лучше, чем я могу сказать словами.

Если зависит от преведущего состояния выхода, то это уже не функция, а ФБ(функциональный блок), Вы как обычно всё попутали!

melky
25.10.2024, 16:27
я не говорил вообще что делать, функцию или FB. Ни слова об этом не было. Это уже ваши умозаключения были. Я говорил о принципе вообще как таковом.

Сергей0308
25.10.2024, 22:18
я не говорил вообще что делать, функцию или FB. Ни слова об этом не было. Это уже ваши умозаключения были. Я говорил о принципе вообще как таковом.

Что Вам непонятно, что состояние на выходе "исключающего или" не зависит от текущего его состояния, а определяется только состоянием входов, теперь понятно, в смысле, Вы(в #17 посте) написали, что состояние на выходе зависит от текущего состояния выхода, что не соответствует действительности!
У нас все ходы записаны!

melky
25.10.2024, 22:39
что состояние на выходе зависит от текущего состояния выхода

Где что? Собственно логику у автора реальную никто не знает. Все, что известно это наличие входа и минимум одной сетевой переменной, там еще и третья была. Что касается непосредственно ВХОДА, то его надо исключить из первоначальной цепочки и строить по другому принципу, например используя XOR. так что в конечном итоге там может получиться помесь функции с FB или только одно из.
з.ы. я просто привел пример самого простого решения, но оно потянет другого решения и в верхней (сетевой) части.

Сергей0308
25.10.2024, 23:04
что состояние на выходе зависит от текущего состояния выхода

Где что? Собственно логику у автора реальную никто не знает. Все, что известно это наличие входа и минимум одной сетевой переменной, там еще и третья была. Что касается непосредственно ВХОДА, то его надо исключить из первоначальной цепочки и строить по другому принципу, например используя XOR. так что в конечном итоге там может получиться помесь функции с FB или только одно из.
з.ы. я просто привел пример самого простого решения, но оно потянет другого решения и в верхней (сетевой) части.

В смысле, следующее состояние, если не понятно.

melky
25.10.2024, 23:08
у меня в #17 не было выход на выход, не перевирайте. Не путайте других и меня тоже :)

Валенок
25.10.2024, 23:13
А для выключателя накой сетевая?

melky
25.10.2024, 23:19
Валенок да там мутка что и физическим выключателем управлять и через сеть, да еще из разных мест по сети.
А, экран еще - пост #6

Валенок
25.10.2024, 23:24
Так овно же вопрос. Слейв-лампа в ретайне. Хоть обуправляюся по сети. А кнопка или переключатель - да не пофиг ли?

melky
25.10.2024, 23:28
не то ни другое - вЫключатель. который при оставшихся двух должен менять состояние. Задумки у автора #6 не знаю. Может там по сети или с экрана для включения надо всегда 1 подавать, а для выключения всегда 0. Так то (NOT)что_там и все. А выключатель отдельной мухой прилепить.

Валенок
25.10.2024, 23:34
не то ни другое - вЫключатель.
А какая-разница если оно на Di заведено?

melky
26.10.2024, 07:13
Потому что вЫключатель на DI нельзя так же обрабатывать, если предполагается отключение по сети и с экрана.

Валенок
29.10.2024, 17:08
Потому что вЫключатель на DI нельзя так же обрабатывать, если предполагается отключение по сети и с экрана.
С чего бы это?

melky
29.10.2024, 17:29
Валенок имею ввиду через SelChg. Ну и если из выключателя физического, делаем переключатель программный. То есть когда замкнули выключатель - свет загорелся. По сети переменной свет потушили (выключатель остался замкнут), потом выключатель размыкаем - свет опять загорелся. Хотя чего там у автора в голове было изначально, непонятно.

Валенок
29.10.2024, 17:36
Да какая разница - реагировать на фронт (кнопки) или изменение состояния (переключатель) для инверсии сигнала? А одновременно по сети и по Di - копеешная задача то.

melky
29.10.2024, 21:19
я про картинку в посте #6

Валенок
29.10.2024, 23:51
я про картинку в посте #6
А причем тут картинка? Описано

... Есть ли возможность сохранения значения выхода при сбросе по питанию? .Да



У меня ... выключателями ..нормально обходится .. кроме косяка со сбросом питания.У автора какой-то косяк с квадратиками и сбросом питания


Можно ли рулить лампочками по Di и сети? - Да
А при этом можно Di где кнопы, где переключатели? Да
А дернется питание на ПР - можно при включении восстановить лампы? Да
Тут все хотелки автора перечислены? Где проблема то?

melky
30.10.2024, 09:18
Валенок так при сбросе питания потом запуск программы, проверка входа Di, а он включен - перезапись всей цепочки и включение, хотя было выключено. Как пример.

Валенок
30.10.2024, 09:21
melky


.. так при сбросе питания потом запуск программы, проверка входа Di,
Да

а он включен
Хорошо, так и запишем

перезапись всей цепочки и включение,
Зачем?

melky
30.10.2024, 09:25
Валенок вот и я спрашиваю - зачем? :)

Валенок
30.10.2024, 09:27
Зачем Вы перезаписываете в первом цикле?

nnov4k
13.11.2024, 20:33
не то ни другое - вЫключатель. который при оставшихся двух должен менять состояние. Задумки у автора #6 не знаю. Может там по сети или с экрана для включения надо всегда 1 подавать, а для выключения всегда 0. Так то (NOT)что_там и все. А выключатель отдельной мухой прилепить.
задумка простейшая - свет дома: реализация на ПР200 (8DI + 8DO):
1) при включении DI включается DO, при выключении - выключается. Для целей экономии и возможности пересборки схемы на тупую (выход выключателя коммутируется на клеммнике на вход лампочки и никакой автоматизации) выключатели сделаны обычными, лампочки тоже.
2) дополнительно на экран выведено состояние всех выходов, соответственно можно с экрана выключить или включить любой DO.
3) ПР200 прокинута модбасом в HA, к HA прикручен УДЯ, соответственно ПР200 через сетевые переменные показывает своё состояние в HA/УДЯ и допускает управление клиентом HA на мобильнике или через АЛИСУ.
соответственно логика - чтоб в любой момент времени можно было включить или выключить свет любым способом.

один минус - если включено алисой, то, чтоб выключить выключателем, то нужно его включить и выключить....
соответственно т.к. инициализация не прописана и задумался, что сделать, чтоб, когда дети включали свет выключателем и свет был выключен голосом (DI=1, DO=0), при моргании света ночью люстра не била по шарам (DI=1 => DO=1) :)

melky
13.11.2024, 22:37
nnov4k по этому я и написал, что логика работы вЫключателя, при его заведении на вход DI должна быть иной. Чтобы программа отслеживала состояние выхода, а выключатель, меняя свое состояние хоть с 0 на 1, хоть с 1 на 0 всегда изменял состояние выхода на противоположное. Непосредственно в сетевые переменные можно писать 1 для включения, 0 для выключения.

но меня не слушают :)

Dimensy
14.11.2024, 07:47
задумка простейшая - свет дома: реализация на ПР200 (8DI + 8DO):
1) при включении DI включается DO, при выключении - выключается. Для целей экономии и возможности пересборки схемы на тупую (выход выключателя коммутируется на клеммнике на вход лампочки и никакой автоматизации) выключатели сделаны обычными, лампочки тоже.
2) дополнительно на экран выведено состояние всех выходов, соответственно можно с экрана выключить или включить любой DO.
3) ПР200 прокинута модбасом в HA, к HA прикручен УДЯ, соответственно ПР200 через сетевые переменные показывает своё состояние в HA/УДЯ и допускает управление клиентом HA на мобильнике или через АЛИСУ.
соответственно логика - чтоб в любой момент времени можно было включить или выключить свет любым способом.

один минус - если включено алисой, то, чтоб выключить выключателем, то нужно его включить и выключить....
соответственно т.к. инициализация не прописана и задумался, что сделать, чтоб, когда дети включали свет выключателем и свет был выключен голосом (DI=1, DO=0), при моргании света ночью люстра не била по шарам (DI=1 => DO=1) :)

Как вариант
80036
Здесь физический выключатель работает по принципу проходного

nnov4k
21.11.2024, 22:38
покритикуйте пожалуйста, вроде бы должно работать... )
-управляется сетью одним регистром установкой битов
-управляется сетью один регистр один вход/выход
-управляется с экрана
-управляется кнопкой, при этом в режиме кнопки без фиксации
-сохраняет своё состояние

Сергей0308
22.11.2024, 00:11
покритикуйте пожалуйста, вроде бы должно работать... )
-управляется сетью одним регистром установкой битов
-управляется сетью один регистр один вход/выход
-управляется с экрана
-управляется кнопкой, при этом в режиме кнопки без фиксации
-сохраняет своё состояние

Какой-то бред сивой кобылы, мягко выражаясь!
Имея в качестве сетевой переменной битовую маску выходов зачем ещё создавать 8 целочисленных сетевых переменных и использовать в каждом регистре по биту? Прямо какой-то бред бредовый, мне так кажется!
Хороший пример как не надо делать!
Вы бы хоть что-нибудь посмотрели на форуме, тысячу раз подобное обсуждалось, короче, хуже трудно придумать!

Dimensy
22.11.2024, 07:51
Какой-то бред сивой кобылы, мягко выражаясь!
Имея в качестве сетевой переменной битовую маску выходов зачем ещё создавать 8 целочисленных сетевых переменных и использовать в каждом регистре по биту? Прямо какой-то бред бредовый, мне так кажется!
Хороший пример как не надо делать!
Вы бы хоть что-нибудь посмотрели на форуме, тысячу раз подобное обсуждалось, короче, хуже трудно придумать!

Ну, хочется человеку напрямую рулить битами - ресурсов то хватает. А, может, Алиса не умеет включать свет с помощью битовой маски.
Мой вариант
80255

kondor3000
22.11.2024, 08:17
покритикуйте пожалуйста, вроде бы должно работать... )

Взяли мой пример и извратили зачем то (сетевая маска бит у вас не работает),80256
триггеры на входе ещё можно понять, хотя для кнопок они и не нужны, а маска бит у меня работала.
Сетевые (если нужны битовые) можно было повесить прямо на выходы макроса.
Цель была этот макрос переписать на ST.
https://owen.ru/forum/showthread.php?t=26216&page=381&p=447824#post447824

Лучше всех получилось у Валенка https://owen.ru/forum/showthread.php?t=26216&page=382#3814

EFrol
22.11.2024, 11:28
Кажется, фильм "9-я рота". Помните?
- Боец ты что-то видел?
- Нет
- Так чего ты ржешь? В бою главное выполнить приказ! Обосраться - но выполнить!

Я бы таким ребятам сразу Орден Мужества выдавал. Подставиться - но научиться.

nnov4k
22.11.2024, 18:41
Какой-то бред сивой кобылы, мягко выражаясь!
Имея в качестве сетевой переменной битовую маску выходов зачем ещё создавать 8 целочисленных сетевых переменных и использовать в каждом регистре по биту? Прямо какой-то бред бредовый, мне так кажется!
Хороший пример как не надо делать!
Вы бы хоть что-нибудь посмотрели на форуме, тысячу раз подобное обсуждалось, короче, хуже трудно придумать!
Так задумано, т.к. HomeAssistant в не предусмотрено описание switches по битовой маске, только регистром целиком. Регистр писать можно, но вычисляя его отдельным блоком костылей, что ещё более трудозатратно, чем использование 1 бит в каждом регистре.


Ну, хочется человеку напрямую рулить битами - ресурсов то хватает. А, может, Алиса не умеет включать свет с помощью битовой маски.
Мой вариант
80255
Благодарю за конструктив и отличный пример! Не ожидал, что сетевые переменные можно сразу на экран привязывать. костыль с битами отчасти связан как раз с необходимость их привязки на экран


Взяли мой пример и извратили зачем то (сетевая маска бит у вас не работает),80256
триггеры на входе ещё можно понять, хотя для кнопок они и не нужны, а маска бит у меня работала.
Сетевые (если нужны битовые) можно было повесить прямо на выходы макроса.
Цель была этот макрос переписать на ST.
https://owen.ru/forum/showthread.php?t=26216&page=381&p=447824#post447824
Лучше всех получилось у Валенка https://owen.ru/forum/showthread.php?t=26216&page=382#3814
Я специально вывернул блок для возможности адресации внутренних переменных и упрощенной пошаговой отладки. Сетевые были целочисленные, потому так и получилось, хотя, согласен, я думаю никто бы снаружи и не догадался, что с ними работают как с битовыми. Стараюсь конечно не спрашивать тупые вопросы, но "на текущем развитии мозга" вложенные процедуры в цикловом процессе тяжело укладываются в голове.


Кажется, фильм "9-я рота". Помните?
- Боец ты что-то видел?
- Нет
- Так чего ты ржешь? В бою главное выполнить приказ! Обосраться - но выполнить!
Я бы таким ребятам сразу Орден Мужества выдавал. Подставиться - но научиться.
благодарю за поддержку! :) изящные решения пока не мой конёк, но моя вандервафля тоже почти работала (за исключением неиспользуемой битовой маски) :)

Cs-Cs
22.11.2024, 21:45
HomeAssistant в не предусмотрено описание switches по битовой маске, только регистром целиком.
Это не про это?

switches:
### Dimmer Command Switches
- name: "╨Ы╨░╨╝╨┐╤Л: 1 ╨н╤В╨░╨╢ ╨Ю╨▒╨╡╨┤╨╡╨╜╨╜╤Л╨╣ ╨б╤В╨╛╨╗ (DIM, Preset 1)"
unique_id: HALmp1EObedStolDIMPreset1 #Unique ID (Global) of Lamp
slave: 10 #PLC Slave ID
address: 160 #PLC Register Address
scan_interval: 1 #In Secodns
write_type: coil #Reg Type (coil / discrete / holding / input)
command_on: 1 #What write to ON State
command_off: 0 #What write to OFF State
verify: #How to Verify State
input_type: coil #Reg Type (coil / discrete / holding / input)
delay: 0.5 #Delay (in secons between Write and Verify)
Я делал на coil, и работал с битами.

nnov4k
30.11.2024, 23:13
Я делал на coil, и работал с битами.
Из этой логики следующий вариант должен писать битовые маски в регистр, но по факту все варианты пишут 1 в 1й бит (coil/coils дают одинаковый эффект). Указание "bit:1" (1-2-3-4-5-...16) возможно только для binary_sensors, они не будут принимать обратно воздействие.

- name: hub3
type: tcp
host: 192.168.2.41
port: 502
switches:
- name: test_sw1
unique_id: test_sw1
address: 530
write_type: coils
slave: 3
command_on: 1 # 0x01
command_off: 0 # 0x00
verify:
input_type: coils

- name: test_sw2
unique_id: test_sw2
address: 530
write_type: coils
slave: 3
command_on: 2 # 0x10
command_off: 0 # 0x00
verify:
input_type: coils

- name: test_sw16
unique_id: test_sw16
address: 530
write_type: coils
slave: 3
command_on: 16 # 0x1111
command_off: 0 # 0x0000
verify:
input_type: coils


в теории оно будет работать, если не описывать ячейки, например как в примере здесь https://psenyukov.ru/%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D 0%B8%D0%B5-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D 0%B2%D0%B0%D0%BC%D0%B8-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-%D0%BF%D1%80%D0%BE%D1%82%D0%BE/ НО вылезет другой минус - при включении второго погаснет первый, при выключении погаснут все биты.

косвенно на проблему ссылается мануал https://www.home-assistant.io/integrations/modbus/#write_registers
write_registers boolean (Optional, default: false) If true use write_registers to control the On/Off state (hvac_onoff_register), else use write_register. Note that it is not yet possible to control the On/Off state via a coil.

на стенде несколько вечеров экспериментировал с описанием регистров в HA и ModbusSlave эмуляторе, в упор пишется первый бит :(

Cs-Cs
03.12.2024, 09:21
nnov4k Нет. У них интеграция Modbus тупенькая, как моя кошочка (восьмибитная): если написано Coil - то он пишет только Coil, и всё.

Але-ндр
18.12.2024, 17:45
Добрый день. Задача следующего характера.
Есть энергонезависимая переменная которая редактируется с дисплея ПР200, и есть сетевая переменная которая должна перезаписывать энергонезависимую память.80909
Но при такой схеме редактирование с дисплея не работает.
Была выдумана такая реализация.
80910
Но возникает вопрос. в каждом цикле энергонезависимая переменная перезаписывает себя, и это очень не хорошо.
Как быть? или я заблуждаюсь?

kondor3000
18.12.2024, 18:09
Но возникает вопрос. в каждом цикле энергонезависимая переменная перезаписывает себя, и это очень не хорошо.
Как быть? или я заблуждаюсь?

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

Але-ндр
18.12.2024, 18:57
Спасибо за ответ.


Перезаписи каждый цикл можете не бояться, запоминание происходит только при снятии питания с ПР200.

Это наверное самое главное.
Уточню. То есть эта переменная на самом деле ОЗУ, а запись в ПЗУ происходит аппаратно, при снятии питания. И прямого доступа к ПЗУ нет.


PS. Пишу на С, а там я знаю что, куда, и сколько раз.. А тут еще читать, учить, и не все плюшки в доступе.

kondor3000
18.12.2024, 19:06
Спасибо за ответ.
Это наверное самое главное.
Уточню. То есть эта переменная на самом деле ОЗУ, а запись в ПЗУ происходит аппаратно, при снятии питания. И прямого доступа к ПЗУ нет.
PS. Пишу на С, а там я знаю что, куда, и сколько раз.. А тут еще читать, учить, и не все плюшки в доступе.

В каждой программе и среде свои тонкости)
Вот вам некоторые примеры проектов https://owen.ru/forum/showthread.php?t=37203&page=9&p=429067#81