Просмотр полной версии : Изменить адрес устройства ModbusTCP в рантайме
Ellissar
26.10.2024, 14:31
Здравствуйте!
Есть Modbus TCP подключение 192.168.111.99 на нём два устройства (УВП) с адресами 22 и 23. Одно УВП выступает как основное, а второе - резервное. Обращение всегда происходит к 22, а при потере связи должно выполняться переключение на 23.
Я настроил подключение для одного УВП (с адресом 22). Все параметры читаются как положено. Также если в проекте поменять адрес на 23 и перекомпилировать, то всё тоже работает.
Подскажите как мне поменять адрес устройства в рантайме?
Пробовал через параметр(переменную) записывать в свойство "Адрес устройства" необходимый адрес но ничего не меняется. Также пробовал просто присвоить свойство "Адрес устройства" текстовому полю чтоб в рантайме посмотреть текущий заданный адрес но поле - пустое.
79644 _________ 79645
dreambelarus
27.10.2024, 09:42
А по какому признаку у вас должно быть переключение между устройствами??? Бит по какому-то каналу или при потере связи???
Вы уже по-моему этот вопрос задавали ранее что не ответили???
dreambelarus
27.10.2024, 14:50
Здравствуйте!
Есть Modbus TCP .........поле - пустое.
79684 Создаем параметр DINT с значением по умолчанию 20 (по умолчанию у меня 1 устройство на 20 адресе, а второе устройство полностью аналогичное на 16 адресе)
79680 Привязываем параметр DINT к адресу устройства (видно что там 0 по умолчанию) в разделе протокол/устройство
79682 Запускаем среду исполнения и видим опрос по первому адресу 20
79681 Меняем адрес устройства через параметр на 16 и видим данные с другого устройства в том же канале
79683 Вот эти же устройства опрашиваются MS3 для примера взял 560 регистр (тут у меня с 16 устройство в ОРС идет деление на 10 поэтому с примером надо на 10 умножать)
В примере я показал что можно через переменную построить логику выбора устройства.1..2...N если вы знаете как получить признак "не работающего устройства" :)))) то это рабочий функционал....или вы хотите воспользоваться штатными средствами резервирования MS4D??? Судя по тому что вы уже освоили тему про признак двух работающих контролеров в предыдущем посту ответ вам известен :)))
Ellissar
28.10.2024, 08:05
А по какому признаку у вас должно быть переключение между устройствами??? Бит по какому-то каналу или при потере связи???
Переключение будет просто с кнопки на АРМ.
Вы уже по-моему этот вопрос задавали ранее что не ответили???
Возможно и задавал. Я редко работаю с Masterscada поэтому если писал то наверное забыл.
Ellissar
28.10.2024, 09:27
79684 Создаем параметр DINT с значением по умолчанию ...
Всё сделал как вы описали, перепроверил несколько раз. Не сработало.
Какое значение по умолчанию я присваиваю полю адрес это устройство и опрашивается. Если присваиваю, например, 0 то вообще ни одно устройство не на связи, что логично.
Приём что интересно сам параметр, который хранит адрес, меняется в рантайме, а именно свойство "Адрес" не меняется.
Пробовал ставить галочки "Подключение по условию" и "Опрос по условию". Присваивал параметрам "Опросить" и "Подключиться" false после этого изменял параметр с адресом и потом снова присваивал true. Всё равно не сработало.
Может это от версии Masterscada ещё зависит? У меня 1.2.18.29261.
Может это от версии Masterscada ещё зависит? У меня 1.2.18.29261.
Если верить документации, изменение "настроек протокола/модуля Modbus в RT" добавлено в версии 1.3.2
Ellissar
28.10.2024, 12:31
Если верить документации, изменение "настроек протокола/модуля Modbus в RT" добавлено в версии 1.3.2
Спасибо. Разработчик ответил также.
Буду думать как обойти эту проблему.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot