Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Дачтик SE + ПР200
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
Сергей А. Ефремов
Добрый день.

Не понимаю как настроить сетевую переменную, чтобы считывать показания датчика. У Овена регистры 512, 514, 516, а у Шнайдера 1, 3, 5. Вообще не отдупляю как их поженить между собой. Ткните носом пожалуйста или накиньте овеновский файл для лоджика, как это делается.
Нажмите для просмотра прикрепленного файла
LordN
https://ipc2u.ru/articles/prostye-resheniya/modbus-rtu/
Код
Номер регистра    Адрес регистра HEX    Тип    Название    Тип
1-9999    0000 до 270E    Чтение-запись    Discrete Output Coils    DO
10001-19999    0000 до 270E    Чтение    Discrete Input Contacts    DI
30001-39999    0000 до 270E    Чтение    Analog Input Registers    AI
40001-49999    0000 до 270E    Чтение-запись    Analog Output Holding Registers    AO

Нажмите для просмотра прикрепленного файла

Нажмите для просмотра прикрепленного файла
Сергей А. Ефремов
В самом начале затупил, не обратил внимание на то, что порт ПР200 определён как slave, переопределил на master, но с настройками всё равно не получается. Там написано про 32 бита, может с этим связано?
LordN
Цитата(Сергей А. Ефремов @ 21.2.2022, 18:33) *
В самом начале затупил, не обратил внимание на то, что порт ПР200 определён как slave, переопределил на master, но с настройками всё равно не получается. Там написано про 32 бита, может с этим связано?

конечно.
надо задать тип, а затем, если все выводится не так, поиграть с галками
Нажмите для просмотра прикрепленного файла
Сергей А. Ефремов
Овен ни в какую, модбасвувером мучаю, обмен есть, а какие данные то же не понято.
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
LordN
я когда новую непонятную зверушку мучаю, всегда начинаю с того, что создаю несколько целых однорегисторных переменных и пытаюсь вычитать их последовательно перебирая адреса и функции. сейчас код пишут все кому не лень и выдержка стандарта зачастую никакущая.
ну например.
создаю
х1 int адрес 0
х2 int адрес 1
x3 int адрес 2
и т.д.
и вычитываю их сначала 3й, а потом 4й функциями.
групповые запросы и функции пока отключаю ибо частенько дивайсы их либо не поддерживают, либо имеют жёстко ограниченный размер пакета, типа как у ебмпапст в 23байта и давай до свиданья.
и вот когда порегистрово уже все читается , тогда и начинаю колдовать дальше.
ибо нередки косяки в настройках битрейта чет-нечет и т.д.
на этом первом этапе юзаю CAS Modbus Scanner
Нажмите для просмотра прикрепленного файла
manjey73
Время опроса задайте и не взводите по команде импульсом. з.ы. в этом плане ПР уг...

У датчика 16-й адрес? smile.gif
Сергей А. Ефремов
Цитата(manjey73 @ 21.2.2022, 23:20) *
Время опроса задайте и не взводите по команде импульсом. з.ы. в этом плане ПР уг...

У датчика 16-й адрес? smile.gif


Нажмите для просмотра прикрепленного файла

Вообще никак, и с галочками и без галочек, в любой последовательности, безрезультатно.

Делать что? )) Менять контроллер?
manjey73
Если читает программой, то должен прочесть и ПР200. Чудес не бывает. Скорость, четность, режим выставлены правильно?

У ПР200 только нет возможности групповых запросов, ну и наколдовали они там что-то с периодами запросов по команде, команду надо удерживать в 1 на все время чтения, то есть импульс не прокатывает для запуска цикла чтения.

Ну и стартовые адреса регистров может быть не 5 а 4 надо поставить, но это мелочи уже.
Сергей А. Ефремов
Цитата(manjey73 @ 22.2.2022, 11:52) *
Если читает программой, то должен прочесть и ПР200. Чудес не бывает. Скорость, четность, режим выставлены правильно?

Обмен есть, ошибок нет, а данные приходят - непонятно что там в них содержится... какие-то левые цифры...
manjey73
Левые цифры могут быть по
1. не с того регистра начинается чтение
2. неправильно выставлена перестановка байт/слов

я обычно становлюсь снифером и пакет байт, например float, закидываю в онлайн калькулятор чисел, смотрю как надо переставить чтобы получить корректное значение.
LordN
Цитата(Сергей А. Ефремов @ 22.2.2022, 15:55) *
Обмен есть, ошибок нет, а данные приходят - непонятно что там в них содержится... какие-то левые цифры...

я ж говорю, касмодбас, он умеет считанные последовательные регистры в любом виде показать.
я тоже полагаю что косяк в адресе. не с того числа отсчет.
Сергей А. Ефремов
Цитата(manjey73 @ 22.2.2022, 12:58) *
Левые цифры могут быть по
1. не с того регистра начинается чтение
2. неправильно выставлена перестановка байт/слов

я обычно становлюсь снифером и пакет байт, например float, закидываю в онлайн калькулятор чисел, смотрю как надо переставить чтобы получить корректное значение.



Цитата(LordN @ 22.2.2022, 13:15) *
я ж говорю, касмодбас, он умеет считанные последовательные регистры в любом виде показать.
я тоже полагаю что косяк в адресе. не с того числа отсчет.


Нажмите для просмотра прикрепленного файла

Снизу вот есть ответная строка.

Касмодбас буду пробовать, спасибо.
manjey73
А вы можете не скрином кинуть сюда HEX строки запроса и ответа? а то неприлично как-то заставлять людей набивать циферки с экрана...

# ________Raw______ Float
0 ____ 0A 21 01 00 ____ 7.752056e-33

Попробуйте указать стартовый регистр 0 и поменять места словами всего лишь.

https://www.scadacore.com/tools/programming...-hex-converter/

Вы же понимаете, что если это 1-й регистр, то он не тянет на температуру, если вы конечно его не на улице повесили и не меряете минус хрен знает сколько градусов
LordN
Цитата
Снизу вот есть ответная строка.


я же говорю, по одному регистру надо пытаться читать, а не по 10 штук зараз.
и разными функциями.
Сергей А. Ефремов
Цитата(manjey73 @ 22.2.2022, 16:07) *
А вы можете не скрином кинуть сюда HEX строки запроса и ответа? а то неприлично как-то заставлять людей набивать циферки с экрана...

# ________Raw______ Float
0 ____ 0A 21 01 00 ____ 7.752056e-33

Попробуйте указать стартовый регистр 0 и поменять места словами всего лишь.

https://www.scadacore.com/tools/programming...-hex-converter/

Вы же понимаете, что если это 1-й регистр, то он не тянет на температуру, если вы конечно его не на улице повесили и не меряете минус хрен знает сколько градусов


Нажмите для просмотра прикрепленного файла

Большое спасибо за информацию и отдельное спасибо, что не сочли за труд глянуть дату, завелась шарманка, работает.

Установил регистры 0 - температура, 2 - влажность, 4 - СО2, пээрка видит данные, выводит на экран. Почему так? Интересно.

А сетпойнты как считывать/записывать? У них те же регистры... запутался ещё больше. ))

Карта узлов Modbus
Коды функций:
Код функции Функция 03
Чтение регистров хранения (RW) 04
Чтение регистров ввода (RO)
06 Запись единичного регистра
16 Запись нескольких регистров
01 Чтение регистра флагов
05 Запись одинарного регистра флагов
15 Запись нескольких регистров флагов

Все эти значения соответствуют одноименным объектам BACnet.
Их определения см. в Заявлении о соответствии BACnet.
Обратите внимание, что попытка записи в регистры хранения только для чтения приведет к ошибке и вся команда записи не будет выполнена, даже если также была запрошена запись в регистры с возможностью чтения/записи. В этом случае выдается код исключения 2.

«Сохранено» означает, что значения сохраняются при отключении электропитания.

Регистры ввода (только для чтения):
Регистр Описание
1 Показания температуры в 32-разрядном виде по стандарту IEEE с плавающей запятой
3 Показания влажности в 32-разрядном виде по стандарту IEEE с плавающей запятой
5 Показания CO2 в 32-разрядном виде по стандарту IEEE с плавающей запятой
7 Показания ЛОС в 32-разрядном целочисленном виде
9 Модель
42 Заводской номер

Регистры хранения (чтение/запись):
Регистр Описание
1 Уставка температуры
3 Уставка влажности
5 Набор цветов экрана
7 Название устройства
40 Скорость вентилятора
LordN
Цитата(Сергей А. Ефремов @ 24.2.2022, 19:29) *
Нажмите для просмотра прикрепленного файла

Большое спасибо за информацию и отдельное спасибо, что не сочли за труд глянуть дату, завелась шарманка, работает.

Установил регистры 0 - температура, 2 - влажность, 4 - СО2, пээрка видит данные, выводит на экран. Почему так? Интересно.

А сетпойнты как считывать/записывать? У них те же регистры... запутался ещё больше. ))

ну вот, другое дело smile.gif
а то контроллер сразу менять smile.gif
исторически так сложилось, что физические адреса, оффсет, начинаются с единицы, а логические то так, то эдак, хотя обычно с нуля. но китайцы как дети малые им пох история, у них свое видение логики.
я потому и говорю, что начинать надо читать порегистрово, чтобы понять откуда начинается отсчет в приборе и как он соотносится с читающим мастером.

сетпоинты имеют иную функцию на чтение. логические адреса те же, а вот физические иные, внимательно см.ссылку вначале темы.
manjey73
Цитата
Почему так?


Логический/физический адрес Modbus. Производители не всегда указывают точку отсчета.

Цитата
А сетпойнты как считывать/записывать? У них те же регистры... запутался ещё больше.


Команды разные. Ну и поищите в доке на ПР, как рассчитать положение бита, там где-то было. Ну и как бы, а оно надо при использовании с ПР200 ?
Сергей А. Ефремов
Всем, здрасте.

Ковыряю (пытаюсь подключить к ПР200) такой вот контроллер с алиэкспресс:

Нажмите для просмотра прикрепленного файла

Основные регистры (углекислота, влажность, температура) считываются без проблем, а вот остальные (вкыл/выкл, L-M-H, Mode) никак.

Нажмите для просмотра прикрепленного файла

Вувером, для примера 13-й регистр считывается, но значение отображается в седьмом бите, и как его извлечь от туда с помощью ПР200 вообще непонятно.

Нажмите для просмотра прикрепленного файла

Как я только не пробовал, выводится либо 0 либо 999.

Помогите разобраться, какие настройки должны быть у ПР200, чтобы он мог корректно считывать эти регистры.

Третий день бьюсь с этой проблемой.
LordN
в фбд блоках овенлоджика д.б. преобразователь int-bool
это раз
два - пробуйте читать групповыми битовыми функциями, т.е. читаете подряд все шестнадцать бит, может прокатить.
три - биг эндиан, ло эндиан.
но я бы ограничился пунктом 1. ну и три

Нажмите для просмотра прикрепленного файла
кажется это оно


Нажмите для просмотра прикрепленного файла
или это
Сергей А. Ефремов
Цитата(LordN @ 8.4.2022, 17:25) *
в фбд блоках овенлоджика д.б. преобразователь int-bool
это раз
два - пробуйте читать групповыми битовыми функциями, т.е. читаете подряд все шестнадцать бит, может прокатить.
три - биг эндиан, ло эндиан.
но я бы ограничился пунктом 1. ну и три

Нажмите для просмотра прикрепленного файла
кажется это оно


Нажмите для просмотра прикрепленного файла
или это

Спасибо большое, буду пробовать.
Сергей А. Ефремов
Цитата(LordN @ 8.4.2022, 17:25) *
в фбд блоках овенлоджика д.б. преобразователь int-bool
это раз
два - пробуйте читать групповыми битовыми функциями, т.е. читаете подряд все шестнадцать бит, может прокатить.
три - биг эндиан, ло эндиан.
но я бы ограничился пунктом 1. ну и три

Нажмите для просмотра прикрепленного файла
кажется это оно


Нажмите для просмотра прикрепленного файла
или это

Нажмите для просмотра прикрепленного файла

А как получить интовое значение?
Сергей А. Ефремов
Сорян за беспокойство, только сейчас увидел (лох чилийский), что адреса даны в хексах и всё это время пытался читать 13 адрес вместо 20, он резервный и по всей видимости там отображается то же самое значение, но записанное в другой байт.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.