Показано с 1 по 8 из 8

Тема: Десятичная точка Lectus

  1. #1

    По умолчанию Десятичная точка Lectus

    Здравствуйте

    Поимел вот такую проблему, приборов МВ110-8АС, раньше использовал opc драйвера фирмы Овен.
    Теперь переходим на lectus, скада iFix. Но показания с lectus идут без десятичной точки, т.е. вместо 1.88 выдается 188. Раньше все было нормально.
    Параметр смещения десятичной точки dT менял всяко - не помогло.
    Может кто сталкивался с таким ?

  2. #2
    Пользователь Аватар для and909
    Регистрация
    25.10.2013
    Адрес
    Пермь
    Сообщений
    589

    По умолчанию

    Читаете те-же адреса? Бывает в одних регистрах целое, в других отдельно положение точки или сразу число с точкой.
    Типы данных такие-же? Int16, Float32.

  3. #3

    По умолчанию

    Вообщем если поподробнее:
    начались массовые проблемы с блоками питания, после трех лет эксплуатации примерно у 50% БП уплывают характеристики.
    Принято решение, брать питание с частотного привода, приборы перевели в конфигураторе в modbus RTU, переназначили адреса - 1,2,3
    Каналы брали с 100 по 108 по моему, где-то был мануал, сейчас под рукой нет. В конфигураторе выдает правильно, в lectus-е вижу такое:
    при выставление Параметра смещения десятичной точки dT:
    при 0 - 1, при 1 - 18, при 2 -181, при 3 -1810.
    В лектусе тип стоит dword, меняю тип получаю полную охинею.

  4. #4
    Пользователь Аватар для and909
    Регистрация
    25.10.2013
    Адрес
    Пермь
    Сообщений
    589

    По умолчанию

    Глянул мануал. Таблица Г3. Там описано то, о чем я говорил.

    По адресам 0х100-0х107 измеренные значения в int16 (2 байта).
    По адресам 0х20-0х27 отдельно смещения точки для этих каналов.

    По адресам 0х120-0х137 эти же измеренные значения во Float32 (4 байта) (с плавающей точкой и метками времени).

    Либо читайте значения по адресам 0х100-0х107 и смещайте точку, исходя из значений 0х20-0х27.
    Если Скада Овен читает эти адреса, то значения со смещением вычисляются скриптом.
    Можно ли и как это сделать в Лектусе не знаю(надо смотреть).

    Либо читайте значения сразу в формате с плавающей точкой по адресам 0х120-0х137 (метки времени можно отрезать в Лектусе).

    Я тоже пользуюсь Лектусом. Для снижения траффика читаю значения в int16, а точку переношу в Скаде (значение делю на 10 в степени dT).
    Последний раз редактировалось and909; 27.11.2014 в 18:37.

  5. #5

    По умолчанию

    А можно поподробнее, как отрезать метки времени в лексусе ?
    В принципе значение я могу подогнать в самой скаде, только графики разъедутся.

  6. #6
    Пользователь Аватар для and909
    Регистрация
    25.10.2013
    Адрес
    Пермь
    Сообщений
    589

    По умолчанию

    Либо собирайте переменную, используя закладку Составная переменная (скрипты) (Рис. 1).
    Скрипты подсмотрите у Овена.

    Либо вырезайте значимые биты (Рис. 2).


  7. #7
    Пользователь Аватар для and909
    Регистрация
    25.10.2013
    Адрес
    Пермь
    Сообщений
    589

    По умолчанию

    Подсмотрел скрипт у MasterOPC:

    --инициализация скрипта
    function OnInit()
    end
    --деинициализация скрипта
    function OnClose()
    end
    -- обработка
    function OnRead()
    --определение локальный переменных
    local t,q,tstatus,qstatus, dpval,dpq;
    --считывание значение и качества текущего тэга
    t,q = server.ReadCurrentTag();
    --считывание значения смещения десятичной точки
    dpval,dpq=server.ReadTagByRelativeName("Смещение") ;
    if ( not (dpval>=0 and dpval <= 4)) then
    dpval = 0;
    end

    --смещаем полученное число
    t=t/10^dpval;
    if (q == OPC_QUALITY_GOOD) then
    --если признак хороший анализируется статус измерения - тэг "Статус"
    tstatus,qstatus = server.ReadTagByRelativeName("Статус");
    --вызов внешней функции (функция прописана у устройства)
    q = server.RunFunctionFromDevice("CheckQ",1,tstatus);
    end
    --если значение равно 0 то качество хорошее
    --если значение не равно нулю
    if(q ~= OPC_QUALITY_GOOD) then
    --вывод сообщения в лог ОРС сервера server.Re
    server.Message("q teg = ",q);
    end
    --запись в текущщий тэг измеренного значения и вычисленного признака качества
    server.WriteCurrentTag(t,q);

    end

  8. #8

    По умолчанию

    Спасибо за ответы, ни чего не помогло, решил средствами скада.

Похожие темы

  1. plc150il+lectus
    от vvu2011 в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 13.11.2013, 16:24
  2. Lectus
    от звездочка в разделе OPC Серверы
    Ответов: 11
    Последнее сообщение: 25.09.2013, 08:35
  3. Сколько стоит точка
    от engineeracytp в разделе Трёп (Курилка)
    Ответов: 3
    Последнее сообщение: 09.10.2012, 23:59
  4. Lectus+Укт38
    от shake112005 в разделе Сервисное ПО
    Ответов: 2
    Последнее сообщение: 07.10.2011, 15:23
  5. ТРМ101 + Lectus
    от Mair в разделе Помощь Разработчикам
    Ответов: 1
    Последнее сообщение: 21.06.2011, 00:16

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •