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.

Mod_bus problem
#1
Hi, I'm trying to add a device with modbus but result is not as expected.

Problem 1:
value_custom is not added to objects.

Code:
{
 "manufacturer": "xxx",
 "description": "xxx",
 "mapping":[
 
   { "name": "320000 - SV - Varme System Anleggs modus", "bus_datatype": "int16", "type": "register", "address": 1651, "datatype": "int16",
     "bus_address": "32/0/40", "value_custom": { "0": "Stoppet", "1": "Startet" } }

 ]
}


Problem 2:

When trying to get value_bitmask i get 1 on all objects. The hexvalue is 0003 and should give value 1 in first 2 objects. 

Code:
{
 "manufacturer": "xxx",
 "description": "xxx",
 "mapping":[
   { "name": "370000.JP401 Start", "bus_datatype": "bool", "type": "register", "address": 1530, "datatype":"int16", "bus_address": "32/0/0",
      "value_bitmask": "0x00"},
   { "name": "370000.JP401 Drift", "bus_datatype": "bool", "type": "register", "address": 1530, "datatype":"int16", "bus_address": "32/0/1",
      "value_bitmask": "0x01"},
   { "name": "370000.JP401 Feil", "bus_datatype": "bool", "type": "register", "address": 1530, "datatype":"int16", "bus_address": "32/0/2",
      "value_bitmask": "0x02"},
   { "name": "370000.JP401 Kritisk alarm", "bus_datatype": "bool", "type": "register", "address": 1530, "datatype":"int16", "bus_address": "32/0/3",
      "value_bitmask": "0x03"}
  ]
}
Reply
#2
1. Custom values are not used when bus_address is specified directly, it will only be used when creating object mapping manually from UI

2. Bitmask cannot be zero, correct bitmask should be 1, 2, 4 and 8 for each bit starting from lowest one:
0001b = 1
0010b = 2
0100b = 4
1000b = 8
Reply
#3
(23.01.2018, 10:48)admin Wrote: 1. Custom values are not used when bus_address is specified directly, it will only be used when creating object mapping manually from UI

2. Bitmask cannot be zero, correct bitmask should be 1, 2, 4 and 8 for each bit starting from lowest one:
0001b = 1
0010b = 2
0100b = 4
1000b = 8

Thanks!
Reply
#4
Problem 3:
I have an int32 value that is split up into two int16 and i can't get the value i need. I have tried read_offset 0 and 1 and value_nan but i don't realy get it.... Is there an other method?


Code:
{
  "manufacturer": "xxx",
  "description": "xxx",
  "mapping":[
   
    { "address": 1005, "name": "320000.IE001.PV1", "read_offset": 1, "bus_datatype": "float16", "datatype": "float32",
      "value_multiplier": 0.1, "units": " kW"},
    { "address": 1006, "name": "320000.IE001.PV2", "read_offset": 1, "bus_datatype": "float16", "datatype": "float32",
      "value_multiplier": 0.1, "units": " °C"},
    { "address": 1007, "name": "320000.IE001.PV3", "read_offset": 1, "bus_datatype": "float16", "datatype": "float32",
      "value_multiplier": 0.1, "units": " °C"}

  ]
}
Reply
#5
Do not use read_offset and set datatype to int32. You might need to set read_swap depending on byte/word order of your Modbus device. The easiest way to check it is to use RTU read test in Modbus tab. Also consider using float32 for bus_datatype since float16 has limited precision range and does not work well for large values.
Reply


Forum Jump: