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.

Vigilohm JSON Modbus file
#1
Hi all,

Is there anyone who could share a JSON file for LM, allowing to read/write the Modbus registers of a Vigiohm FL12H from Schneider Electric? 

Thank you in advance for your help and above all, take care of yourself.
Reply
#2
Are you sure the name is correct? Google didn't found anything.
------------------------------
Ctrl+F5
Reply
#3
Hi Daniel,

it's Vigilohm IFL12H, an insulation fault locator, made by Schneider Electric
Reply
#4
Hi Daniel,

I can give to you the IFL12H Modbus registers table if necessary...

Have a good day.
Reply
#5
We can help you to start but you will have to finish it.
------------------------------
Ctrl+F5
Reply
#6
Perfect Daniel, it will be a good help to understand !

Here are Modbus registers definitions :
http://www.sigma-tec.fr/LM-Daniel/tables...IFL12H.pdf

If you could give me at least one JSON structure for each registry format, that would be fine. I think I'll get there next.

Thank you very much in advance.
Take care of yourself.
Reply
#7
Can you get it in English?
------------------------------
Ctrl+F5
Reply
#8
Yes Daniel, excuse me please...

Here are Modbus registers english definitions :
http://www.sigma-tec.fr/LM-Daniel/tables...-%20en.pdf
Reply
#9
Can you just try to use RTU read test and read register 100 like this
   

If this won't work try register 101.
------------------------------
Ctrl+F5
Reply
#10
Ok Daniel.

read result is 17032 for adress 100
read result is 32768 for adress 101
Reply
#11
Ok perfect we need to shift registers by -1

Try starting with this
For bits you have to add each bit as separate line and add bitmask
Code:
bit 0 = 0x1
bit 1 = 0x2
bit 2 = 0x4
bit 3 = 0x8
bit 4 = 0x10
bit 5 = 0x20
bit 6 = 0x40
bit 7 = 0x80
bit 8 = 0x100
bit 9 = 0x200
bit A = 0x400
bit B = 0x800
bit C = 0x1000
bit D = 0x2000
bit E = 0x4000
bit F = 0x8000

Attached Files
.json   IFL12H.json (Size: 541 bytes / Downloads: 22)
------------------------------
Ctrl+F5
Reply
#12
It works perfectly ! I think I understood the principle.
I completed the json (see linked file), a lot of registers work fine, but...

1. Can you please validate the sections in yellow?

3. I don't get correct results for the 3 "date&time" sections in red (end of json): why?

3. How to process the UTF8 (ex. 160 ... 179) and the UF8 (ex. 180 ... 199) from the tables ---. Pdf file?

All the best from France.
Thank you again for your precious help.

http://www.sigma-tec.fr/LM-Daniel/ST-IFL12H_updated.pdf
Reply
#13
2. Profile type field should be register instead of inputregister
3. String values are not supported by modbus mapper. It can be read via a script, but do you really need these values?
Reply
#14
Hi Daniel,

2. I tried yesterday with both formats: same result.
3. Yes, I need theses values to work with the exact product internal date&time for my process
Have you got an Lua script example for this ?

Thank's in advance.
Reply
#15
Hi
2. Looks OK, I would contact SE and ask them for function they use to read this value.
3. You already have product identification in register 100 only in numeric format. Product identifier 17032 = IFL12H

If you really need script for this then try this.
Code:
mbproxy = require('mbproxy')
mb = mbproxy.new()
mb:setslave(1)

function readstring(mb, address, length)
  local data = { mb:readregisters(address, length) }
  local bytes = {}

  for _, reg in ipairs(data) do
    if type(reg) == 'number' then
      -- high 8 bits
      local b1 = bit.band(bit.rshift(reg, 8), 0xFF)
      if b1 > 0 then
        bytes[ #bytes + 1 ] = b1
      end

      -- low 8 bits
      local b2 = bit.band(reg, 0xFF)
      if b2 > 0 then
        bytes[ #bytes + 1 ] = b2
      end
    end
  end

  -- convert table of byte values to string
  return string.char(unpack(bytes))
end

result = readstring(mb, 160, 9)
log(result)
------------------------------
Ctrl+F5
Reply
#16
It works very fine ! Thank you very much Daniel.
Best regards from France.
Reply


Forum Jump: