Стартовая страница › Форумы › Взаимодействие с устройствами › Modbus › Ограничения по ModBUS(holding registers)
Помечено: Modbus
- В этой теме 18 ответов, 5 участников, последнее обновление 2 года, 3 месяца назад сделано Mikhail.
-
АвторСообщения
-
11.11.2021 в 10:57 #21220MettallУчастник
Пытаюсь связать ПЛК150(ОВЕН) по Modbus TCP c RAPID SCADA.
Сделал все настройки создал 30 элементов holding registers типа float — все работает обмен идет.Как только добавляю 31 элемент коммутатор выдает ошибку(точнее он на секунду опрашивает и потом ошибка связи «2021-11-11 09:46:15 Попытка установки TCP-соединения может быть не ранее, чем через 3 с после предыдущей.»).
Пробовал создать 2 группу элементов как посоветовали в этой ТЕМЕ
но ошибка связи осталась(
Подскажите в чем может быть причина?11.11.2021 в 11:11 #21223MettallУчастникЭто с подробного журнала!
2021-11-11 10:08:02 Сеанс связи с КП 12 «КП Варка Автоматика», тип: KpModbus, адрес: 12
Запрос значений группы элементов
Отправка (12): 00 31 00 00 00 06 02 03 00 01 00 3C
Приём (7/7): 00 31 00 00 00 7B 02
Приём (122/122): 03 78 40 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 41 A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3F 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
OK!
Запрос значений группы элементов
Отправка (12): 00 32 00 00 00 06 02 03 00 3D 00 02
Приём (7/7): 00 32 00 00 00 03 02
Приём (2/2): 83 02
Ошибка устройства: [02] ILLEGAL DATA ADDRESS!
Запрос значений группы элементов
Отправка (12): 00 33 00 00 00 06 02 03 00 3D 00 02
Приём (7/7): 00 33 00 00 00 03 02
Приём (2/2): 83 02
Ошибка устройства: [02] ILLEGAL DATA ADDRESS!
Запрос значений группы элементов
Отправка (12): 00 34 00 00 00 06 02 03 00 3D 00 02
Приём (7/7): 00 34 00 00 00 03 02
Приём (2/2): 83 02
Ошибка устройства: [02] ILLEGAL DATA ADDRESS!
Запрос значений группы элементов
Отправка (12): 00 35 00 00 00 06 02 03 00 3D 00 02
Приём (7/7): 00 35 00 00 00 03 02
Приём (2/2): 83 02
Ошибка устройства: [02] ILLEGAL DATA ADDRESS!
Запрос значений группы элементов
Отправка (12): 00 36 00 00 00 06 02 03 00 3D 00 02
Приём (7/7): 00 36 00 00 00 03 02
Приём (2/2): 83 02
Ошибка устройства: [02] ILLEGAL DATA ADDRESS!2021-11-11 10:08:02 Отключение от 192.168.152.196
2021-11-11 10:08:02 Установка TCP-соединения с 192.168.152.196:503
Ошибка при установке TCP-соединения: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение 192.168.152.196:5032021-11-11 10:08:03 Невозможно выполнить сеанс связи с КП 12 «КП Варка Автоматика», т.к. соединение не установлено
2021-11-11 10:08:03 Попытка установки TCP-соединения может быть не ранее, чем через 5 с после предыдущей.
Если делаю связь ПЛК+Modbus_OPC_inSAT+RAPID — все работает, а напрямую нет(
11.11.2021 в 12:48 #21225manjey73УчастникОшибка устройства: [02] ILLEGAL DATA ADDRESS!
Разберитесь с этим, почему происходит ошибка ?
нет такого регистра в конфигурации ПЛК или некорректное выравнивание там же и так далее.
Если что, то 30 это 120 байт уже, хоть и ограничение Modbus 256 но кто их знает, этих Овен
11.11.2021 в 15:02 #21228MettallУчастникВ общем тему можно закрыть.
Решение: для того чтоб ошибки не было, необходимо в плк150(овен)в конфигураторе добавлять лишний тег(float).То есть последний мой тег 34(идент узла в конфигураторе), я добавил 35 и данные(на предыдущих тегаг) пришли в норму. Последний тег необходим для выравнивания.
И также необходимо создать 2 группу элементов.11.11.2021 в 15:34 #21232manjey73УчастникДа не нужен там последний тег, там постоянное выравнивание, вероятно вы читаете с 1-ого регистра а не с 0-вого, вот у вас и косяк получился.
11.11.2021 в 16:17 #21233MettallУчастникmanjey73 — ОГРОМНОЕ Спасибо за подсказку!.
Действительно нужно было поставить не только галочку «начинать с нуля» но еще и «адрес нач.элемента»- выставить 0(было 1)+поставил порядок байт для float «2301» (без этого связь была но показаний не было).- Этот ответ был изменен 2 года, 5 месяцев назад от Mettall.
26.12.2021 в 11:38 #21371gemchug74УчастникДоброго дня всем, с Наступающим! Вопрос следующий, каким образом сделать действие у кнопки в рапиде через 15-ю функцию Modbus, то-есть устанавливать сразу группу бит в нужное состояние, стоит задача включать и сразу выключать состояние
27.12.2021 в 08:45 #21372a80808УчастникДоброе утро!
Если я правильно понимаю задачу, то надо к выходному каналу привязать формулу, в которой уже несколькими формулами SetBit() ставить нужные биты в нужное состояние.27.12.2021 в 13:42 #21373gemchug74Участникa80808 Доброе утро, спасибо за ответ, не могли бы вы привести пример
Конфиг такой, три кнопки, старт пауза стоп, при включении любой из них отключаются две остальные и снимается единица с актуальной, никогда не работал с формулами27.12.2021 в 14:02 #21374manjey73Участник@gemchug74 сделать 3 кнопки на интерфейса ввода команды не проблема, так как нажать можно только одну из них. Вопрос в другом, у вас команда каждой копки это свой собственный бит?
Или в зависимости от нажатой кнопки образуется определенное число и посылается в ПЛК или что там у вас?- Этот ответ был изменен 2 года, 3 месяца назад от manjey73.
27.12.2021 в 14:21 #21376gemchug74УчастникКнопки работают корректно внутри программы, но из рапиды если приходит 1 на одну из них остается висеть в этом состоянии на входе, мне нужен просто импульс из рапиды и все, 1-0
27.12.2021 в 14:29 #21377MikhailМодераторДобрый день!
Последовательность действий может быть следующей:
1. Добиться корректной отправки команды в Коммуникаторе. Приложить скриншоты и логи.
2. Разместить нужные кнопки на схеме. Приложить скриншоты.
3. Далее станет ясно, какая формула канала управления нужна, чтобы связать п.1 и 2.27.12.2021 в 14:45 #21378gemchug74Участник1. Добился все работает
2. Схема простая, ничего интересногоВопрос простой ведь, есть ли возможность сделать отправку команды из рапиды импульсом , так называемая радиокнопка
27.12.2021 в 16:45 #21379manjey73УчастникКонечно есть, один из вариантов Модуль автоуправления. Ой, только этот вариант и есть, если не реализовано в самом ПЛК, когда Scada посылает 1, ПЛК принял и сбросил в 0. Последнее это кстати самая правильная реализация, но если программер ПЛК не подумал, то потом и выясняется, а как бы сделать это на верхнем уровне.
28.12.2021 в 08:49 #21380a80808УчастникМда…опять классическая задача импульса 🙂
Оно конечно можно в формулу sleep добавить, но Михаил говорит нельзя — остановится опрос на это время…
Как (ну совсем теоретический :)) вариант использовать в пару еще и один входной канал:
1. От кнопки отправляем команду с установленными битами на контроллер, одновременно устанавливаем входной канал (или его статус) в 1. Этот канал должен быть дорасчетным;
2. Во входном канале пишем формулу анализа его значения (или статуса) и в случае «1» делаем SetVal в «0»;
3. В формуле выходного канала на кнопке делаем анализ входного канала на «0» и отправляем команду со сброшенными битами.По идее «ширина» импульса (если сработает конечно :)) должна быть около секунды — время цикла опроса каналов.
P.S. что то у меня исчезли все кнопки стиля в редакторе сообщения — ну там жирный/наклонный/ссылка…
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.