Электросчетчик LE-03M

Материал из WebHMI Wiki
Перейти к: навигация, поиск
LE-03M.gif

Счетчик поддерживает протокол Modbus RTU. Особенностью данного счетчика является то, что читать показания необходимо групповой операцией длиной 3. Поэтому в свойствах соединения для данного счетчика необходимо разрешить группировку длиной 3. Полученные байты необходимо "сцепить" в одно число с помощью скрипта и сохранить во внутреннем регистре WebHMI. Текст скрипта:

function main (userId)

-- прочитать регистры в лок. переменные

    local reg1 = GetReg(21); -- Регистр 0  (HR0@LE-03M)
    local reg2 = GetReg(22); -- Регистр 1  (HR1@LE-03M)
    local reg3 = GetReg(23); -- Регистр 2  (HR2@LE-03M)

-- отфильтровать     

    if (reg1 == nil) or (reg2 == nil) or (reg3== nil) then 
        return 0;
    end;

-- преобразовать в строковое представление шестн. числа
-- если число меньше 15, то string.format не добавит лидирующий 0 !
    
    local str1 = ""; 
    if reg1 <= 0x0f then 
       str1 = "0"..string.format("%X",reg1);
    else
       str1 = string.format("%X",reg1);
    end 

    local str2 = ""; 
    if reg2 <= 0x0f then 
       str2 = "0"..string.format("%X",reg2);
    else
       str2 = string.format("%X",reg2);
    end 

    local str3 = ""; 
    if reg3 <= 0x0f then 
       str3 = "0"..string.format("%X",reg3);
    else
       str3 = string.format("%X",reg3);
    end 

 -- склеить строку в одно число

    local result = str1..str2..str3;
    
 -- печать в лог для отладки 
   DEBUG(" LE result =  "..result);
  
   WriteReg("Result", ((tonumber(result,16))/10)+0.0);
  
end