Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 22

Тема: Адреса регистров ModBus RTU в ТРМ138

  1. #1
    Пользователь
    Регистрация
    08.09.2011
    Адрес
    Ростовская обл.
    Сообщений
    143

    По умолчанию Адреса регистров ModBus RTU в ТРМ138

    В моём проекте панель Weintek читает из ТРМ138Р регистры 0-39 из ТРМ138
    по протоколу ModBus RTU (функция 4) для получения значений измеренной величины
    на 1-8 каналах. Первоначально хотел использовать регистры с целым значением так как
    точка на всех каналах имеет одинаковое положение ххх.х Но увидел что значения
    в этих регистрах иногда странные (не по формату int16) а положение точки может быть любое от 0 до 3...
    Ну ладно, решил использовать регистры с типом float, в них значения почти совпадали
    с показаниями на самом приборе. Но оказалось что адреса регистров не совсем совпадают с
    адресами в документации, а именно:
    1канал: 1- int 2,3- float (а должно быть 1-int 3,4- float)
    2канал: 6- int 7,8- float (а должно быть 6-int 8,9- float)
    и так далее все каналы...
    Такая ситуация на всех трёх ТРМ138 (2022г и 2024г производства).
    Посмотрел свои старые программы, где ТРМ138 читался ПЛК110 и увидел,
    что там адреса совпадают с документацией. Теперь вопрос:
    Или я где-то ошибаюсь и делаю что-то не правильно,
    или панель так не правильно читает
    или ТРМ138 не правильно работает
    или в в руководстве по эксплуатации на ТРМ138 не внесены изменения?

  2. #2
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,986

    По умолчанию

    логический и физический адрес - производители по разному к этому относятся. Сделайте адрес + 1 и правильно укажите перестановку, если требуется.

  3. #3

    По умолчанию

    Цитата Сообщение от RomAl Посмотреть сообщение
    В моём проекте панель Weintek читает из ТРМ138Р регистры 0-39 из ТРМ138
    по протоколу ModBus RTU (функция 4)
    адресами в документации, а именно:
    1канал: 1- int 2,3- float (а должно быть 1-int 3,4- float)
    2канал: 6- int 7,8- float (а должно быть 6-int 8,9- float)
    и так далее все каналы...
    Такая ситуация на всех трёх ТРМ138 (2022г и 2024г производства).
    Посмотрел свои старые программы, где ТРМ138 читался ПЛК110 и увидел,
    что там адреса совпадают с документацией.
    Чтобы адреса совпадали, в панели должен стоять протокол ModBus RTU (Zero Based Adress), иначе адреса будут +1 от адресов ПЛК, а так же должны быть правильно расставлены регистры ( байты) в переменных Float. У вас где то ошибка, проверяйте.
    Последний раз редактировалось kondor3000; 22.07.2024 в 14:01.

  4. #4
    Пользователь
    Регистрация
    08.09.2011
    Адрес
    Ростовская обл.
    Сообщений
    143

    По умолчанию

    Я так тоже поначалу думал и попробовал, и конечно не помогло. Дело не в сдвиге всех адресов регистров, а в самой адресации.
    Регистры int всех каналов находятся на своих адресах (в соответствии с документацией на ТРМ138) а регистры float того же
    канала должны иметь адрес на 2 больше, но получается на 1 больше. Куда делся при этом код ошибки который должен быть
    между ними? Регистрами int вообще сложно пользоваться, так как значение десятичной точки бывает не верным.
    Можно конечно забить на это, но потом вдруг поправят когда-нибудь, ТРМ138 заменят на новый и ... он не будет работать.

  5. #5
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,048

    По умолчанию

    Цитата Сообщение от RomAl Посмотреть сообщение
    ..
    Ну ладно, решил использовать регистры с типом float, в них значения почти совпадали...
    Поясните.
    Если отличие в пол процента - это признак что считали хрень. Похожую - но хрень
    Последний раз редактировалось Валенок; 22.07.2024 в 14:57.

  6. #6

    По умолчанию

    Цитата Сообщение от RomAl Посмотреть сообщение
    Я так тоже поначалу думал и попробовал, и конечно не помогло. Дело не в сдвиге всех адресов регистров, а в самой адресации.
    Регистры int всех каналов находятся на своих адресах (в соответствии с документацией на ТРМ138) а регистры float того же
    канала должны иметь адрес на 2 больше, но получается на 1 больше. Куда делся при этом код ошибки который должен быть
    между ними? Регистрами int вообще сложно пользоваться, так как значение десятичной точки бывает не верным.
    Можно конечно забить на это, но потом вдруг поправят когда-нибудь, ТРМ138 заменят на новый и ... он не будет работать.
    Опросите ТРМ любым ОРС сервером и проверьте адресацию и показания. https://owen.ru/catalog/opc_serveri
    Думаю проблема у вас в проекте панели.
    Или вы INT принимаете за код ошибки, или у вас датчики не подключены (не настроены).
    А вообще надо хотя бы скрины выкладывать, а лучше проект.
    Последний раз редактировалось kondor3000; 22.07.2024 в 15:05.

  7. #7
    Пользователь
    Регистрация
    08.09.2011
    Адрес
    Ростовская обл.
    Сообщений
    143

    По умолчанию

    В регистрах int почти всегда правильно, но иногда когда величина растёт значение не соответствует. float считывает правильно, отличие бывает в последней цифре из-за округления.

  8. #8
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,048

    По умолчанию

    Цитата Сообщение от RomAl Посмотреть сообщение
    В регистрах int почти всегда правильно, но иногда когда величина растёт значение не соответствует. float считывает правильно, отличие бывает в последней цифре из-за округления.
    воспроизведите двойное слово которое читаете с [2..3] в hex и сюда как есть.
    Если нету hex - dec как uint32
    И одновременно - тоже, но с [3..4]
    А после оборвите датчик с Ai1.
    И результат [2..3] и [3..4] - сюда

    С вас 4 udint32 числа. Без вопросов и нытья.

  9. #9
    Пользователь
    Регистрация
    08.09.2011
    Адрес
    Ростовская обл.
    Сообщений
    143

    По умолчанию

    Спасибо за совет, посмотрел в формате hex и стало видно что везде младше слово всегда 0000. Значит верно указано в мануале что адрес 3..4, но видимо надо переставлять слова в Панеле местами перед тем как выводить на индикатор. Штатного способа нет, придётся в макросе их переставлять.

  10. #10

    По умолчанию

    Цитата Сообщение от RomAl Посмотреть сообщение
    Спасибо за совет, посмотрел в формате hex и стало видно что везде младше слово всегда 0000. Значит верно указано в мануале что адрес 3..4, но видимо надо переставлять слова в Панеле местами перед тем как выводить на индикатор. Штатного способа нет, придётся в макросе их переставлять.
    Как нет, есть перестановка байт и регистров Float, при установке протокола и параметров порта Нажмите на изображение для увеличения. 

Название:	1 Перестановка регистров.jpg 
Просмотров:	58 
Размер:	294.2 Кб 
ID:	77522
    Последний раз редактировалось kondor3000; 23.07.2024 в 10:47.

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. адреса регистров в ПР 200 и ПВЧ
    от Дмитрий 100 кг в разделе Программируемые реле
    Ответов: 41
    Последнее сообщение: 15.10.2023, 14:26
  2. Адреса регистров в ПР200
    от lvv01430 в разделе Программируемые реле
    Ответов: 3
    Последнее сообщение: 14.02.2019, 08:23
  3. Ответов: 12
    Последнее сообщение: 21.10.2018, 18:57
  4. ПЛК63, modbus slave, адреса регистров
    от monteg в разделе ПЛК63/73
    Ответов: 43
    Последнее сообщение: 19.06.2017, 08:46
  5. Адреса регистров ModBus RTU ПР114
    от Newcomer в разделе Программируемые реле
    Ответов: 4
    Последнее сообщение: 01.02.2016, 15:45

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •