PDA

Просмотр полной версии : ПЛК 150-220 А. М. В режиме Modbus slave'e



Spravkah
19.01.2022, 20:48
Opc сервер опрашивает ПЛК по modbus tcp. Нужно чтобы он опрашивал подключенные к ПЛК модули ввода/вывода и пвт10, по rs-485.
В проекте сделал modbus slave , в него поместил мастер .в codesys подмодуль мастер получает данные но opc при опросе выдаёт ошибку команды 3 превышен тайм-аут. При этом значения дискретных выходов самого ПЛК в opc отображаются.

kondor3000
19.01.2022, 20:54
Opc сервер опрашивает ПЛК по modbus tcp. Нужно чтобы он опрашивал подключенные к ПЛК модули ввода/вывода и пвт10, по rs-485.
В проекте сделал modbus slave , в него поместил мастер .в codesys подмодуль мастер получает данные но opc при опросе выдаёт ошибку команды 3 превышен тайм-аут. При этом значения дискретных выходов самого ПЛК в opc отображаются.

Выкладывайте проект, что то вы намудрили с помещением мастера в слейв, так не делается.
Мастер должен опросить модули по одним регистрам с именами ( имя пишется вместо АТ, по щелчку мыши, например In1, In2...) Слейв передаёт регистры в ОПС с другими именами, например Out1, Out2.
А в программе ПЛК, принятые регистры присваиваются передаваемым Out1:= In1; Out2:= In2;
Советую посмотреть обучающие видео на ю-туб, их полно у Овена.

Spravkah
19.01.2022, 21:14
дело в том, что в мануале конфигуратор плк в разделе modbus slave есть целый пункт на эту тему. я нашел видео на эту тему. инженер из овен мне написал что при такой организации памяти внешний мастер может получать данные с модулей и пвт опрошенных самим плк

Spravkah
19.01.2022, 22:13
58802 58804 58803 58805

Spravkah
19.01.2022, 22:28
Modbus поверх tcp? По умолчанию было folce не пошло решил попробовать так

kondor3000
21.01.2022, 08:40
дело в том, что в мануале конфигуратор плк в разделе modbus slave есть целый пункт на эту тему. я нашел видео на эту тему. инженер из овен мне написал что при такой организации памяти внешний мастер может получать данные с модулей и пвт опрошенных самим плк

Никогда так не делал, попробовал в слейв вставить мастера. В эмуляции всё работает. Надо будет проверить в железе.

petera
21.01.2022, 10:27
Никогда так не делал, попробовал в слейв вставить мастера. В эмуляции всё работает. Надо будет проверить в железе.

Работает на ура только слейв в слейве! Можно использовать для доступа к плк и разных мест, например, из панели или из СКАДА https://owen.ru/forum/showthread.php?t=14199&p=146969&viewfull=1#post146969

Мастер в слейве работает не правильно!
Но если мастер встроить в слейв, то слейв реально видит(и читает и пишет) во вложенном мастере только модули Register output, а Register input всегда отображаются в слейве с нулевым содержимым. Ссылка выше

ЗЫ.
Еще вариант - использовать два разных порта в одном слейве один для панели, второй - для СКАДА
Все переменные будут общими и для панели и для СКАДА.
И при изменении уставки с СП ее значение обновится в скаде и наоборот, при изменении уставки со скады она обновится в СП307

kondor3000
21.01.2022, 14:02
Работает на ура только слейв в слейве! Можно использовать для доступа к плк и разных мест, например, из панели или из СКАДА https://owen.ru/forum/showthread.php?t=14199&p=146969&viewfull=1#post146969

Мастер в слейве работает не правильно!
Но если мастер встроить в слейв, то слейв реально видит(и читает и пишет) во вложенном мастере только модули Register output, а Register input всегда отображаются в слейве с нулевым содержимым. Ссылка выше

ЗЫ.
Еще вариант - использовать два разных порта в одном слейве один для панели, второй - для СКАДА
Все переменные будут общими и для панели и для СКАДА.
И при изменении уставки с СП ее значение обновится в скаде и наоборот, при изменении уставки со скады она обновится в СП307
petera, спасибо, значит в данном случае это не вариант, надо делать как писал в начале. Добавлять в 2 раза больше регистров в мастере нет смысла, да и не выйдет при опросе датчиков и модулей МВВ.

Spravkah
28.01.2022, 08:37
Разобрался. Как и сказали мастер в слэйве не катит. Отдельно мастер отдельно слейв. В итоге пришлось ставить ПЛК 110-30 так как нужно было опросить ещё счётчик Меркурий а для него нужен отдельный порт rs-485

kondor3000
28.01.2022, 09:09
Разобрался. Как и сказали мастер в слэйве не катит. Отдельно мастер отдельно слейв. В итоге пришлось ставить ПЛК 110-30 так как нужно было опросить ещё счётчик Меркурий а для него нужен отдельный порт rs-485

Провёл эксперимент. Как и было сказано, мастер в слейве работает не правильно. Register input всегда отображаются в слейве с нулевым содержимым.
Но если очень надо, то можно выйти из положения.
Сделал просто, в программе создал массив в слейве равный по объёму массиву input Register мастера. Мастером считал все inputRegister блока МВ110-8А через два STRING и присвоил по указателю на первый элемент, массив переменных мастера в массив переменных слейва. 58973
Можно сделать и через структуру. Всё работает!

petera
28.01.2022, 10:08
Провёл эксперимент. Как и было сказано, мастер в слейве работает не правильно. Register input всегда отображаются в слейве с нулевым содержимым.
Но если очень надо, то можно выйти из положения.
Сделал просто, в программе создал массив в слейве равный по объёму массиву input Register мастера. Мастером считал все inputRegister блока МВ110-8А через два STRING и присвоил по указателю на первый элемент, массив переменных мастера в массив переменных слейва. 58973
Можно сделать и через структуру. Всё работает!

Ай, молодец! :rolleyes:

kondor3000
02.09.2022, 23:20
По мотивам этого видео, всё оказалось ещё проще https://www.youtube.com/watch?v=0w8hZK6yLW4&t=1s
Можно спокойно читать переменные мастера, вставленного в слейв
Достаточно в свойствах Codesys 2.3 поставить пробел и дописать "/debug" 62452
И получим адреса переменных Мастера в Слейве, по которым можно читать все переменные мастера
Считаем первый адрес Register Input module 36-20=16 /2= 8 - адрес
второй адрес Real Input module 40-20=20 /2=10 - адрес
2 Byte 32-20=12 /2=6 - адрес 62456

ЗЫ : После проверки, оказалось, что это работает только на ПЛК версии [M 02] или V2, так как все переменные Мастера в Слейве, располагаются в области Holding регистров и нумеруются последовательно (пример адреса 2/40).
На старых ПЛК (пример адреса 1/40), Input регистры, так и отображаются с содержимым Holding регистров, а область памяти Input регистров затирает область Holding регистров.
Цифры 1 (Input регистры) и 2 (Holding регистры) в начале,
как раз и показывают в какой области памяти находятся регистры. 62460 62459