PDA

Просмотр полной версии : Чтение и запись одного регистра ПР200 через OwenCloud (ПЕ210)



arty
14.05.2020, 07:16
Осваиваю OwenLogic, возник вопрос как организовать чтение и запись одного и того же регистра, чтобы не было рассинхронизации значений.
Схему как у меня все подключёно прикладываю, суть задачи в том, чтобы с OwenCloud изменить значение регистра в MODBUS ASCII устройстве. По отдельности все работает, все регистры и пишутся и читаются, но когда я отправляю запрос на запись регистра в ПР200, он перетирается значением которое только что прочитал. Прошу подсказать куда копать и как сделать чтобы чтение и запись регистра не конфликтовали и данные в регистре были корректными.
С уважением, Артур

arty
14.05.2020, 07:18
Прикладывают файл проекта, чтобы было проще понять что не так.

Ревака Юрий
14.05.2020, 08:56
Проще всего, разделить их на 2, в один читаем в другой пишем, для чтения использовать флаг или период опроса, запись по изменению. Если нужны более сложные варианты, типа запись из двух мест или трех, смотрите примеры в Лайфхаках 7, 8 часть.

arty
14.05.2020, 09:10
Можно ссылку попросить на Лайфхаки? Если устройство уже разработано и там невозможно разделить регистры на отдельно запись и чтение, то как посоветуете решить вопрос?

Юрий Н
14.05.2020, 09:17
У Юрия в подписи. Нижняя ссылка.

arty
14.05.2020, 10:08
Спасибо, нашел.

Ревака Юрий
14.05.2020, 10:14
Можно ссылку попросить на Лайфхаки? Если устройство уже разработано и там невозможно разделить регистры на отдельно запись и чтение, то как посоветуете решить вопрос?

Логика устройства вам доступна? всегда можно скорректировать, глобально проект это не должно затронуть.

Ревака Юрий
14.05.2020, 10:31
Посмотрел бегло настройки проекта, для мастера в 1 слоте, настройка "Интервал между запросами" 100мс это иного.1-2 будет вполне достаточно.

arty
14.05.2020, 10:57
ок, про скорость опроса понял, спасибо.
Попробую поменять логику - задублировать регистры в ПР200 отдельно на запись и отдельно на чтение.
Но не совсем понятно, почему не получается и читать и писать в один - возникает колебание значения регистра.

melky
14.05.2020, 11:17
arty наверное можно и в один, но придется играться командами чтения и записи

arty
14.05.2020, 11:38
Что имеется в виду под играться командами чтения и записи? В смысле это возможно, но сложно?

melky
14.05.2020, 12:08
Это как-то через задницу реализовано :) Юрий Ревака выкладывал видео по данному поводу, сам еще толком не разбирался. Не знаю, получится так или нет. Просто объем памяти в слейв как-то не резиновый, чтобы разбрасываться регистрами в слейве.

arty
14.05.2020, 12:12
Можно ли ссылку на видео?

Ревака Юрий
14.05.2020, 12:42
Что имеется в виду под играться командами чтения и записи? В смысле это возможно, но сложно?

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

arty
14.05.2020, 12:42
Вот просто колеблется значение без перерыва и все.

Ревака Юрий
14.05.2020, 12:44
Можно ли ссылку на видео?

Речь о работе Modbus в OwenLogic https://youtu.be/k9rUF5_kLqk, там 3 части, в первой как раз про режимы чтения/записи.

petera
14.05.2020, 13:10
А разве шлюз ПЕ210 не является мастером для ПР?
Если да, то причем тут "поиграться с командами записи/чтения"

ЗЫ
Смотрим примеры здесь https://owen.ru/forum/showthread.php?t=32194

правда тема называется "Обмен битовыми (BOOL) переменными с ПР Slave"
но т.к. они читаются и пишутся упакованными в регистры, то можете найти способ читать/ писать регистры из двух мест облако и экран ПР

arty
14.05.2020, 13:13
ПЕ выступает мастером для ПР, но ПР имеет второй слот, где он мастер для другого устройства, с которым идет обмен. Из облако в это устройство и обратно.

petera
14.05.2020, 13:37
Я бы так попробовал
49057

где переменные такие

МГ1
49058

ОБЛАКО
49059

melky
14.05.2020, 13:40
Если произойдет совпадение времени передачи команды из облака и периода чтения мастером, то переменная может не записаться в слейв для ПР

petera
14.05.2020, 13:43
Как они могут совпасть?
Многозадачности в ОЛ нет, обслуживание мастера и слейва в ПР будет по очереди, в разные моменты времени

melky
14.05.2020, 14:48
Если бы так... то хорошо, может и сработать. Но как бы читая ПР у которого еще и слейв вы думаете он останавливает опрос слейв устройств или говорит например Scada системе "подожди, я тут щас пачку регистров прочитаю, а потом тебе отвечу"....

arty
14.05.2020, 14:52
я как раз не могу побороть именно проблему с синхронностью передач между мастером и слейвом ПР200.

arty
14.05.2020, 15:04
Пытался импортировать Ваш макрос, то OL ругается и не может старую версию импортировать, переделал сам, но не работает. Важна ли тут очередность исполнения?

petera
14.05.2020, 15:13
Пытался импортировать Ваш макрос, то OL ругается и не может старую версию импортировать, переделал сам, но не работает. Важна ли тут очередность исполнения?

Там не линии связи, а линии задержки нужны
49069

arty
14.05.2020, 15:22
Большое Вам спасибо за это разъяснение, я поставил вместо линий связи линии задержки на такт и проблема с рассинхронизацией исчезла, теперь записывается последнее измененное значение.

arty
15.05.2020, 09:06
OL пишет что у меня обнаружены циклические связи. Есть ли в этом проблема или это просто предупреждение и рекомендация и не более?
Чтобы не плодить темы - хочу попросить подсказать как сделать групповой запрос? Галочка не активна, установить ее не получается.

melky
15.05.2020, 09:27
Мастер в ПР200 не умеет выполнять групповые запросы, галочка для галочки (задел на будущее, со слов разработчиков)
На счет циклических связей, надо смотреть на работу алгоритма, бывает, он не изменяется, если в нужных местах, где ругается на циклическую связь поставить "обратную связь", а бывает что алгоритм может начать работать не правильно - не так, как вы задумывали). Это больше предупреждение, но иногда так и так меняется задумка автора по алгоритму.

arty
15.05.2020, 10:03
Спасибо за разъяснение