5 / 5 / 1
Регистрация: 28.04.2017
Сообщений: 59
|
||||||
1 | ||||||
ТРМ-138-ModBus RTU. Не могу считать показания с термопары на втором канале28.04.2017, 13:33. Показов 6217. Ответов 5
Метки нет (Все метки)
Здравствуйте уважаемые форумчане! Возникла проблема с чтением значения температуры на втором канале прибора ТРМ-138 (тип термопары ТХК(L)). Написал небольшую программку на C#, в которой вместо интерпретируемого ответа от прибора приходит какая то мне не понятная фигня) с Modbus до этого случая дел не имел, да и в программировании не слишком силён, поэтому хотелось бы услышать мнение старших товарищей)
[ATTACH][/ATTACH]
0
|
28.04.2017, 13:33 | |
Ответы с готовыми решениями:
5
Эмулятор ТРМ-138 Нет связи между модулем ввода (modbus rtu slave) и программой modbus poll на ноутбуке Преобразование modbus rtu в modbus tcp Modbus RTU. Запись в modbus регистр Modbus RTU |
Модератор
|
|
28.04.2017, 23:31 | 2 |
Чтение регистра 03 функция.
Float32 занимает два регистра. В функции ReadHoldingRegister вы что-то странное делаете - заполняете data какими-то константами вместо параметров. Ну и для трм212 я обменивал местами байты каждого принятого Float32 с little-endian на big-endian (или наоборот). Кроме того. Этой зимой на объекте выяснил, что трм138 бывают нескольких модификаций. Основное различие проходит по августу 2009 - когда добавилась поддержка ModBus RTU, которой ранее не было. Может быть у вас ещё более ранний прибор. Добавлено через 6 минут Для работы со своими приборами фирма Овен предлагает DLL с готовыми процедурами и примерами http://www.owen.ru/catalog/bib... l/opisanie Хоть я ими не пользовался, но они существуют Добавлено через 16 минут Ваш запрос должен быть (hex) 10 03 00 08 00 02 LL HH
0
|
5 / 5 / 1
Регистрация: 28.04.2017
Сообщений: 59
|
|
29.04.2017, 09:40 [ТС] | 3 |
Спасибо за ответ. С получение ответа разобрался) библиотеки кстати не работают на Win7x64 и тех.поддержка ОВНА не смогла дать адекватный ответ как с этим быть) теперь у меня встал вопрос с обработкой ответа) я получаю сообщения
16 4 2 132 97 231 219 последние 4-и значения изменяются в зависимости от изменения температуры. Как я понимаю мне надо работать со значениями 132 97 т.к два последних это CRC а 3-и первых не меняются (адрес, код команды и ещё что-то)) ). Может поможете в этом вопросе? в каком направлении капать как мне полученные байты преобразовать в показания температуры? ) у ModScan это получается сделать, а у меня пока нет))
0
|
magirus
|
29.04.2017, 12:49
#4
|
0
|
Модератор
|
|
30.04.2017, 10:40 | 5 |
Сообщение было отмечено magirus как решение
Решение
kolyasoul, я уже ответил вам. В ответ на запрос приходит ответ. Если отбросить служебные данные, то возвращается в данном случае 4 байта. Это 4 байта и есть температура в формате Float32 (эквивалент Single в Delphi). Но, для использования придётся эти 4 байта расположить в обратном порядке, т.е. 4-й, 3-й, 2-й, 1-й. И теперь это будет нормальный Single, который понимает компьютер на базе i80x86.
Т.е. нужно преобразовать формат числа из big-endian в little-endian (или наоборот, я их путаю, но в данном случае это несущественно, т.к. изменение порядка байт в двойном слове нужно выполнять одинаково в обоих случаях). Добавлено через 2 минуты По поводу работы библиотек на Win7x64 вечером попробую проверить на трм212. Но по воспоминаниям, они работают, только нужно правильно разместить DLL в каталогах Windows - т.к. для x64 что-то изменилось по сравнению с x32.
0
|
5 / 5 / 1
Регистрация: 28.04.2017
Сообщений: 59
|
|
02.06.2017, 12:19 [ТС] | 6 |
Всем, спасибо вопрос решен, тема закрыта.
0
|
02.06.2017, 12:19 | |
02.06.2017, 12:19 | |
Помогаю со студенческими работами здесь
6
modbus rtu ModBus RTU и Arduino Modbus rtu wincc ModBus rtu на stm32f030 Modbus RTU на STM32F10x Запрос MODBUS RTU Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |