1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Помощь в создании конфигурации OPC-сервера

SCADA, серверы, АРМ верхнего уровня, диспетчерские

Модератор: Глоб.модераторы

Закрыто

Автор темы
egorsubbotin
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 20 янв 2022, 03:35
Имя: Егор
Страна: Россия
город/регион: Иркутск
Поблагодарили: 2 раза

Помощь в создании конфигурации OPC-сервера

Сообщение egorsubbotin »

Всем доброго времени суток. Я новичок-самоучка в делах автоматизации на должности наладчик КИПиА.
Для предприятия возникла необходимость в создании проектов в SCADA-системе. Работаю в MasterSCADA, опрос регистров осуществляю с помощью MasterOPC.
Возникла проблема с приборами фирмы "ТЕПЛОПРИБОР" - Диск-250М.
Проблема в том, что не удается получить корректное значение тега, а именно значение измеряемой температуры.

На данный момент конфигурация следующая:

Опрос по интерфейсу rs-485

1) Протокол - Modbus ASCII (RTU не поддерживает);
2) скорость - 9600, без контроля четности, 1 стоп-бит, 8 бит данных;
3) Адрес опрашиваемого тега 0x0000 ( т.к. в документации указано "данные последнего измерения 0х00-0х01, float -число");
тип данных в устройстве -float, тип данных на сервере - float;
4) Регион input registers (т.к. в документации указано "команда 0x04 служит для чтения регистров данных)
5) Перестановка байтов значении - использовал все типы перестановки байт
*старшим байтом вперед - значение непостоянное, постоянно меняется, некорректное;
*старшим словом вперед - значение = 0;
* старшим двойным словом вперед - значение = -3093.xxxx , непостоянное, постоянно меняется, некорректное;
*без перестановки байт - значение непостоянное, постоянно меняется, некорректное;

Качество связи GOOD.

Так же пробовал изменять межсимвольный таймаут 0, 50, 300, 500, 700, 1000, 1500, 2000, 3000, корректного значения получить не удалось.

Как мне поступить в сложившейся ситуации, подскажите пожалуйста?
Может есть у кого-нибудь найдутся для меня рекомендации, что нужно сделать, чтобы я смог корректно опросить регистры 0x00-0x01.

Velt
освоился
освоился
Сообщения: 233
Зарегистрирован: 26 мар 2017, 13:05
Имя: Денис
Страна: Россия
город/регион: Самара
Благодарил (а): 15 раз
Поблагодарили: 38 раз

Помощь в создании конфигурации OPC-сервера

Сообщение Velt »

egorsubbotin писал(а): 20 янв 2022, 04:06 3) Адрес опрашиваемого тега 0x0000 ( т.к. в документации указано "данные последнего измерения 0х00-0х01, float -число")
Я не знаток систем, с которыми вы работаете. Но из общего опыта могу предположить, что проблема в правильном преобразовании двух регистра Modbus типа Word (4 байта) в тип Float (4 байта). Погуглите формат представления числа float в регистрах word.

Автор темы
egorsubbotin
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 20 янв 2022, 03:35
Имя: Егор
Страна: Россия
город/регион: Иркутск
Поблагодарили: 2 раза

Помощь в создании конфигурации OPC-сервера

Сообщение egorsubbotin »

Благодарю за ответ.
Проблема решена, было установлено неверное чередование байт.
При опросе последнего измеренного значения нужно запрашивать 2 регистра начиная с адреса 0x00 командой 0x04.
Байты данных идут от младшего байта к старшему, т.е. для значения 0xAABBCCDD в шестнадцатиричной системе исчисления, где 0xAA -старший байт, а 0xDD - младший, порядок байт в ответе будет следующий: 0xDD 0xCC 0xBB 0xAA.
Закрыто

Вернуться в «Верхний уровень автоматизации (отображение)»