Трм 138 ошибка ader

Автор: admin в рубриках: метод, полезное, практика, приборы, регулятор, ремонт, термопара

Стоит у меня ТРМ-138, подключены к нему 7 датчиков 4-20 mA (термопары ТХА)
Т.е. просто индикация температуры, никакого регулирования.

Регулятор ОВЕН ТРМ-138

Всё было хорошо и замечательно а сегодня утром все каналы показывают «—-«.

Выключалвключал. По настройкам полазил — вроде всё как и было.

Потыкал вольтметром в термопары, походил посмотрел на провода… Четыре прочерка — это вроде как сигнала вообще нет. В конечном итоге залез в коробку чтоб померять ток на преобразователях и заметил что сгорел 1 резистор на 100 ОМ. Там по схеме подключения все минусовые концы преобразователей замыкаются, а плюс с минусом шунтируются стоомным сопротивлением. Видимо на этом сгоревшем канале перемкнуло провода на преобразователь и на бедное сопротивление обрушилось 24 В. =)

сгоревший резистор   ТРМ-138 вид сзади

Полазил вдоль проводов и кажись нашел замыкание…

 замкнулись оплавленные провода  тёпленький трубопровод

Менять сопротивление нужно на такое же, иначе возникнет погрешность. Т.е. если поставить 91 Ом — то получите погрешность порядка 10%.

Оставьте отзыв


stas390

Сообщения: 34
Зарегистрирован: 23 мар 2017, 14:37

Re: Разбор протокола с овена ТР,М138

Сообщение

stas390 » 14 авг 2020, 11:28

я то получил ответ в формате float в 16-итеричном виде. А как перевести в читабельный вид проблема для меня. Поэтому и интересуюсь дальнейшим превращением: Float в шестнатеричном виде превращаем в бинарник; из него извлекаем мантиссу и экспоненту; дальше математика и результат читабельный вид числа. Как логику на LD сделать, реально не пойму. Кстати 1 запрос-ответ на LD (на протоколе говна, работа с командой RS) занял почти 5000 строк. Охренеть


tvent

Сообщения: 984
Зарегистрирован: 11 янв 2011, 17:02

Re: Разбор протокола с овена ТРМ138

Сообщение

tvent » 14 авг 2020, 14:13

stas390 писал(а): ↑

14 авг 2020, 11:28


А как перевести в читабельный вид

В ISPSoft View->monitoring data format-> float или PLC-> New devices table, затем кликаете мышкой в созданную Monitor table и указываете адреса регистров, которые хотите отслеживать. Колонка Float будет создана «автоматом»

stas390 писал(а): ↑

14 авг 2020, 11:28


Кстати 1 запрос-ответ на LD (на протоколе говна, работа с командой RS) занял почти 5000 строк.

Чтение командой RS и преобразование пакета символьных (ASCII) чисел переменной длинны , разделенных запятыми, во Float или INT занимает
максимум 20 network. Не считая макетов и рабочих массивов данных.


stas390

Сообщения: 34
Зарегистрирован: 23 мар 2017, 14:37

Re: Разбор протокола с овена ТРМ138

Сообщение

stas390 » 14 авг 2020, 21:20

Как я пытался подружить трм138 с посредством rs485 (по модбасу конкретный глюк (трм бросает ответы — мусором), агрегат совершенно новый).
С помощью сниффера (ASL) с помощью конфигуратора ТРМ прослушал запрос — ответ, естесно в ASCII коде, но у них есть овеновская таблица в виде H47 это же символ G он же H0; H48 это же символ H он же H1; H49 это же символ I он же H4a и тд. Путем преобразований получил на нормальный запрос по RS в LD в ТРМ. Хотя не надеялся на ответ с ТРМ в ПЛК, но все же получил, там и присутствует и HASH код, к чему и обрадовался. Однако дальше еще грабли: создал таблицу конвертации по методу получено равно какой-то hex: самая массивная таблица получилось. После этого нужно склеить hexы. И потом получил то, чего я хотел ввиде hex-ascii. Вариант был такой запрос (что за модель) — ответ (m831mrt по ascii). Вся это хрень заняло 5000 строк. А я пытаюсь продолжить дальше: см. скрин выше




kolyasoul

5 / 5 / 1

Регистрация: 28.04.2017

Сообщений: 59

1

28.04.2017, 13:33. Показов 5272. Ответов 5

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте уважаемые форумчане! Возникла проблема с чтением значения температуры на втором канале прибора ТРМ-138 (тип термопары ТХК(L)). Написал небольшую программку на C#, в которой вместо интерпретируемого ответа от прибора приходит какая то мне не понятная фигня) с Modbus до этого случая дел не имел, да и в программировании не слишком силён, поэтому хотелось бы услышать мнение старших товарищей)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;
 
 
namespace ТРМ_138
{
   
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            serialPort1.Open(); 
        }
 
     
 
        private void button1_Click(object sender, EventArgs e)
        {
 
             serialPort1.Write(ReadHoldingRegister(16, 04, 0007, 0001), 0, 8);
            textBox1.Text = serialPort1.ReadByte().ToString();
            
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            //чтение портов доступных в системе
            string[] ports = SerialPort.GetPortNames();
            //Очистка содержимого бокса
            comboBox1.Items.Clear();
            //Добавление найденных портов в бокс
            comboBox1.Items.AddRange(ports);
        }
 
        public static byte[] ReadHoldingRegister(byte id, byte command, byte startAddress, byte length)
        {
            byte[] data = new byte[8];
            byte High, Low;
            data[0] = Convert.ToByte(16);
            data[1] = Convert.ToByte(4);
            byte[] _adr = BitConverter.GetBytes(startAddress);
            data[2] =07;
            data[3] =00;
            byte[] _length = BitConverter.GetBytes(length);
            data[4] = 01;
            data[5] = 00;
           myCRC(data, 6, out High, out Low);
            data[6] = Low;
            data[7] = High;
            //MessageBox.Show(data[6].ToString());
            //MessageBox.Show(data[7].ToString());
            return data;
        }
 
        public static void myCRC(byte[] message, int length, out byte CRCHigh, out byte CRCLow)
        {
            ushort CRCFull = 0xFFFF;
            for (int i = 0; i < length; i++)
            {
                CRCFull = (ushort)(CRCFull ^ message[i]);
                for (int j = 0; j < 8; j++)
                {
                    if ((CRCFull & 0x0001) == 0)
                        CRCFull = (ushort)(CRCFull >> 1);
                    else
                    {
                        CRCFull = (ushort)((CRCFull >> 1) ^ 0xA001);
                    }
                }
            }
            CRCHigh = (byte)((CRCFull >> 8) & 0xFFFF);
            CRCLow = (byte)(CRCFull & 0xFFFF);
          // MessageBox.Show(CRCLow.ToString());
          // MessageBox.Show(CRCHigh.ToString());
        }
 
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            
        }
 
        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
           // TextBox textBox1 = new TextBox();
            //textBox1.Text = serialPort1.ReadExisting().ToString();
        }
    }
}

Ответ от прибора выглядит следующим образом: 16 132 3 83 4 при этом не одно из значений не изменяется с изменением температуры. При это в программе ModScan64 всё работает нормально(скрины прилагаются). Может кто подскажет где ошибка?)

ТРМ-138-ModBus RTU. Не могу считать показания с термопары на втором канале

[ATTACH]

ТРМ-138-ModBus RTU. Не могу считать показания с термопары на втором канале

[/ATTACH]

Миниатюры

ТРМ-138-ModBus RTU. Не могу считать показания с термопары на втором канале
 



0



Модератор

Эксперт по электронике

8317 / 4216 / 1602

Регистрация: 01.02.2015

Сообщений: 13,132

Записей в блоге: 4

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

Запрос
00 — адрес устройства
01 — функция
02 — адрес первого из группы считываемых регистров hi
03 — то же, lo
04 — количество считываемых регистров hi
05 — то же, lo
06 — crc16 lo
07 — то же hi

Судя по РЭ значение температуры 2-го канала измерения начинается с адреса 0x0008.



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

Не по теме:

Цитата
Сообщение от kolyasoul
Посмотреть сообщение

тех.поддержка ОВНА не смогла дать адекватный ответ как с этим быть

они много на что ответить не могут. на их форуме тоже ответов не дают?



0



Модератор

Эксперт по электронике

8317 / 4216 / 1602

Регистрация: 01.02.2015

Сообщений: 13,132

Записей в блоге: 4

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



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

02.06.2017, 12:19

Помогаю со студенческими работами здесь

modbus rtu
Добрый день
Не могу разобраться с работой modbus rtu
что значит запрос 024600e260?
02 — номер…

ModBus RTU и Arduino
Здравствуйте !
Я из Ардуино МЕГА 2560 передаю данные в панель СП270 по МодВас РТУ функцией:

Modbus rtu wincc
Добрый день.
Есть wincc advanced v13. Необходимо проверить наличие/отсутствие связи по канала…

ModBus rtu на stm32f030
Доброго вечер всем! При портировании freemodbus v1.5 на stm32f0 возникли небольшие проблемы.
Код…

Modbus RTU на STM32F10x
Доброго времени суток. Столкнулся с задачей реализации Modbus на STM32f100C4T6B.
До этого момента…

Запрос MODBUS RTU
Добрый день!
Никак не получается получить ответ от МВА8.

По протоколу ascii проблем не…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

6

Понравилась статья? Поделить с друзьями:
  • Топре коды ошибок
  • Убедительность речи логические ошибки
  • Триллер цена ошибки
  • Тонометр автоматический выдает ошибку err cuf
  • Уаз профи сброс ошибок