Вход

Просмотр полной версии : ПР205 ModBus Master



Васильев
11.09.2024, 19:18
ПР205 ModBus Master RTU
Есть запись по команде (установка бита) в РЭП написано после успешной записи битие сбрасывается. Как реализовать?

Я в ФБ устанавливаю бит записи и у меня начинается постоянная передача.
Всё правильно в начале каждого цикла устанавливается 1 и передача повторяется.
Можно конечно записать на один цикл 1, тогда как отследить что запись в modbus прошла успешна?

В применении к стандартному микроконтроллеру: мы устанавливаем бит и после успешного выполнения операции аппаратно сбрасывается. Соответственно прочитав бит мы видим, что запись прошла успешна.

Как реализовать на ОЛ?

Спасибо большое.

kondor3000
11.09.2024, 19:32
ПР205 ModBus Master RTU
Есть запись по команде (установка бита) в РЭП написано после успешной записи битие сбрасывается. Как реализовать?


Устанавливайте бит записи в True на 100 мс, когда надо. А вообще лучше делать запись по изменению.
Гарантированно проверить можно только считав записанное.

Васильев
11.09.2024, 19:42
А запись по изменению в Пр205 сохранилась?
Опцию найти не могу..или она по умолчанию.

Валенок
11.09.2024, 20:34
А статус как себя ведет? кто-нить вживую может проверить и сказать?
(проверил бы сам - нет живой ПР)

В РП - невнятно. Что-то такое загадочное "устройство функционирует нормально" - хз.
На конкретный запрос ответ есть или нет. Всё. Никаких "функционирует нормально" не бывает.

Если статус это флажок поднимаемый ок-запросом и падающий после:
-непрерывного "кол-во запросов" ошибок,
-опусканием флажка "опрос" или вручную (хотя бы одно было бы)
то тогда статус норм обратная связь что запрос прошел и никаких непонятных 100мс не нужно.
-опустил статус и поднял опрос
-когда статус поднялся, это и есть "запрос прошел" и можно опустить опрос [и статус]

Но это если статус именно так себя ведет. Нужно уточнение на живом ПР.

kondor3000
11.09.2024, 20:40
А запись по изменению в Пр205 сохранилась?
Опцию найти не могу..или она по умолчанию.

Вот запись по изменению в ПР205 по модбас 78572 по Изернет 78573

Валенок в ПР всё плохо, статус ставится в True, при разъединении не сбрасывается. Проверял не сам, тут уже писали много раз.

Валенок
11.09.2024, 20:59
kondor3000
Ну вроде других событий поднимающих статус кроме нормально прошедшей транзакции - нет. Если так - то пока норм.
И статуc руками опускабелен? Не дайте мне думать плохо о ПР

Dimensy
11.09.2024, 22:07
ПР205 ModBus Master RTU
Есть запись по команде (установка бита) в РЭП написано после успешной записи битие сбрасывается. Как реализовать?

Я в ФБ устанавливаю бит записи и у меня начинается постоянная передача.
Всё правильно в начале каждого цикла устанавливается 1 и передача повторяется.
Можно конечно записать на один цикл 1, тогда как отследить что запись в modbus прошла успешна?

В применении к стандартному микроконтроллеру: мы устанавливаем бит и после успешного выполнения операции аппаратно сбрасывается. Соответственно прочитав бит мы видим, что запись прошла успешна.

Как реализовать на ОЛ?

Спасибо большое.

Как уже писали, проще поставить галку "писать по изменению" или блинком дергать переменную "Запуск записи".
Но можно сделать и так
78574
Здесь, вход cWrite - команда на запись, WR - переменная из сетевых настроек "Запуск записи" (на входе и на выходе одна и та же переменная), Var - что пишем, Out - куда пишем.
Работает так: по фронту cWrite взводиться WR и происходит запись Var в Out. После успешной записи WR автоматом сбрасывается.
Если что, это я просто проверял, действительно ли переменная "Запуск записи" сбрасывается ПРкой

Васильев
11.09.2024, 22:32
что удалось выяснить..

пр205 версия 1.5.0, ОЛ 2.7.350
для режима мастер RTU

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

если работа разрешена и если статус был вкл и если отключена линия связи и выполнено принудительное чтение или запись по команде (запись 1) - статус не меняется на выкл
изменяется из вкл в выкл если работа разрешена, отключена линия связи и выполнена запись по изменению значения сетевой переменной или периодическое чтение переменной

если статус было вкл и отключить линию связи состояние остается активным пока не будет чтения по таймеру или запись по изменению переменной
если состояние было выкл и линия связи включена и нет активности на линии (нет записи или чтения) состояние статуса не меняется на вкл
если выполнить чтение или запись состояние статуса меняется на вкл

установка бита принудительной записи или чтения в 1 отправляет одну команду записи или чтения (обратного контроля нет)
автоматически сброс в 0 не происходит (в РЭ ОЛ на стр 97 написано, что бит сбрасывается автоматически)

вывод: для поддержания сигнала статуса актуальным необходимо выполнять периодически запись или чтение.

Васильев
13.09.2024, 18:19
Как уже писали, проще поставить галку "писать по изменению" или блинком дергать переменную "Запуск записи".
Но можно сделать и так
78574
Здесь, вход cWrite - команда на запись, WR - переменная из сетевых настроек "Запуск записи" (на входе и на выходе одна и та же переменная), Var - что пишем, Out - куда пишем.
Работает так: по фронту cWrite взводиться WR и происходит запись Var в Out. После успешной записи WR автоматом сбрасывается.
Если что, это я просто проверял, действительно ли переменная "Запуск записи" сбрасывается ПРкой

переменная "Запуск записи" не сбрасывается ..
может что то делаю не так?

Dimensy
13.09.2024, 19:51
переменная "Запуск записи" не сбрасывается ..
может что то делаю не так?

Может быть. Я, в свое время, тестировал на ПР200, у меня переменная сбрасывалась

Васильев
14.09.2024, 11:30
А у нас (на этом форуме) есть небожители (сотрудники Овен) которые точно знают ответы на наши вопросы?

Валенок
14.09.2024, 13:16
А у нас (на этом форуме) есть небожители (сотрудники Овен) которые точно знают ответы на наши вопросы?
Ждете мамкину сиську? Взяли и проверили, например так

function_block check

var_input
go, //"поехали" по фронту при ожидании команды
in_status: bool;
end_var

var_output
opros,
out_status: bool;
//чистое любопытство
cnt_ok, //счетчик операций
ms_ok: udint; //мсек от go до ok
end_var

var
go_: bool;
t: time;
end_var

if not opros then
opros := go and not go_;
t := get_time();
elsif in_status then
opros := false;
cnt_ok := cnt_ok + 1;
ms_ok := time_to_udint(get_time() - t);
end_if
go_ := go;
out_status := false; //наглухо

end_function_block

Валенок
14.09.2024, 14:15
статус
не меняется если работа запрещена для любых операций (запись, чтение, отключение линии, включение линии).
Что такое запрещена. Объявлен "опрос" и он FALSE?
Логично для 0. Никто не имеет права поднять.
Если до запрещения был 1 - тоже не падает?
Что такое отключение линии/включение линии - физический отрыв?




не меняется если работа разрешена и нет переменных для чтения или записи периодически или по команде
Логично для 0. Некому поднять.




не меняется если работа разрешена и отключена линия связи
Логично для 0. Можно, есть кому, но у Печкина велосипед сломался




если работа разрешена и если статус был вкл и если отключена линия связи и выполнено принудительное чтение или запись по команде (запись 1) - статус не меняется на выкл

Что такое принудительное чтение/запись если работа - разрешена




изменяется из вкл в выкл если работа разрешена, отключена линия связи и выполнена запись по изменению значения сетевой переменной или периодическое чтение переменной

Все операции прошли с таймаутом.
Периодические - рано или поздно удостоверятся что-таки ёк
По изменению - поставитьте повторов по максммуму (255). Через сколько упадет статус (если был поднят)?




если статус было вкл и отключить линию связи состояние остается активным пока не будет чтения по таймеру или запись по изменению переменной

Логично. Пока хоть кто-то не попытается позвонить/навестить бабушку она так и будет числится живой
(когда навестят - то по факту)




если состояние было выкл и линия связи включена и нет активности на линии (нет записи или чтения) состояние статуса не меняется на вкл

логично




если выполнить чтение или запись состояние статуса меняется на вкл
логично (если все пучком прошло)




установка бита принудительной записи или чтения в 1 отправляет одну команду записи или чтения (обратного контроля нет)
Проверка обратной связи предложена выше.
Но проверки требует сама предоженная проверка)) У меня нет живой ПР




автоматически сброс в 0 не происходит (в РЭ ОЛ на стр 97 написано, что бит сбрасывается автоматически)
Логика в этом есть. Кто должен опускать если нет настроек времени после последнего ok?
Ну а РЭ пишут люди. Я вижу не ошибку а неполное описание.




вывод: для поддержания сигнала статуса актуальным необходимо выполнять периодически запись или чтение.
Ну как бы логично.
Все протоколы базирующиеся на пакетах (т.к. просто все кроме тех у кого есть н.з./н.о. контакты или их эквиваленты) связь определяют операциями а подтверждают - периодическими операциями


----
Ньюансы конкретного исполнения требуют проверки руками, а не заявлениями в РЭ если хотите быть уверенными за свою работу, а не разводить руками перед клиентом.

Васильев
14.09.2024, 14:19
Ждете мамкину сиську? Взяли и проверили, например так

function_block check

var_input
go, //"поехали" по фронту при ожидании команды
in_status: bool;
end_var

var_output
opros,
out_status: bool;
//чистое любопытство
cnt_ok, //счетчик операций
ms_ok: udint; //мсек от go до ok
end_var

var
go_: bool;
t: time;
end_var

if not opros then
opros := go and not go_;
t := get_time();
elsif in_status then
opros := false;
cnt_ok := cnt_ok + 1;
ms_ok := time_to_udint(get_time() - t);
end_if
go_ := go;
out_status := false; //наглухо

end_function_block

в том то и дело всё проверено..
для себя я все выяснил.
тема была поднята, чтобы всем стало всё ясно и совместными усилиями выявить и выяснить проблемы
и не натыкаться на грабли в дальнейшем

для меня остается не понятным
почему из состояния статус 0
установка флага принудительной записи или чтения не устанавливает статус в 1,
в то время как запись по изменению или периодическое чтение статус готовности устанавливает


Спасибо большое!

Валенок
14.09.2024, 14:47
в том то и дело всё проверено..
Не всё. Пример выше (просто просьба) проверить. Возможно что будет (или не будет) ответ на:



для меня остается не понятным
почему из состояния статус 0
установка флага принудительной записи или чтения не устанавливает статус в 1,
в то время как запись по изменению или периодическое чтение статус готовности устанавливает
Тут нужно определить - что поднимает статус (кроме рук)
В моём мире - любая ок-операция.
Если(?) так, то значит её у Вас не было - побилась/оборвали командами и т.п.

Васильев
15.09.2024, 19:21
Заметил ещё одну особенность…
Если статус был не в сети (устройство включено, линия связи подключена) команда запись по изменению или чтение периодическое поднимает статус только после выполнения второй команды.

Васильев
18.09.2024, 17:39
Поддержка подтвердила, что бит принудительной записи в пр205 не сбрасывается, информация передана разработчику.