Просмотр полной версии : ПЛК 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 есть целый пункт на эту тему. я нашел видео на эту тему. инженер из овен мне написал что при такой организации памяти внешний мастер может получать данные с модулей и пвт опрошенных самим плк
Никогда так не делал, попробовал в слейв вставить мастера. В эмуляции всё работает. Надо будет проверить в железе.
Никогда так не делал, попробовал в слейв вставить мастера. В эмуляции всё работает. Надо будет проверить в железе.
Работает на ура только слейв в слейве! Можно использовать для доступа к плк и разных мест, например, из панели или из СКАДА 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
Можно сделать и через структуру. Всё работает!
Провёл эксперимент. Как и было сказано, мастер в слейве работает не правильно. 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
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot