Страница 2 из 2

ТРМ 202 запись параметра через mobus rtu

Добавлено: 25 апр 2019, 09:29
Lee
[ref]grin-mpx[/ref], получилось у вас отправить значение в контроллер с ардуино? Если да, то каким образом.

ТРМ 202 запись параметра через mobus rtu

Добавлено: 25 апр 2019, 11:18
grin-mpx
Заказ отдал без чтения и записи по модбасу, отпала необходимость.

ТРМ 202 запись параметра через mobus rtu

Добавлено: 26 апр 2019, 06:49
Lee
Спасибо за обратную связь, может быть на форуме кто-нибудь смог это сделать? Сразу оговорюсь перестановка байт не помогла.

ТРМ 202 запись параметра через mobus rtu

Добавлено: 26 апр 2019, 08:27
Sancho
[ref]Lee[/ref], Чего нужно-то?
Конкретно.
Как я понял - для теста всё готово?

ТРМ 202 запись параметра через mobus rtu

Добавлено: 29 апр 2019, 07:31
Lee
[ref=#ff8000]Sancho[/ref], для теста все более чем готово, плата с ардуино выполняет роль мастера, проблем с приемом значений из контроллера трм 210 и 202 нет, а вот с передачей хотя бы уставки на трмку ни как не совладаю, менял порядок байт флоат и интежер во всех вариантах , все тщетно :(

Отправлено спустя 31 минуту 56 секунд:
скетч

ТРМ 202 запись параметра через mobus rtu

Добавлено: 29 апр 2019, 14:43
Sancho
Надеюсь, поможет :)
Решение для записи данных в приборы Овен ТРМ202 и подобных,
у которых запись регистра должна производится функцией 16(hex 10),
но только одного регистра. Не шестой!
[spoiler]
screenshot_19-04-29_14-35-52.png
[/spoiler]
Для плат ардуино, режим мастер. Пока запись работает по функции 6.
Находим в коде функцию void _modbusMasterSendQuery(),
в ней участок:

Код: Выделить всё

      _modbusMasterBuffer[4]      = highByte(intTemp);
      _modbusMasterBuffer[5]      = lowByte(intTemp);
      _modbusMasterBufferSize = 6;
      break;
Меняем на:

Код: Выделить всё

      _modbusMasterBuffer[1] = 16; // функция будет 16
      _modbusMasterBuffer[4] = 0;  // количество регистров, старший байт
      _modbusMasterBuffer[5] = 1;  // количество регистров, младший байт  
      _modbusMasterBuffer[6] = 2;  // количество байт
      _modbusMasterBuffer[7] = highByte(intTemp);
      _modbusMasterBuffer[8] = lowByte(intTemp);
      _modbusMasterBufferSize = 9;
      break;
Тестим, отписываемся.

В скада - реализован выбор, какой писать. (написано, не проверял).

ТРМ 202 запись параметра через mobus rtu

Добавлено: 30 ноя 2021, 08:40
qwr
Костыль работает)))

ТРМ 202 запись параметра через mobus rtu

Добавлено: 30 ноя 2021, 08:56
Sancho
qwr писал(а): 30 ноя 2021, 08:40 Костыль работает)))
Спасибо, хоть кто-то отписался, что помогло.