Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Вывод уставок с ТРМ251 #1

Open
rybakov-ks opened this issue Jan 11, 2024 · 12 comments
Open

Вывод уставок с ТРМ251 #1

rybakov-ks opened this issue Jan 11, 2024 · 12 comments

Comments

@rybakov-ks
Copy link

Добрый день. Я попытался использовать библиотеку с ТРМ251 и столкнулся с проблемой при получении значений уставки. В программе №1 на шаге №1 установлена температура 350°C (SP:0), при попытке прочитать её с помощью следящего кода:

from owen.client import OwenSerialClient
from owen.device import TRM251
from serial import Serial


transport = Serial(port='COM3',
				   baudrate=9600,
				   stopbits=1,
				   parity="N",
				   bytesize=8,
				   timeout=1)
				   
trm = OwenSerialClient(transport=transport, device=TRM251, unit=16, addr_len_8=True)
name = "SP"	   
value = trm.get_param(name=name, index=0)
print(value)

выводится значение 7596. На шагах где уставки равны 0 выводится 12288. При этом если попытаться прочитать текущую температуру (rEAd), то все работает как надо.

@rybakov-ks rybakov-ks changed the title Вывод уставок на ТРМ251 Вывод уставок с ТРМ251 Jan 11, 2024
@RAA80
Copy link
Owner

RAA80 commented Jan 13, 2024

К сожалению у меня нет в наличии ТРМ251 для проверки. Попробуйте включить режим логирования DEBUG и пришлите мне вывод для параметра SP и какое значение ожидается получить. Если знаете как это исправить. пришлите, я поправлю.

@rybakov-ks
Copy link
Author

C:\tube_furnace>python test.py
DEBUG:owen.protocol:Send param: address=16, flag=1, size=2, cmd=9107, data=[0, 0
], crc=ED76
DEBUG:owen.protocol:Send frame: b'#HGHIPHGNGGGGUTNM\r', size=18
DEBUG:owen.protocol:Recv frame: b'#HGGKPHGNHTQSGGGGGVPJ\r', size=22
DEBUG:owen.protocol:Recv param: address=16, flag=0, size=4, cmd=9107, data=[29,
172, 0, 0], crc=0F93
7596

Ожидал получить 350°C

Попробовал по modbus. Если читать уставку по адресу 0x0101, то все хорошо (350°C). Если прочитать текущую температуру по адресу 0x0002, тоже все хорошо, но если прочитать из 0х0005, то возвращает:

C:\tube_furnace>python test.py
DEBUG:pymodbus.transaction:Current transaction state - IDLE
DEBUG:pymodbus.transaction:Running transaction 1
DEBUG:pymodbus.transaction:SEND: 0x10 0x3 0x0 0x5 0x0 0x1 0x97 0x4a
DEBUG:pymodbus.client.sync:New Transaction state 'SENDING'
DEBUG:pymodbus.transaction:Changing transaction state from 'SENDING' to 'WAITING
 FOR REPLY'
DEBUG:pymodbus.transaction:Changing transaction state from 'WAITING FOR REPLY' t
o 'PROCESSING REPLY'
DEBUG:pymodbus.transaction:RECV: 0x10 0x3 0x2 0xb5 0xc 0x32 0xd2
DEBUG:pymodbus.framer.rtu_framer:Getting Frame - 0x3 0x2 0xb5 0xc
DEBUG:pymodbus.factory:Factory Response[ReadHoldingRegistersResponse: 3]
DEBUG:pymodbus.framer.rtu_framer:Frame advanced, resetting header!!
DEBUG:pymodbus.transaction:Adding transaction 16
DEBUG:pymodbus.transaction:Getting transaction 16
DEBUG:pymodbus.transaction:Changing transaction state from 'PROCESSING REPLY' to
 'TRANSACTION_COMPLETE'
DEBUG:pymodbus.payload:[46348]
46348

Хотя текущая температура от 24.4 до 24.8.
Как будто что-то с форматами чисел с плавающей точкой не то.

@RAA80
Copy link
Owner

RAA80 commented Jan 13, 2024

Для протокола Овен в настройках ТРМ251 в файле device.py скорее всего установлен неправильный тип параметра SP. В документации тип 'Stored DOT', а у меня I16. Буду разбираться в понедельник.

@RAA80
Copy link
Owner

RAA80 commented Jan 15, 2024

Обновил программу. Можете проверить работу функций чтения и записи для протокола ОВЕН. Поддержку протокола Modbus для ТРМ251 пока не сделал.

@rybakov-ks
Copy link
Author

Если задать 350°C, то читается все верно, но если задать температуру 410°C и больше, то тогда выводит неправильные значения:

C:\tube_furnace>python test3.py
DEBUG:owen.protocol:Send param: address=16, flag=1, size=2, cmd=9107, data=[0, 0
], crc=ED76
DEBUG:owen.protocol:Send frame: b'#HGHIPHGNGGGGUTNM\r', size=18
DEBUG:owen.protocol:Recv frame: b'#HGGLPHGNHGHGGKGGGGMJHK\r', size=24
DEBUG:owen.protocol:Recv param: address=16, flag=0, size=5, cmd=9107, data=[16,
16, 4, 0, 0], crc=6314
SP = 1.6

Ожидал 410°C

@RAA80
Copy link
Owner

RAA80 commented Jan 16, 2024

Обновил программу. Можете проверить.

@rybakov-ks
Copy link
Author

Работает. Но есть странности при записи и чтении 0. При записи не возвращается True, а возвращается байтовая строка, но при этом в прибор значение 0 записывается верно. При чтении нуля не везде читается 0. На SP0: 0, SP:1 – 0.1, SP2: - 0.2 дальше не проверил. Если смотреть в самом приборе, то все эти значения верно равны 0.
Ещё заметил, что запись времени роста и времени выдержки происходит в секундах, а диапазон max: 1092 указан для минут, его нужно изменить на 1092*60=65520 сек, тогда все работает как надо (это не зависит от выбранного масштаба времени, но возможно я что-то не понимаю).
Еще заметил, что, когда читаешь текущую мощность возвращается None. Видимо из-за того, что у данного параметра нет модификатора времени. Поставил тип F32 и все хорошо.

@RAA80
Copy link
Owner

RAA80 commented Jan 17, 2024

Поправлю. Можете выложить лог при чтении '0' (а также '1' и '2') на SP0, SP1, SP2

@rybakov-ks
Copy link
Author

write SP0:

C:\tube_furnace>python tes4.py
DEBUG:owen.protocol:Send param: address=16, flag=0, size=4, cmd=9107, data=[16,
0, 0, 0], crc=89A1
DEBUG:owen.protocol:Send frame: b'#HGGKPHGNHGGGGGGGOPQH\r', size=22
DEBUG:owen.protocol:Recv frame: b'#HGGJPHGNHGGGGGKNHI\r', size=20
DEBUG:owen.protocol:Recv param: address=16, flag=0, size=3, cmd=9107, data=[16,
0, 0], crc=4712
bytearray(b'\x10\x00\x00')

write SP1:

C:\tube_furnace>python tes4.py
DEBUG:owen.protocol:Send param: address=16, flag=0, size=4, cmd=9107, data=[16,
0, 0, 1], crc=06F6
DEBUG:owen.protocol:Send frame: b'#HGGKPHGNHGGGGGGHGMVM\r', size=22
DEBUG:owen.protocol:Recv frame: b'#HGGJPHGNHGGGGHSOKL\r', size=20
DEBUG:owen.protocol:Recv param: address=16, flag=0, size=3, cmd=9107, data=[16,
0, 1], crc=C845
bytearray(b'\x10\x00\x01')

write SP2:

C:\tube_furnace>python tes4.py
DEBUG:owen.protocol:Send param: address=16, flag=0, size=4, cmd=9107, data=[16,
0, 0, 2], crc=1858
DEBUG:owen.protocol:Send frame: b'#HGGKPHGNHGGGGGGIHOLO\r', size=22
DEBUG:owen.protocol:Recv frame: b'#HGGJPHGNHGGGGITMUR\r', size=20
DEBUG:owen.protocol:Recv param: address=16, flag=0, size=3, cmd=9107, data=[16,
0, 2], crc=D6EB
bytearray(b'\x10\x00\x02')

read SP0:

C:\tube_furnace>python tes4.py
DEBUG:owen.protocol:Send param: address=16, flag=1, size=2, cmd=9107, data=[0, 0
], crc=ED76
DEBUG:owen.protocol:Send frame: b'#HGHIPHGNGGGGUTNM\r', size=18
DEBUG:owen.protocol:Recv frame: b'#HGGJPHGNHGGGGGKNHI\r', size=20
DEBUG:owen.protocol:Recv param: address=16, flag=0, size=3, cmd=9107, data=[16,
0, 0], crc=4712
0.0

read SP1:

C:\tube_furnace>python tes4.py
DEBUG:owen.protocol:Send param: address=16, flag=1, size=2, cmd=9107, data=[0, 1
], crc=6221
DEBUG:owen.protocol:Send frame: b'#HGHIPHGNGGGHMIIH\r', size=18
DEBUG:owen.protocol:Recv frame: b'#HGGJPHGNHGGGGHSOKL\r', size=20
DEBUG:owen.protocol:Recv param: address=16, flag=0, size=3, cmd=9107, data=[16,
0, 1], crc=C845
0.1

read SP2:

C:\tube_furnace>python tes4.py
DEBUG:owen.protocol:Send param: address=16, flag=1, size=2, cmd=9107, data=[0, 2
], crc=7C8F
DEBUG:owen.protocol:Send frame: b'#HGHIPHGNGGGINSOV\r', size=18
DEBUG:owen.protocol:Recv frame: b'#HGGJPHGNHGGGGITMUR\r', size=20
DEBUG:owen.protocol:Recv param: address=16, flag=0, size=3, cmd=9107, data=[16,
0, 2], crc=D6EB
0.2

@RAA80
Copy link
Owner

RAA80 commented Jan 19, 2024

Обновил программу. Надеюсь, что удалось все починить.

@rybakov-ks
Copy link
Author

Хорошо. Спасибо. В понедельник попробую и отпишусь.

@rybakov-ks
Copy link
Author

Все функции библиотеки, которые я использовал, прекрасно работают. Можно ставить ещё одну галочку в таблице)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants