Электросчетчик LE-03M — различия между версиями
Материал из WebHMI Wiki
(Новая страница: « right Особенностью данного счетчика является то, что читать показания необх…») |
|||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
[[Файл:LE-03M.gif | right]] | [[Файл:LE-03M.gif | right]] | ||
− | Особенностью данного счетчика является то, что читать показания необходимо групповой операцией длиной 3. Поэтому в свойствах соединения для данного счетчика необходимо разрешить группировку длиной 3. | + | Счетчик поддерживает протокол Modbus RTU. Особенностью данного счетчика является то, что читать показания необходимо групповой операцией длиной 3. Поэтому в свойствах соединения для данного счетчика необходимо разрешить группировку длиной 3. Полученные байты необходимо "сцепить" в одно число с помощью скрипта и сохранить во внутреннем регистре WebHMI. |
− | Полученные байты необходимо "сцепить" в одно число с помощью скрипта и сохранить во внутреннем регистре WebHMI. | + | |
Текст скрипта: | Текст скрипта: | ||
<syntaxhighlight lang = "lua"> | <syntaxhighlight lang = "lua"> | ||
Строка 19: | Строка 18: | ||
end; | end; | ||
− | -- преобразовать в | + | -- преобразовать в строковое представление шестн. числа |
+ | -- если число меньше 15, то string.format не добавит лидирующий 0 ! | ||
− | local str1 = | + | 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; | local result = str1..str2..str3; |
Текущая версия на 10:56, 18 января 2017
Счетчик поддерживает протокол 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