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:
12345678910111213141516
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: 23)
------------------------------
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:
123456789101112131415161718192021222324252627282930
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: