Author |
Message |
Written on: 19. 05. 2017 [16:36]
|
s60ru
Антон Петров
Topic creator
registered since: 10.05.2012
Posts: 141
|
Счетчик электроэнергии ALPHA A1800 посчитанную электроэнергию по modbus отдает нестандартным типом int48 (т.е. три регистра modbus + 47 бит знака).
Можно ли его корректно прочитать используя только лишь конфигурацию контроллера модуля DAQ.Modbus ? Эта информация исключительно для отображения, совсем не хочется городить прослойки для пересчета четырех регистров ....
P.S. "Только лишь" это как-то так:
Примеры:
"R:0x300:rw:var:Variable" — доступ к регистру;
"C:100:rw:var1:Variable 1" — доступ к биту;
"R_f:200:r:float:Float" — получить вещественное из регистров 200 и 201;
"R_i4:400,300:r:int32:Int32" — получить int32 из регистров 400 и 300;
"R_b10:25:r:rBit:Reg bit" — получить бит 10 из регистра 25;
"R_s:15,20:r:str:Reg blk" — получить строку, блок регистров, из регистра 15 и размером 20.
|
Written on: 19. 05. 2017 [21:34]
|
arcsin
Аркадий Кисель
Contributor
registered since: 17.02.2017
Posts: 77
|
"R_i8:0x10:w" — получить и установить int64 в регистры [0x10-0x13];
в int знак это самый старший бит. а в регистре на каком месте стоит знак?
нужен ли вообще знак в данном случе? может вместо в самый старший регистр записать заведомо нулевой регистр?
укажите более точно карту регистров.
|
Written on: 20. 05. 2017 [00:06]
|
s60ru
Антон Петров
Topic creator
registered since: 10.05.2012
Posts: 141
|
.
Register ----------- Description ----------- Scale (1 Count)
-------------------------------------------------------------------
40042 - 40044 --- Watt-hours, delivered --- 1 WattHr
40045 - 40047 --- Watt-hours, received --- 1 WattHr
40048 - 40050 --- VAR-hours, delivered --- 1 VARHr
40051 - 40053 --- VAR-hours, received --- 1 VARHr
40054 - 40056 --- VA-hours, delivered --- 1 VAHr
40057 - 40059 --- VA-hours, received --- 1 VAHr
[This article was edited 1 times, at last 20.05.2017 at 00:07.]
Attachment
int48_1.png (File type: image/png, Size: 20.05 kilobytes) — 1468 downloads
int48_2.png (File type: image/png, Size: 32.54 kilobytes) — 1444 downloads
|
Written on: 20. 05. 2017 [00:08]
|
s60ru
Антон Петров
Topic creator
registered since: 10.05.2012
Posts: 141
|
нужен ли знак - голову ломать не хочется - задача максимум: прочитать и показать все как есть.....
[This article was edited 1 times, at last 20.05.2017 at 00:10.]
Attachment
|
Written on: 20. 05. 2017 [00:14]
|
s60ru
Антон Петров
Topic creator
registered since: 10.05.2012
Posts: 141
|
Attachment
int48_3.png (File type: image/png, Size: 31.36 kilobytes) — 1454 downloads
|
Written on: 20. 05. 2017 [00:17]
|
s60ru
Антон Петров
Topic creator
registered since: 10.05.2012
Posts: 141
|
счетчик то распространенный, найдем лаконичное решение - многим пригодится........ в интеренет то есть уже тема про int48 в панели Weintek....
|
Written on: 20. 05. 2017 [08:32]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"s60ru" wrote:
счетчик то распространенный, найдем лаконичное решение - многим пригодится........ в интеренет то есть уже тема про int48 в панели Weintek....
А проблема то в чём?
Добавляйте реализацию экзотического суффикса "_i6", "_u6" и высылайте патч, на то он и open source!
Learn, learn and learn better than work, work and work.
|
Written on: 20. 05. 2017 [10:32]
|
arcsin
Аркадий Кисель
Contributor
registered since: 17.02.2017
Posts: 77
|
самое правильное решение сказал Роман. оно действительно будет полезно для людей в будущем.
чуть более костыльное - через прослойку: прочитать в R_i8 нужное(40042-40044), с захватом лишнего (40045), а при обработке целочисленно разделить это число на 2^16 = 65536. знак должен остаться, а лишние данные удалиться.
"R_i8:40042:r"
и самое костыльное: подойдет для времянки. поискать регистр модбаса который всегда нулевой. (возможно где-то в строках, или версиях)
"R_i8:0x10,40042:r" где 0x10 нулевой регистр.
при положительном значении параметр будет показывать верно. при отрицательном - лажа. при "уплывании 0" в "нулевом" регистре тоже будет лажа!
|