PDA

Просмотр полной версии : Можно ли на ПЛК110 реализовать групповой запрос чтения/записи регистров?



Nikoly@
07.09.2022, 14:04
Здравствуйте, уважаемые коллеги!
Имеется ПЛК110-220.60.Р [M02] (мастер)+ ПР102 (слейв)+ еще всякая всячина.
Читаю регистры ПР102 начиная с 512...518 регистра - 7 шт.
Так вот вопрос можно ли на ПЛК110 реализовать групповой запрос на чтение сразу этих 7 регистров (или записи), для оптимизации быстродействия.

IVM
07.09.2022, 14:15
Используй библиотеки.

Спорягин Кирилл
07.09.2022, 14:52
Вот пример реализации через библиотеки:
https://owen.ru/forum/showthread.php?t=25112&highlight=%F3%ED%E8%E2%E5%F0%F1%E0%EB%FC%ED%FB%E9+ %E4%E8%F1%EF%E5%F2%F7%E5%F0

kondor3000
07.09.2022, 18:37
Здравствуйте, уважаемые коллеги!
Имеется ПЛК110-220.60.Р [M02] (мастер)+ ПР102 (слейв)+ еще всякая всячина.
Читаю регистры ПР102 начиная с 512...518 регистра - 7 шт.
Так вот вопрос можно ли на ПЛК110 реализовать групповой запрос на чтение сразу этих 7 регистров (или записи), для оптимизации быстродействия.

Можно и через конфигурацию читать, писать групповыми запросами через String https://owen.ru/forum/showthread.php?t=22915&page=39&p=244022&viewfull=1#post244022
Пользуюсь давно и как по мне, стабильней и не медленнее чем библиотека.

Nikoly@
08.09.2022, 11:42
Можно и через конфигурацию читать, писать групповыми запросами через String https://owen.ru/forum/showthread.php?t=22915&page=39&p=244022&viewfull=1#post244022
Пользуюсь давно и как по мне, стабильней и не медленнее чем библиотека.

Реально намного проще чем через библиотеку.

kondor3000
08.09.2022, 14:40
Реально намного проще чем через библиотеку.

Если с этим разобрались, то посмотрите ещё как обойтись без адресов типа AT %QB12.01.01 https://owen.ru/forum/showthread.php?t=35094#10

Nikoly@
26.09.2022, 11:30
Еще вопрос.
Если в Work mode (Режим работы) выбрать Both, то String Output module (*A3_regOUT*), будет включен в опрос с периодичностью 300 мс,
только в случае изменения значений в этой переменной?
62786

kondor3000
26.09.2022, 13:37
Еще вопрос.
Если в Work mode (Режим работы) выбрать Both, то String Output module (*A3_regOUT*), будет включен в опрос с периодичностью 300 мс,
только в случае изменения значений в этой переменной?
62786

Нет, постоянно будет опрашивать. Этот режим используется для опроса модулей дискретного ввода, вывода типа 8д- 4р.
Для остальных случаев лучше его не использовать, а сделать два UMD, один с периодическим опросом для чтения и второй с записью по изменению.

И ещё, не уверен, что данный способ передачи через стринг, работает с ПР. Я использую его для передачи десятков переменных в панель СП310. Советую сначала проверить на тестовом проекте, ПР больше 2 переменных WORD или одного REAL за раз, не может вроде принять, отдать.

Nikoly@
26.09.2022, 14:17
сделать два UMD, один с периодическим опросом для чтения и второй с записью по изменению.
А вот этот UMD который по изменению, если его добавить 4-м (допустим столько будет использоваться UMD в проекте) по списку,
он и будет также вызываться 4-м по списку или будет в любой момент изменения переменной?

kondor3000
26.09.2022, 14:22
Судя по работе с панелью, запись происходит сразу по изменению, мгновенно. Дописал предыдущий пост, прочитайте до конца.

kondor3000
26.09.2022, 14:59
Валенок, так техподдержка отвечает по поводу both и в примерах Овен используется именно для 8д-4р. Не буду спорить.
Что скажете по поводу использования стринг для чтения записи с ПР? Там же больше 2:регистров не прокатит?

petera
26.09.2022, 15:11
Валенок, так техподдержка отвечает по поводу both и в примерах Овен используется именно для 8д-4р. Не буду спорить.
Что скажете по поводу использования стринг для чтения записи с ПР? Там же больше 2:регистров не прокатит?

Слейв в ПРке поддерживает групповой запрос из 64 регистров в одной группе!

Nikoly@
26.09.2022, 15:34
И ещё, не уверен, что данный способ передачи через стринг, работает с ПР. Я использую его для передачи десятков переменных в панель СП310. Советую сначала проверить на тестовом проекте, ПР больше 2 переменных WORD или одного REAL за раз, не может вроде принять, отдать.

С ПР102 все норм, работает с того времени как дали ссылку на стринг.
Просто так как нет приделу совершенства, докопался до истины, что добавленные подмодули «Universal Modbus device» опрашиваются последовательно, в порядке
следования в конфигурации (если другой порядок не задан отдельно, в настройках модуля), и вот думаю, а как еще оптимизировать.
Каналы с обозначением «State» кроме канала получения/передачи данных содержат
дополнительный управляющий канал (Command), но стоит занять этот канал (пробовал на String Output module (*A3_regOUT*)), то все чтение двух входных каналов прекращается.
Теперь хочу попробовать через Both.

kondor3000
26.09.2022, 15:45
Попробуйте конечно, но в данном случае, на вашем скрине два стринг читают по 2 регистра, зачем? Одним стрингом можно читать до 40 WORD или до 20 REAL, уменьшите время опроса до 10 ms и всё! В этом и смысл использования стринг.
Один стринг всё читает, второй всё пишет, и всё за 20ms. Куда ещё быстрее?
Даже в библиотеке по стандарту 50ms, что в 2,5 раза медленнее.

Nikoly@
26.09.2022, 15:48
Для both 300мс - непонятно зачем. У Вас t.out на девайсе 1 сек ?
Если t.out на девайсе = 0, то в both вообще нет смысла. Если t.out <> 0 ( ну скажем 3сек) то период 2000..2500 мс норм.
Смысл слать одно и тоже чаще ?

both по-простому:
Слать изменения но не реже чем период

Все норм, спс.
300 мс, это для опроса входов UMD, и следовательно, что бы не делать дополнительный UMD для записи, решил спросить про режим Both, что будет с записью в этом случае.

Nikoly@
26.09.2022, 16:36
В смысле - прекращается ? Что-то с настройками. Никому State не мешает по задумке Овена.

UMD PR102(A3) состоит из двух входных модулей и одного выходного.
Получается, что пишет мы раз в 300 мс*3=900 мс
Меняю выходной модуль на String Output module State.
Создаю переменную для Command и смотрю, что происходит.
Все норм, читаются два стринга UMD PR102(A3), далее записываю в переменную command 0xff и о чудо данные с входных стрингов не меняются, пока не изменю command на 0xFE.

Nikoly@
27.09.2022, 09:27
один umd. В нём:
input string (2 шт по 20 рег)
output string state (1 шт x 20 рег)

1.
input string - норм читаются.
output string state - молчит

2.
пишу 255 в output string state.command и он - норм пишет.
А обе input string, о чудо ! - норм читаются. Обе.

3.
пишу 254 в output string state.command. И ... goto 1.


ps
Это при том что я конфиг не юзаю. Просто потрогал.

6279762798

Подключил на столе ПЛК к ПР102.
У меня в проекте три UMD.
Пишу 255 и входные стринги не миняются (читаю регистр системного времени ПР102),
пишу 254 и входные стринги меняются.

Nikoly@
27.09.2022, 10:47
62800
Проба на столе62801

Nikoly@
27.09.2022, 11:22
Я неявляюсь любителем конфигурации и квадратиков, но тем не менее подскажу - выкиньте SEL#4 (в таком виде), пишите в peredacha событийно (например руками попробуйте)
Этим примером я вам хотел показать, что пока управляющий канал (Command) занят, никакие другие переменные в этом UMD не будут читаться.

Nikoly@
27.09.2022, 16:49
Попробуйте конечно, но в данном случае, на вашем скрине два стринг читают по 2 регистра, зачем? Одним стрингом можно читать до 40 WORD или до 20 REAL, уменьшите время опроса до 10 ms и всё! В этом и смысл использования стринг.
Один стринг всё читает, второй всё пишет, и всё за 20ms. Куда ещё быстрее?
Даже в библиотеке по стандарту 50ms, что в 2,5 раза медленнее.

До стрингов было 4 входных модуля (Register input module) + 8 выходных (Register output module).
4+8=12 регистров.
Т.к. опрос допустим идет 100 мс, то получать обновленные данные могу только через 1200 мс, а стремя стрингами через 300 мс.

kondor3000
27.09.2022, 18:25
До стрингов было 4 входных модуля (Register input module) + 8 выходных (Register output module).
4+8=12 регистров.
Т.к. опрос допустим идет 100 мс, то получать обновленные данные могу только через 1200 мс, а стремя стрингами через 300 мс.

Ещё раз, зачем 3 стринга если можно два? Если вы читаете время одним из стрингов, зачем вам время в ПЛК, если вы его даже не синхронизируете с ПР?
Зачем 100 ms, если можно можно 10 ms ? Итого 20 ms. Это если вам нужна скорость, даже 3 стринга это 30 ms.
А также скорость передачи можно поставить 115200.

Так и не понял чем вам плоха запись по изменению в отдельном UMD ?
Так и не попробовали уйти от прямых адресов, типа AT %QB6.2.0.0.

Nikoly@
28.09.2022, 09:45
Ещё раз, зачем 3 стринга если можно два? Если вы читаете время одним из стрингов, зачем вам время в ПЛК, если вы его даже не синхронизируете с ПР?
Зачем 100 ms, если можно можно 10 ms ? Итого 20 ms. Это если вам нужна скорость, даже 3 стринга это 30 ms.
А также скорость передачи можно поставить 115200.

Так и не понял чем вам плоха запись по изменению в отдельном UMD ?
Так и не попробовали уйти от прямых адресов, типа AT %QB6.2.0.0.

Стринги сделаю два.
Временем ПЛК, проверяется связь ПР102(слейв) с ПЛК. Если ПЛК не тактирует ПР102 в течении заданного времени, срабатывает таймер в ПР102 и происходит остановка линии.
Было так что ПР102 отвалилась и линия работала, ПЛК видит что нет связи но ничего сделать не может.
Скорость к сожалению ограничивает насосная станция на частотнике, которая является третьим UMD. У частотника выше 19200 нет возможности выбора скорости передачи данных.

kondor3000
28.09.2022, 10:29
Для проверки связи, использую нулевой бит секунд в ПЛК в качестве тактового, ПЛК выставляет бит, ПР или панель сбрасывает, 5 секунд не сбросил, потеря связи. Маску битов вместе с тактовым, вставляю в свободный регистр стринга.