Цитата:
Сообщение от dima
Необходимо с входа модуля аналогового ввода EL-4019 считывать значение
тока (4-20 мА). В элемеровской программе для настройки модуля есть возможность посмотреть значение на входе в виде единиц измеряемой величины (мА) и целочисленного представления "ValueNorm", которое принимает следующие значения:
при 4 мА ValueNorm=21817;
при 12 мА ValueNorm=43672;
при 20 мА ValueNorm=65528;
Подсоединяю модуль к 2Gi, и считываю из регистра ValueNorm следующие значения:
при 4 мА ValueNorm=21820;
при 12 мА ValueNorm=21868;
при 20 мА ValueNorm=-15;
Это было при настройке переменной в карте памяти на формат данных "Integer". Меняю формат на "long" и получаю:
при 4 мА ValueNorm=715915250;
при 12 мА ValueNorm=715893359;
при 20 мА ValueNorm=715805994;
Далее, в руководстве EL-4019 написано, что значение регистра ValueNorm связано со значением Value следующим образом: ValueNorm=(Value-min)/(max-min), где мах и min это 20 и 4 соответственно. Но как получить значение ValueNorm=65528 при 20 мА, как это получается в элемеровской программе? И еще: в руководстве на модуль написано, что формат данных регистра- целое двухбайтовое число без знака. Это какой формат? Как обработать эти данные, чтоб можно было ими пользоваться в SMLogic?
|
Считывать в формате long не надо. При чтении long вместо одного будут считаны два регистра.
У Сегнетикса целочисленные переменные только со знаком. А Вам нужны беззнаковые. Ничего страшного - их можно самому программно преобразовать.
Например вот так: