This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

can't import json profile
#1
Hi, 

I just started creation new profile for Ouman H23 device. I tried to import it but I see invalid profile. What is wrong, or where I can see rules for creation?

.json   OumanH23.json (Size: 529 bytes / Downloads: 4)


Alex
Reply
#2
Hi,
I used profile generator. Now it possible to import. What is correct datatype and bus type for first two registers (from attached file) from description? Temperatures I see not 10.0 but 100.

My variant:

{
  "manufacturer": "Ouman",
  "description": "H23 V1",
  "mapping": [
    {
      "name": "Outdoor temp.",
      "address": 201,
      "bus_datatype": "temperature",
      "datatype": "uint16",
      "type": "register",
      "units": "\u00B0C"
    },
    {
      "name": "H1 supply water temp.",
      "address": 203,
      "bus_datatype": "temperature",
      "datatype": "uint16",
      "type": "register",
      "units": "\u00B0C"
    }
  ]
}

.pdf   H23_ModbusInterface_v2.0.2_EN.pdf (Size: 122.36 KB / Downloads: 9)
Reply
#3
S32 is a signed 32-bit integer so datatype must be set to int32. Add "value_multiplier": 0.1 to divide the resulting value by 10.
Reply
#4
Hi,

not working, temp. read the same 670760.96 °C

{
"manufacturer": "Ouman",
"description": "H23 V1",
"mapping": [
{
"name": "Outdoor temp.",
"address": 201,
"bus_datatype": "temperature",
"datatype": "int32",
"type": "register",
"units": "\u00B0C",
"value_multiplier": "0.1"
},
{
"name": "H1 supply water temp.",
"address": 203,
"bus_datatype": "temperature",
"datatype": "int32",
"type": "register",
"units": "\u00B0C",
"value_multiplier": "0.1"
}
]
}
Reply
#5
You might also need to set a different read_swap value (probably "n"). Use Read test to find the correct settings then implement them a profile.
Reply
#6
Test working OK.

Read swap is CDAB by default. Is it = n ?

Temp readed 158 so should be divided by 10
Reply
#7
Default swap is "w" (word, CDAB). You need to add "read_swap": "n" to the profile. "value_multiplier": 0.1 will handle the conversion (divide by 10).
Reply
#8
But this is without datatype set.

If I set int32 I receive 1035488 with CDAB. When I set to none all is Ok. So now all is clear with this, thank you!
Reply
#9
Hi,

another little problem is found now. Positive temperature reading is OK, but when temperature is negative - I see reading 6548.48. What can be corrected in my case:

"mapping": [
{
"name": "Outdoor temp.",
"address": 201,
"bus_datatype": "temperature",
"datatype": "int32",
"type": "register",
"units": "\u00B0C",
"value_multiplier": "0.1"
},

Alex
Reply
#10
What values do you get when doing read test with these settings?

Function: holding register
Address: 201
Data type: -
Read length: 2

Also perform the same read test with address set to 200.
Reply
#11
Admin, Can I still use the "read_swap": "n" instruction to read the same object that is not a continuous data address? If not, what should I do?

eg:
Power_ H register: 0x60

Power_ L register: 0x70
Reply
#12
Nothing has changed in the documentation.
https://openrb.com/docs/modbus.htm
Use read test to find out correct configuration.
------------------------------
Ctrl+F5
Reply
#13
You will need a script if the value is split across several registers that are not consecutive. Register values can be read via profile but the final value conversion will be done by a script.
Reply


Forum Jump: