Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Форум

Вы не вошли.

 Поиск | Регистрация | Вход 

#51 Re: Техническая поддержка и выбор оборудования » ошибка инсталляции ltrd-setup.exe » 02.02.2017 13:43:30

Алексей L Card пишет:

Также судя по всему машины без поддержки SSE2 в настоящее время достаточно редки (Ваша - первое обращение).

Софт без SSE2 синсталлировался и запустился без ошибок. OK.

По поводу использования SSE2 - я как программист захотел исследовать как сделать второе рабочее место. Я хотел установить LTRd на тестовый комп, сделав подключение через TCP и т.п. оставив основной комп подключенным крейту по USB. Но часто программист не может рассчитывать, что ему выделят, просто для тестов, еще один современный комп. Для тестов приходится использовать и старьё.
Если производительность действительно существенно выше с использованием SSE2, то конечно используйте, Для тестов вероятно сойдут и старые версии софта без SSE2. Свой софт (на основе ltrapi библиотек) я вообще компилирую на VSstudio.net 2001 и c производительностью проблем нет.

#52 Re: Техническая поддержка и выбор оборудования » ошибка инсталляции ltrd-setup.exe » 02.02.2017 11:14:40

Алексей L Card пишет:

А если Profile->Start Profiling... запустить с установленной "Log first chance exception" и журнал выложить?
А ltrd_start.bat на консольном окне что-нибудь все же выводит?

попробуйте эту версию: https://bitbucket.org/lcard/ltrd/downlo … .1.5.0.exe

1. Не нашел где "Profile->Start Profiling... запустить с установленной "Log first chance exception""

2. После запуска ltrd_start.bat сразу crash:
https://drive.google.com/open?id=0B4vhI … nF1Q0p5dTA

3. Новая версия проглючила только два раза, до отбоя дело не дошло. Вот события (c 10:35):
https://drive.google.com/open?id=0B4vhI … UQzQkI2VjQ

Однако служба ltr запустилась. Остановил ее, попробовал с инсталлировать заново - инсталляция прошла. Однако теперь новая засада - не запускается ltrmanager - вылетает с ошибкой "Ошибка при иницализации приложения 0xc000001d. Для выхода нажмите OK"

Крейт к тестовому компьютеру не подключен. Но ведь это не критично для запуска программы?

https://drive.google.com/open?id=0B4vhI … UQzQkI2VjQ

#54 Re: Техническая поддержка и выбор оборудования » ошибка инсталляции ltrd-setup.exe » 01.02.2017 15:50:49

Картинка событий
https://drive.google.com/open?id=0B4vhI … UNjZjJITWs

Ошибка не одна, а три раза. Каждый раз спрашивает послать отчет или отменить. Я выбирал отменить. На третьем разе (на config.xml) вылетает "ошибка установки сервиса -1073741795" с прдложением прервать/повтор/пропустить и я выбираю прервать.

PS На тестовом компе мало что установлено - может в этом причина. Может так какой-нибудь XML парсер нужно доустанавливать? На машине поставлен MSNetframework.4.0; Windows Installer 4.5

#55 Re: Техническая поддержка и выбор оборудования » ошибка инсталляции ltrd-setup.exe » 01.02.2017 14:39:48

Рабочий комп (где все встало) WindowsXP-SP3/Windows7-64 где рабочая XP на диске c. 
Тестовый комп 2 системы - Windows98 (диск c:) / WindowsXP-SP3 где рабочая XP стоит на диске D:

#56 Re: Техническая поддержка и выбор оборудования » ошибка инсталляции ltrd-setup.exe » 01.02.2017 14:35:41

Установщик взят с сайта (http://www.lcard.ru/download/ltrd-setup.exe) и он уже использовался на моем основном компьютере тоже с XP - все прошло нормально. На всякий случай скачал заново регитов и сравнил файлы - одинаковые.
PS: инсталяция ltrmanager_setup.exe прошла нормально.

#57 Re: Техническая поддержка и выбор оборудования » ошибка инсталляции ltrd-setup.exe » 01.02.2017 14:21:00

Алексей L Card пишет:

В системном журнале Windows приложений, есть какие-то записи, связанные с ltrd?

А в каком файле смотреть? В журнале событий Application Error событие 1000. Из диагностических сообщений об ошибке установки можно достать вот такой текст

https://drive.google.com/open?id=0B4vhI … W44VkJOTTA

#58 Техническая поддержка и выбор оборудования » ошибка инсталляции ltrd-setup.exe » 01.02.2017 12:05:01

alexko
Ответов: 14

Попробовал установить сабж на тестовый компьютер - при инсталляции серьезные ошибки. В чем может быть дело (windows XPSP3) PIII?

картинка
http://savepic.su/7542273.gif

#59 Re: Техническая поддержка и выбор оборудования » Помогите с пониманием времени опросов » 19.01.2017 15:22:39

Алексей L Card пишет:

Соответственно этот новый более удобный способ используется и в примерах, которые были обновлены. К сожалению документация пока не обновлена и в ней эта вспомогательная функция отсутствует, как и вторая введенная позже вспомогательная функция LTR11_FindAdcFreqParams()

В принципе я вроде понял. Вот к примеру отрывок из моего ini файла c настройками слота LTR11:

Скрытый текст

#LTR11
#logic channels setup format: Chan_X=GG,MM.CCCC (X - номер лог. канала)
#GG   - входной диапазон:   0 - +-10 В; 1 - +-2.5 В;  2 - +-0.625 В;  3 - +-0.156В;
#MM   - режим:  0 - 16-канальный, каналы 1-16;
#                          1 - измерение собственного напряжения  смещения нуля;
#                          2 - 32-канальный, каналы 1-16;
#                          3 - 32-канальный, каналы 17-32;
# CCCC - номер физического канала:
#                          0 - канал 1 (17);
#                           . . .
#                         15 - канал 16 (32).
#    #    #    #    #    #    #    #    #    #    #    #

[slot6_2D673369]
Marka=LTR11
Kol_log_kanals=2
#канал1 0-10В, 32 канальный(диапазон 1-16, физ.канал. 1
Chan_1=0,2,1
#канал2 +-2.5В, 32 канальный(диапазон 17-32,  физ. канал 32
Chan_2=1,3,32

#60 Re: Техническая поддержка и выбор оборудования » Помогите с пониманием времени опросов » 19.01.2017 14:05:10

Встретил пример на Билдере для LTR11 где встретилась функция LTR11_CreateLChannel

Во всех ltrapi11.pdf которые у меня есть описания этой функции нет. По примеру конечно понятно что дифференциальный режим это mode=0; С общим нулем mode=1 И т.д.
Но в примере из  ltrapi11.pdf LTR11_CreateLChannel вообще не используется и логические каналы настраиваются через таблицу довольно магическим образом

  /* диапазон - 10В, режим - 16-канальный, физический канал - 4 */
            hltr11.LChTbl[0] = (0 << 6) | (0 << 4) | (4 << 0);

#61 Re: Техническая поддержка и выбор оборудования » Помогите с пониманием времени опросов » 17.01.2017 13:42:55

wink Все таки хочу уточнить моё понимание LTR27. И  так на нем 8 мезонинов по два канала. Выбираем частоту дискретизации 100 Гц ( ltr27.FrequencyDivisor=9;)
Реальная частота опроса одного канала будет 100/16? Или нужно делить на число мезонинов (8)?

#63 Re: Техническая поддержка и выбор оборудования » Помогите с пониманием времени опросов » 16.01.2017 12:45:16

При изучении LTR27 в документации не нашел описания как задать частоту дискретизации каналов.

В примере из документации есть без объяснения:
    // выбираем частоту дискретизации 100Гц
             ltr27.FrequencyDivisor=9;

Можно по подробнее? Например я хочу 10 Гц на канал (8 мезонинов заполнены)

#65 Re: Техническая поддержка и выбор оборудования » Помогите с пониманием времени опросов » 27.12.2016 16:08:37

Электронщики дали мне раъём (см картинку). От источника питания он подключен двумя проводами (от + и -) Насколько я понимаю мне нужно третий провод от "земли" источника напряжения к пину AGRD на раъеме модульного входа?


ссылка на изображение, размер: 38.4 кбайт, 800 x 395 точек

#66 Re: Техническая поддержка и выбор оборудования » Помогите с пониманием времени опросов » 27.12.2016 15:32:33

Сорри небольшая ошибочка (которая не меняет вопроса, так как параметр 1)
Вместо
                for (j = 0; j < size; j++)
                {
                    double* frame_point = proc_data; char fr_str[200];

Нужно было
                for (j = 0; j < size; j++)
                {
                    double* frame_point = proc_data + j; char fr_str[200];

PS: Я так понял, что на форуме я не могу поправить свое сообщение?

#67 Re: Техническая поддержка и выбор оборудования » Помогите с пониманием времени опросов » 27.12.2016 15:15:57

Испытываю непонятную проблему. Все упростил до теста, но все равно не пойму в чем дело. Тест простой - каждаю секунду срабатывает таймер и я пытаюсь прочитать пять фреймов. Делитель 1600, дискредитация 5 Гц (стало быть 5 фреймов в секунду). На входе первого канала +4.9V. Сначала все читает нормально. Потом значения начинают уменьшаться и падают до нулевого шума.
Вот как это выглядит:

Скрытый текст

Период таймера опроса(мсек): 1000.0; Timeout(мсек): 1000
Версия библиотеки : 1.5
Модуль открыт успешно
Информация о модуле:
Название модуля: LTR114    Серийный номер:  3D701036
Версия прошивки MCU: 1.3    Версия прошивки ПЛИС: 1
FreqDivider: 1600; Частота дискредитации:  5.0 Гц. Число фреймов в периоде опроса (FRAME_CNT): 5
Начальная автокалибровка выполнена
Размер входного буфера size (DWORDS): 10
Размер обработанный буфера (doubles)): 5
-----------------------------------
Timer: Запрашиваемый Recv size(DWORDS): 10
Timer: Считанный Recv size(DWORDS): 10
Timer: size after ProcessData (doubles): 5
Время первого врейма: 2016-12-27 14:58:04:875
  Frame: 0     4.5934
  Frame: 1     4.5934
  Frame: 2     4.5934
  Frame: 3     4.5934
  Frame: 4     4.5934
-----------------------------------
Timer: Запрашиваемый Recv size(DWORDS): 10
Timer: Считанный Recv size(DWORDS): 10
Timer: size after ProcessData (doubles): 5
Время первого врейма: 2016-12-27 14:58:05:875
  Frame: 0     4.5934
  Frame: 1     4.5934
  Frame: 2     4.5934
  Frame: 3     4.5934
  Frame: 4     4.5934
-----------------------------------
Timer: Запрашиваемый Recv size(DWORDS): 10
Timer: Считанный Recv size(DWORDS): 10
Timer: size after ProcessData (doubles): 5
Время первого врейма: 2016-12-27 14:58:06:875
  Frame: 0     4.5934
  Frame: 1     4.5934
  Frame: 2     4.5934
  Frame: 3     4.5934
  Frame: 4     4.5934
-----------------------------------
Timer: Запрашиваемый Recv size(DWORDS): 10
Timer: Считанный Recv size(DWORDS): 10
Timer: size after ProcessData (doubles): 5
Время первого врейма: 2016-12-27 14:58:07:875
  Frame: 0     4.5934
  Frame: 1     4.5934
  Frame: 2     4.5934
  Frame: 3     4.5934
  Frame: 4     4.5934
-----------------------------------
Timer: Запрашиваемый Recv size(DWORDS): 10
Timer: Считанный Recv size(DWORDS): 10
Timer: size after ProcessData (doubles): 5
Время первого врейма: 2016-12-27 14:58:08:875
  Frame: 0     4.5934
  Frame: 1     4.5934
  Frame: 2     4.5934
  Frame: 3     4.5934
  Frame: 4     4.5934
-----------------------------------
Timer: Запрашиваемый Recv size(DWORDS): 10
Timer: Считанный Recv size(DWORDS): 10
Timer: size after ProcessData (doubles): 5
Время первого врейма: 2016-12-27 14:58:09:875
  Frame: 0     4.5936
  Frame: 1     4.5936
  Frame: 2     4.5936
  Frame: 3     4.5936
  Frame: 4     4.5936
-----------------------------------
Timer: Запрашиваемый Recv size(DWORDS): 10
Timer: Считанный Recv size(DWORDS): 10
Timer: size after ProcessData (doubles): 5
Время первого врейма: 2016-12-27 14:58:10:875
  Frame: 0     4.5943
  Frame: 1     4.5943
  Frame: 2     4.5943
  Frame: 3     4.5943
  Frame: 4     4.5943
-----------------------------------
Timer: Запрашиваемый Recv size(DWORDS): 10
Timer: Считанный Recv size(DWORDS): 10
Timer: size after ProcessData (doubles): 5
Время первого врейма: 2016-12-27 14:58:11:875
  Frame: 0     2.8331
  Frame: 1     2.8331
  Frame: 2     2.8331
  Frame: 3     2.8331
  Frame: 4     2.8331
-----------------------------------
Timer: Запрашиваемый Recv size(DWORDS): 10
Timer: Считанный Recv size(DWORDS): 10
Timer: size after ProcessData (doubles): 5
Время первого врейма: 2016-12-27 14:58:12:875
  Frame: 0     0.1004
  Frame: 1     0.1004
  Frame: 2     0.1004
  Frame: 3     0.1004
  Frame: 4     0.1004
-----------------------------------
Timer: Запрашиваемый Recv size(DWORDS): 10
Timer: Считанный Recv size(DWORDS): 10
Timer: size after ProcessData (doubles): 5
Время первого врейма: 2016-12-27 14:58:13:875
  Frame: 0     0.0014
  Frame: 1     0.0014
  Frame: 2     0.0014
  Frame: 3     0.0014
  Frame: 4     0.0014
-----------------------------------
Timer: Запрашиваемый Recv size(DWORDS): 10
Timer: Считанный Recv size(DWORDS): 10
Timer: size after ProcessData (doubles): 5
Время первого врейма: 2016-12-27 14:58:14:875
  Frame: 0     0.0014
  Frame: 1     0.0014
  Frame: 2     0.0014
  Frame: 3     0.0014
  Frame: 4     0.0014

А вот код функции таймера

Скрытый текст

    int res=0;
        Me114("-----------------------------------");
        size = FRAME_CNT * hltr114.FrameLength;
        sprintf(temp_str, "Timer: Запрашиваемый Recv size(DWORDS): %d", size);
        Me114(temp_str);

        //прием данных от модуля
        res = LTR114_Recv(&hltr114, recv_data, NULL, size, timeout_ms);

        sprintf(temp_str, "Timer: Считанный Recv size(DWORDS): %d", res);  Me114(temp_str);

        if (res == 0) //данные не приняты
        {
            sprintf(temp_str, "Timer error: не приняты данные");  Me114(temp_str);
        }
        else
        if (res > 0)
        {
            //печатаем сообщение, если принято меньше данных, чем size
            if (res < size)
            {
                sprintf(temp_str, "Timer Warning! Приняты не все данные. \
                              Принято: %d; Запрашивалось: %d", res, size);
                Me114(temp_str);       size = res;
            }

            res = LTR114_ProcessData(&hltr114, recv_data, proc_data, &size,
                LTR114_CORRECTION_MODE_INIT, LTR114_PROCF_VALUE);

            sprintf(temp_str, "Timer: size after ProcessData (doubles): %d", size);  Me114(temp_str);

            if (res == LTR_OK)
            {
               //Время блока
                MY_time1 time(0.0, MTO_YYYY_MM_DD_HH_MM_SS_MSS_DASH); time.set_current_timedate();
                sprintf(temp_str, "Время первого врейма: %s", time.str);
                Me114(temp_str);

                INT j;
                for (j = 0; j < size; j++)
                {
                    double* frame_point = proc_data; char fr_str[200];
                     sprintf(fr_str, "Frame: %d  ", j / hltr114.LChQnt);
                     char str[200]; memset(str,0,sizeof(str));

                    for(int val_index = 0; val_index < hltr114.LChQnt; val_index++)
                      {
                        double val = frame_point[val_index];
                        sprintf(temp_str, "  %4.4f",  val);
                        strcat(str, temp_str);
                      }

                     char str_line[200];
                        sprintf(str_line, "  %s %s", fr_str, str);
                        Me114(str_line);
                }
            }
            else //выводим ошибку при обработке данных
            {
                sprintf(temp_str, "Timer ProcessData err:  Error : %s!!", LTR114_GetErrorString(res));
                Me114(temp_str);
            }
        }
        else //выводим ошибку при обработке данных
        {
            sprintf(temp_str, "Timer Recv Error (res < 0): %s!!", LTR114_GetErrorString(res));
            Me114(temp_str);
        }

}
//---------------------------------------------------------------------------

#68 Re: Техническая поддержка и выбор оборудования » Помогите с пониманием времени опросов » 26.12.2016 15:28:11

В функции LTR114_Recv в случае запроса блока фреймов - как узнать, сколько фреймов за раз я могу запросить?

#69 Re: Техническая поддержка и выбор оборудования » Помогите с пониманием времени опросов » 26.12.2016 09:56:44

Видимо покадровое чтение делать нельзя из-за отсутствия гарантии, что в FIFO что-то есть. Он так же может переполнится. Если буфер стал через некоторое время пустым, то будем читать нули.

Т.е. видимо стратегия быстрой записи должна быть видимо такая:
1 накопление в FIFO буфере  фреймов в течении например 1 секунды
2. После накопления считываем все фреймы в буфер (с одновременной очисткой  FIFO)
3. Сброс буфера на диск + плюс начинается новое накопление фреймов.

#70 Re: Техническая поддержка и выбор оборудования » Помогите с пониманием времени опросов » 23.12.2016 15:03:55

Алексей L Card пишет:

При этом совершенно не важно, принимаете Вы данные по одному кадру или по несколько. По сути модуль всегда их передает в ПК со скоростью измерения, а с помощью LTR114_Recv() Вы только их откачиваете из буфера.

Т.е. я так понимаю, что нет особого смысла заморачиваться считыванием фреймов блоками? На скорость это не влияет?

#71 Техническая поддержка и выбор оборудования » Помогите с пониманием времени опросов » 23.12.2016 10:05:35

alexko
Ответов: 25

Я сейчас работаю с LTR 114. Мне нужно получать теги (имя+время+значение) и сбрасывать их потоком на диск.

В настоящее время алгоритм упрощен - я читаю с крейта 1 фрейм, после LTR114_ProcessData я беру локальное время компьютера как время фрейма (т.е. все параметры фрейма имеют это время). Я читаю параметры фрейма и формирую таги. Тут возникает вопрос - с какой _максимальной_ частотой может вызываться LTR114_Recv для чтения одного кадра?  Нужно ли ставить задержки? У меня есть подозрение что нужно.

Второй вариант - это когда LTR114_Recv читает за раз много фреймов. Но как мне получить времена каждого фрейма? Как я понимаю, вренные метки служат совсем для другого и помочь не могут, да время на крейте не устанавливается.

Пожалуйства проясните ситуацию.

#72 Re: Техническая поддержка и выбор оборудования » Посоветуйте новичку в области LTR (опыт программирования есть) » 15.12.2016 14:32:33

Алексей L Card пишет:

В принципе скоростную выдачу данных выглядит возможным реализовать и средствами OPC, если иметь тег с типом массив данных и в нем возвращать блок сырых отсчетов нужной длины.

Это потребует серьезной переделки как серверной так и клиентской части, а достижение многокилогерцовых записей не факт, что будет - OPC медленный механизм.

#73 Re: Техническая поддержка и выбор оборудования » Посоветуйте новичку в области LTR (опыт программирования есть) » 14.12.2016 14:21:29

Алексей L Card пишет:
alexko пишет:

OPC сервер выдает тэги типа u1_m1_c1

А что в этих тегах возвращается?

alexko пишет:

проблема скоростной записи

А можно подробнее, что именно Вы имеете ввиду под скоростной записью? Какую именно задачу решаете?

alexko пишет:

так как две разные программы не могут работать с крейтом одновременно

Точнее две разные программы не могут напрямую работать с одним и тем же модулем.

Возвращается значение с плавающей точкой (один параметр - одно значение). Т.е. к каждому параметру привязан OPC тег, и  значение с него считывается программой клентом.

OPC теги используются программами отображения - тут низкая скорость OPC достаточна. Но требуется, чтобы при эксперименте была возможность скоростного опроса модулей крейта (килогерцы) и запись потока значений в файл. Для этого в OPC сервере есть встроенный механизм записи данных получаемых с крейта (прямо в файл). У OPC сервера есть пара служебных тегов для получения команд от клиента, чтобы установить частоту записи, начать опрос, закончить запись.

#74 Re: Техническая поддержка и выбор оборудования » Посоветуйте новичку в области LTR (опыт программирования есть) » 13.12.2016 10:25:05

Алексей L Card пишет:

Ну с точки зрения программирования LTR11 скорее похож на несколько упрощенный LTR114.

Спасибо, начну с него.

Алексей L Card пишет:

Если там используются стандартные библиотеки ltrapi, то в принципе работа с модулями достаточна похожа.

Да для работы с LTR используется стандартные ltrapi библиотеки.

Алексей L Card пишет:

А что на выходе выдает OPC-сервер? Используете для встраивания в какую-то SCADA-систему?

OPC сервер выдает тэги типа u1_m1_c1. Также имеется встроенная запсиь данных в файл (для скоростного опроса).

Алексей L Card пишет:

На всякий случай скажу, что Л Кард в качестве заказной работы может адаптировать под задачи клиентов свой OPC-сервер.

Решается ли как-то в этом случае проблема скоростной записи? Я так понимаю, что сам OPC сервер работающий с крейтами должен это поддерживать, так как две разные программы не могут работать с крейтом одновременно?

#75 Техническая поддержка и выбор оборудования » Посоветуйте новичку в области LTR (опыт программирования есть) » 12.12.2016 17:08:01

alexko
Ответов: 7

Извиняюсь если вопрос некорректный.
Мне пришлось взять и вести не свой софт (исходники VC++ есть) для работы с LTR11,  LTR114 и LTR212. Всё выполнено в виде OPC сервера (OPC серверы мне знакомы). Работа каждого из модулей выполнена в виде отдельного С++/*.h файла. В программе есть casы типа
            case 0x1b1b: //27
            case 0x7272: //114
            case 0xd4d4: //212

Теперь стоит задача малой кровью добавить в крейт LTR11. Какой из трех модулей наиболее близок по программированию к LTR11 (вопрос - на основе какого модуля мне будет легче сделать добавку LTR11?) Также по аналогии я добавлю
            case 0x0b0b: //11

Думаю должно получиться. Раньше с LTR дело не имел, возможно я сам разберусь после прочтения мануалов, но хотелось бы услышать совет.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4

Многоканальный телефон: +7 (495) 785-95-25

Письма и запросы: lcard@lcard.ru
Отдел продаж: sale@lcard.ru
Мы работаем с юридическими и физическими лицами, пожалуйста, прикладывайте реквизиты при оформлении заказа
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск