Здравствуйте!
Имеется ПЛК150. Можно ли в Codesys 2 программно считать параметр Address модуля Modbus (slave) из конфигуратора?
Спасибо.
Здравствуйте!
Имеется ПЛК150. Можно ли в Codesys 2 программно считать параметр Address модуля Modbus (slave) из конфигуратора?
Спасибо.
ээээээ так Мастер как бы и читает параметр Адрес модуля слейва и если не получает ответ на свой запрос по этому адресу, то выдаёт ошибку. Ну это грубо говоря.Можно ли в Codesys 2 программно считать параметр Address модуля Modbus (slave) из конфигуратора?
если же вы хотите "обратным ходом" вычислить адрес слейва, то хотелось бы, чтобы вы поняли - для конфигурации ПЛК нет слейва как "хардварного" компонента, который он конфигурирует. Есть Мастер, который вы настраиваете на опрос определённых регистров по определённым адресам. К конфигурированию слейва как такового - адрес, скорость и прочее - Мастер не имеет никакого отношения
А для такого считывания как вы хотите, в КДС должен быть встроен механизм "широковещательного" опроса по всему диапазону адресов по всему диапазону скоростей (скорость же тоже важный параметр Модбас, да?)
Есть в КДС такой механизм опроса? посмотрите документацию
Уточню: Есть программа на Codesys, в ней в "Конфигурации ПЛК" добавлем модуль "Modbus (slave):". У него на вкладке "Параметры" есть параметр "Address", заданый при конфигурировании вручную. Мне из это же программы нужно считать значение параметра "Address". Все внутри одной программы одного ПЛК.
Добрый день.
Очень экзотический запрос.
Можете описать реальный кейс, как вы планируете это использовать?
По существу вопроса. Считать из программы ПЛК адрес слейв устройства, добавленного в конфигурацию ПЛК - не получится.
Однако, опрос можно проводить и через библиотеки, напрямую из кода ПЛК, в этом случае адрес можно задавать с помощью переменной.
Александр Андреевич Симонов
Инженер по продуктам «ПЛК, модули и OwenCloud»
Не работаю в ОВЕН с 01.07.22
По всем вопросам обращайтесь на почту: support@owen.ru
Для чего мне это нужно: система состоит из нескольких однотипных, но не идентичных объектов, опрашиваемых по шине одним мастером. Мне бы хотелось иметь общую "базу кода" для этих объектов, т.к. различие в их поведении можно определить в паре ключевых мест в программе, остальные 95% кода идентичны для всех слейвов. Сделав предположение, что программно изменять конфигурацию нельзя, т.к. скорее всего конфигурация применяется один раз после старта ПЛК, я скромно надеялся на возможность хотя бы считать значение параметра Address слейвов. Адрес modbus - это то, что точно будет отличать эти объекты друг от друга и по его значению можно было бы определять логику в этих ключевых местах.
Конечно можно без проблем определить для этого специальную константу, но это уже нужно не забыть изменять и ее тоже.
Последний раз редактировалось Ovtia; 16.02.2022 в 04:42.
это Вас уже стало сложно понять, так кому нужна информация о номере слейва мастеру теперь что ли?
Если для Вас сложно перейти на библиотеки а в конфигураторе нельзя взять заданный адрес, то мастеру остается писать в конкретный слейв, адрес(UnitID) этого слейва в специально созданный регистр, чтобы его можно использовать в подчиненном контроллере
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Если я правильно понял, то вы хотите сделать универсальную конфигурацию для разных слейвов.
Так делать однозначно не стоит.
Так как ПЛК (Мастер) будет пытаться опрашивать все устройства и регистры, не зависимо от того есть ли они в сети.
Если вам нужно чтобы мастер "прощупал" сеть слейвов, и на этом основании как-то поменял свою логику, то тут только через библиотеки писать сетевой обмен.
Александр Андреевич Симонов
Инженер по продуктам «ПЛК, модули и OwenCloud»
Не работаю в ОВЕН с 01.07.22
По всем вопросам обращайтесь на почту: support@owen.ru
Нет нужно мне вот это:
Уточню: Есть программа на Codesys, в ней в "Конфигурации ПЛК" добавлем модуль "Modbus (slave):". У него на вкладке "Параметры" есть параметр "Address", заданый при конфигурировании вручную. Мне из это же программы нужно считать значение параметра "Address". Все внутри одной программы одного ПЛК.Теперь идею понял, к сожалению, такой вариант не подходит, потому, что подчиненный ПЛК должен работать и без мастера.Сообщение от capzap