Просмотр полной версии : Опрос ПР103 по ModBus RTU дргугого устройства, работаеющего по ModBus RTU
FuelingSystems
08.09.2025, 11:19
Добрый день! Стоит задача ПР-кой опросить (по ModBus RTU) устройство, которое, в свою очередь работает по ModBus RTU.
Опишу принцип опрашиваемого устройства: Есть блок обработки информации (мастер) и 64 канала для опроса периферийных устройств ( датчиков). В описании протокола говорится: "Перед чтением прикладных или точечных параметров необходимо выбрать канал. Выбор канала выполняется с помощью команды записи в единичный регистр 40001 (код функции – 06h). Младший байт регистра данных – номер канала (значение «0»- 1-й к***** «63» – 64-й канал). Старший байт регистра данных – адрес протокола «Магистраль» (протокол связи датчиков с блоком обработки информации), используется в технологических и сервисных приложениях для удаленного доступа к подключенным датчикам".
Вопрос - как настроить алгоритм опроса параметров датчиков ПР-кой? Я должен сначала записать номер нужного мне канала в опрашиваемое устройство? Потом уже настроить опрос по карте регистров? Или иду куда-то не туда? Опыта работы по ModBus малова-то, но стоит такая задача..
FuelingSystems
Конкретно какой датчик надо опрашивать? Модель в студию.
--
Лоджик>Прибор>Настройки прибора>Настройка порта 1>крутим под задачу.
Лоджик>Прибор>Настройки прибора>Мастер Modbus>(ПКМ) Добавить устройство>обзываем устройство опроса>прописываем адреса>создаем переменные опроса.
Имейте ввиду, целочисленные значения в самом Лоджике преобразуются в udint32 (целое без знака 32 бит) независимо от формата читаемого параметра. Даже если читает один регистр (2 байта\16 бит).
Если у Вас "другое устройство" тоже Master, то засада. Два мастера в одной сети не дружат!
FuelingSystems
08.09.2025, 13:48
FuelingSystems
Конкретно какой датчик надо опрашивать? Модель в студию.
--
Лоджик>Прибор>Настройки прибора>Настройка порта 1>крутим под задачу.
Лоджик>Прибор>Настройки прибора>Мастер Modbus>(ПКМ) Добавить устройство>обзываем устройство опроса>прописываем адреса>создаем переменные опроса.
Имейте ввиду, целочисленные значения в самом Лоджике преобразуются в udint32 (целое без знака 32 бит) независимо от формата читаемого параметра. Даже если читает один регистр (2 байта\16 бит).
Прилагаю описание прибора,который надо опросить (https://disk.yandex.ru/i/KB57fULPsA63nw) и выдержку из описания протокола (https://disk.yandex.ru/i/uzSfC5whN2O7lg).
FuelingSystems
08.09.2025, 13:49
Если у Вас "другое устройство" тоже Master, то засада. Два мастера в одной сети не дружат!
Там есть два интерфейса RS-485, по логике вещей вторичный блок устройства опрашивает датчики сами, а ПР-ка уже по второму RS-485 опрашивает само устройство (оно умеет выводить данные), загвоздка как раз в том, как правильно ПР-кой опросить..
FuelingSystems
Не нашел в мануалах как установить параметры связи по порту. Насколько я понял, там есть Езернет, и если он не занят, то можно связываться по нему.
По чтению:
1. По умолчанию адрес прибора 50h или 80dec, это надо указать в настройках устройства опроса в Лоджике.
2. Например надо опросить -значение средней плотности продукта Рср.,г/см3. В сетевой переменной проекта Лоджика ставим адрес 16dec, читаем в переменную тип "вещественный" (float). Третий регистр (18dec) можно не читать.
3. Далее надо опросить -значение уровня подтоварной воды Нв.,мм. Аналогично предыдущему, только адрес 19dec. Так же третий регистр состояния, он будет иметь адрес 21dec, читаем по желанию отдельным запросом в целочисленную переменную.
4. Если требуется читать регистры состояний, то скорее всего придется делать макрос на ST для их дешифровки.
5. Если получаемые данные будут аномальными, то потребуется поиграть с чередованием старших\младших байт\регистров в настройках устройства опроса.
Проще говоря, читаем требуемый параметр по адресу из мануала, флоат\вещественный занимает 2 регистра\четыре байта\два адреса, целочисленный параметр занимает 1 регистр\два байта\один адрес.
FuelingSystems
Насколько я понял, там есть Езернет, и если он не занят, то можно связываться по нему.
Это опция, вариант комплектации БСР1. У ТС вариант БРИ1, если я правильно понял. Нужно полный вариант документации смотреть, а не эти огрызки.
FuelingSystems
09.09.2025, 10:31
Это опция, вариант комплектации БСР1. У ТС вариант БРИ1, если я правильно понял. Нужно полный вариант документации смотреть, а не эти огрызки.
Да, при использовании БСР1 возможно наличие Ethernet, но не всегда он есть, задача - получить решение с RS-485. Документация полная тут. ( https://disk.yandex.ru/i/TwIO7Z_ks6gfWA , https://disk.yandex.ru/i/tEp7X7RCqMypEw )
FuelingSystems
09.09.2025, 10:35
По идее должно быть так:
Спасибо большое. Но тут, получается, номер канала задаётся вручную. Верно?
Немного неточно описал задачу, извиняюсь уж.. Необходимо чтоб ПР-ка постоянно опрашивала эту "Струну" (либо сразу по всем каналам, либо по установленным во время ПНР (например 2й, 3й, 10й и т.д.)) и управляла отключением насосов, когда уровень ниже уставки и т.д. .. Алгоритм остановки насоса сделаю сам, прошу помощи с алгоритмом опроса. ))
Спасибо большое. Но тут, получается, номер канала задаётся вручную. Верно?
Немного неточно описал задачу, извиняюсь уж.. Необходимо чтоб ПР-ка постоянно опрашивала эту "Струну" (либо сразу по всем каналам, либо по установленным во время ПНР (например 2й, 3й, 10й и т.д.)) и управляла отключением насосов, когда уровень ниже уставки и т.д. .. Алгоритм остановки насоса сделаю сам, прошу помощи с алгоритмом опроса. ))
А после задания номера канала в Select, значения Level и Weight считываются корректно?
Вот пример, как делаю я. Может поможет:
либо сразу по всем каналам
Сразу по всем каналам нельзя, няп, бо регистр для указания номера канала ровно 1 - 4x0000 (физический адрес). Задаёте номер канала, потом читаете. Глава "8 Алгоритмы работы".
Вы чем-нибудь для понимания пробовали эту Струну опрашивать? Если не, то попробуйте для начала тестовыми утилитами опрашивать, а потом уже за ПР-ку беритесь.
Рекомендую https://owen.ru/forum/showthread.php?t=41424
По-моему, для этой задачи должно хорошо подойти, поскольку в одном наборе данны можно разнородные типы регистров опрашивать/менять. Плюс на ходу приостанавливать опрос каких-то регистров - там ведь значения измеряемых параметров не сразу устанавливаются, не помню, сколько там по документации. Заодно этот момент оцените.
Кстати, любопытное по документации
Передача от MS: 50 06 00 00 00 03 С4 4А
С и А тут в кириллице :) , т.ч. аккуратнее с копипастой.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot