Hi Folks,
I've managed to find the issue and want to share it with you, since there is not much information on that unit out there.
The reason for the wrong measurement of voltage is due to an memory error on the connected I2C EEPROM Chip N3 (AT24C02). It seems that only the bytes who carried the calibration factor are corrupted since all other functions of the device are totally fine.
After dumping the EEPROM Image using a raspberry and i2ctools "i2cdump" i've started to repeatedly change the values of the limits and the measured current with the unit it self, dumping the memory again and compare it to the other dumped images. It became obvious, that the unit stores it's data in 16Bit format, LSByte first. An example: if the measured voltage is 21.05V (ignore the decimal -> 2105) it's representation in HEX would be 0x0839. The unit stores this value as 0x39 0x08.
By playing around like that for 5min, I was able to narrow down the possible memory addresses of the cal factor down to ~5 possible values. After that i've recognized, that one of those remaining byte-pairs was located at an byte-pair (addresses: 0xaa, 0xab), which was quiet a bit offset to the rest of the Bytes. Therefore i've started my trail and error at those values. And sure enough, after changing them to a random value, the voltage measurement was affected. After finding the right spot, it was simply a matter of cross-multiplication to get into the ballpark of the perfect value. To finishing the calibration, I combined some toggeling of the LSB and some trimmer pot (RP5) action, to get the accuracy over the whole 40V range within the spec.
If you facing a similiar issue, here is the EEPROM Image, that works fine for my unit:
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
80: 07 d0 03 e8 00 00 00 06 00 00 00 2a 00 5f 00 c3 ????...?...*._.?
90: 01 8e 06 3f 06 47 0c 96 0f bc ff ff ff ff ff ff ?????G????......
a0: ff ff ff ff ff ff ff ff ff ff 0f 18 ff ff ff ff ..........??....
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
If you have an Raspbi, feel free to use my ultra-lazy-crude python script to flash it on the EEPROM:
import smbus
import numpy as np
import time
origin = [0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x07,0xd0,0x03,0xe8,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x2a,0x00,0x5f,0x00,0xc3,
0x01,0x8e,0x06,0x3f,0x06,0x47,0x0c,0x96,0x0f,0xbc,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x18,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff]
DEV_ADDR = 80
def blank():
for i in range(255):
bus.write_byte_data(DEV_ADDR, i, int(0x00))
print ("Writing at Addr: "+str(i))
time.sleep(.01)
def orig():
for i in range(255):
print (origin[i])
bus.write_byte_data(DEV_ADDR, i, int(origin[i]))
print ("Writing at Addr "+str(i)+" with Value "+str(origin[i]))
time.sleep(.01)
bus = smbus.SMBus(1)
orig()
Make sure to check the device address of the I2C EEPROM!!

Hope I could help some one with this,
Feel free to contact me if you need further information on the repair of that unit. I've analyzed it quiet well (I think).
Cheers

Tony