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

Форум

Вы не вошли.

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

#1 Re: Техническая поддержка » Особенности работы с E-502 (данные с каналов АПЦ) » 18.06.2020 09:10:01

ET

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

На канале просто шум ("открытый вход"). А записывается/считывается как бы чистый "0".
Я пока снимаю вопрос. Санитайзер памяти намекает на проблемы в прикладном коде. Так что проблема не в SDK x502 или уж точно не только там.  Напишу позже, когда разберусь с ситуацией.

#2 Re: Техническая поддержка » Особенности работы с E-502 (данные с каналов АПЦ) » 17.06.2020 14:39:46

ET

Здравствуйте,
Спасибо за отклик.

"Запрокшенное" состояние - последовательность вызовов о том, что далее обмен будет по USB:

X502_Create()
constexpr int usb_devcnt = 1;
usb_rec_list = static_cast<t_x502_devrec*>(malloc(usb_devcnt * sizeof(t_x502_devrec)));
... = E502_UsbGetDevRecordsList(&usb_rec_list[0], usb_devcnt, 0, nullptr);
... = X502_OpenByDevRecord(handle, &usb_rec_list[0]);

Далее, берем случай для 3 каналов (0,1,2) и 100КГц на канал.
chan_cnt = 3

Конфигурирование

X502_SetRefFreq (handle, ((chan_cnt % 2) ? X502_REF_FREQ_1500KHZ : X502_REF_FREQ_2000KHZ)); 
X502_SetLChannelCount(handle, chan_cnt);
по каждому каналу:
{ 
  X502_SetLChannel(handle, static_cast<uint32_t>(ii), f_chans[ii], f_chan_modes[ii], f_chan_ranges[ii], 0);
  Log_Wrapper ("bh:", handle, " ii:", ii, " f_chans[ii]:", (int)f_chans[ii], " f_chan_modes[ii]:", (int)f_chan_modes[ii], " f_chan_ranges[ii]:", (int)f_chan_ranges[ii]);
}
X502_SetAdcFreq(handle, &f_adc, &f_frame); //  f_adc:300000 f_frame:100000
X502_Configure(handle, 0)

в логах:

17.06.2020 12:49:45.380480 bh:0x694818 ii:0 f_chans[ii]:0 f_chan_modes[ii]:0 f_chan_ranges[ii]:0
17.06.2020 12:49:45.380841 bh:0x694818 ii:1 f_chans[ii]:1 f_chan_modes[ii]:0 f_chan_ranges[ii]:2
17.06.2020 12:49:45.381031 bh:0x694818 ii:2 f_chans[ii]:2 f_chan_modes[ii]:0 f_chan_ranges[ii]:0

Сбор и останов

X502_StreamsEnable(handle, X502_STREAM_ADC);
X502_StreamsStart(handle);
в цикле:
{
 X502_Recv(handle, rcv_buf, read_block_size, READ_TIMEOUT);
 X502_ProcessDataWithUserExt(handle, rcv_buf, .., X502_PROC_FLAGS_VOLT, .., .., nullptr, nullptr, nullptr, nullptr); // blackfin'a физически нет
}
X502_StreamsStop(handle);
X502_StreamsDisable(handle, X502_STREAM_ADC);

Затем просто добавляем еще канал (3) с такой же последовательностью конфигурирования и сбора-останова.

в логах:

17.06.2020 12:50:12.954854 bh:0x694818 ii:0 f_chans[ii]:0 f_chan_modes[ii]:0 f_chan_ranges[ii]:0
17.06.2020 12:50:12.954979 bh:0x694818 ii:1 f_chans[ii]:1 f_chan_modes[ii]:0 f_chan_ranges[ii]:2
17.06.2020 12:50:12.955093 bh:0x694818 ii:2 f_chans[ii]:2 f_chan_modes[ii]:0 f_chan_ranges[ii]:0
17.06.2020 12:50:12.955205 bh:0x694818 ii:3 f_chans[ii]:3 f_chan_modes[ii]:0 f_chan_ranges[ii]:2

X502_SetAdcFreq(handle, &f_adc, &f_frame); //  f_adc:400000 f_frame:100000

Если ПО перегрузить, то просто дополнительно (к последнему варианту) выполняется последовательность, описанная вначале, но количество каналов 4 при этом записывает норм.
Не исключена тонкая ошибка (н-р, с обращением к памяти) где-то в нашем коде, но по крайней мере можете оценить последовательность из SDK?

#3 Техническая поддержка » Особенности работы с E-502 (данные с каналов АПЦ) » 16.06.2020 09:50:36

ET
Ответов: 4

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

Возник вопрос по последовательности вызовов различных API из состава x502.
А именно: правильно ли при многократном включении и отключении режима регистрации АПЦ экономить на вызовах. Или лучше осуществлять полную последовательность, как это показано в демонстрационных  примерах.

То есть по факту - сейчас "запрокшено" некое состояние перед включением синхронного режима.
Затем (при каждой следующей регистрации) используются только функции конфигурирования, сбора и преобразования данных.
Затем возврат в асинхронный режим (просто останов регистрации).

Данная схема оправдала себя в предыдущих задачах, где число каналов было постоянным с момента запуска приложения. Однако в этот раз наблюдается следующее. Если увеличить (например на 1) количество каналов АЦП для последующей регистрации, то по данному каналу приходят постоянные значения (на осциллограмме - линия). Если уменьшать или сохранять прежнее количество каналов, то все данные по всем каналам - правильные.

Во всех случаях ошибок API из SDK x502, вроде бы, не возникает.


Спасибо.

#4 Re: Техническая поддержка » LTR-CEU-1-4, LTR24, интерфейсы крейта. » 27.02.2018 08:56:56

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

Несколько странно, вроде относительный путь должен устанавливать относительно префикса установки (CMAKE_INSTALL_PREFIX, который по умолчанию обычно /usr/local). Сходу не скажу, не нарушат ли абсолютные пути сборки каких-то пакетов, надо отдельно рассмотреть для решения какой вариант оставить. В принципе свои пути можно указать и явно один раз при вызове cmake через -DSYSTEMD_SERVICE_INSTALL_DIR=/lib/systemd/system -DLTRD_UDEV_RULES_DIR=/lib/udev/rules.d.

Да, все правильно. Я ошибся.

Дело в том, что изначально делал сборку "как есть", то есть без игры с опциями (внутри ltrd настроек), - то есть чтобы собранная ltrd заработала хотя бы как обычное приложение. И только потом включил все остальное (LTRD_DAEMON_ENABLED - ON, LTRD_SYSTEMD_ENABLED - ON, LTRD_USB_ENABLED - ON).
Но cmake что-то кеширует со сборкой и не реагирует на такие изменения как option (или реагирует частично). В результате в тот момент, когда догадался удалить CMakeCache.txt, в CMakeLists уже стоял явный путь (после отчаяния увидеть ltrd.service где-либо на диске кроме исходников ;-))

#5 Re: Техническая поддержка » LTR-CEU-1-4, LTR24, интерфейсы крейта. » 26.02.2018 14:21:53

ET

Ничего существенного, но все же.
В исходнике ltrctl в  функцию f_crate_type_str() добавил поддержку крейта CEU-1-4
        case LTR_CRATE_TYPE_LTR_CEU_1:
            ret = "LTR-CEU1";
            mcnt = 1;
            break;
Иначе крейт - Unknown, а модуль не отображается (ltrctl clist)

При инсталляции (make install)
ltrd.service и ltr-crates.rules не устанавливаются вообще куда-либо, если не указать явные пути
set(SYSTEMD_SERVICE_INSTALL_DIR /lib/systemd/system)
set(LTRD_UDEV_RULES_DIR /lib/udev/rules.d)
(то есть добавить "/")

Поскольку делал сборку clang'ом (gcc слишком старый), то примеры некоторые не собирались из-за отсутствия линковки с математическими библиотеками (при этом библиотеки ltr собирались нормально)
Добавил в ltrmodule.cmake:

if(LTRAPI_MODULE_USE_MATH)
    ...
    if (CMAKE_C_COMPILER MATCHES "clang")
        set(LTRAPI_MODULE_LIBS ${LTRAPI_MODULE_LIBS} m)
    endif()
endif(LTRAPI_MODULE_USE_MATH)

Есть моменты, когда коды en_LTR_ERRORS присваиваются переменной другого типа t_flash_errs (возможно, это и важно)
(gcc это не обнаруживает)
ltr24api.c:688:33
flash_iface_ltr.c:222:12

#6 Re: Техническая поддержка » LTR-CEU-1-4, LTR24, интерфейсы крейта. » 26.02.2018 07:56:24

ET

По п.1 - разобрался. Да, так оно и есть.

2. Была произведена сборка ПО на одном из ноунейм ARM linux из исходников ltr_cross_reference. Если вас заинтересуют мелкие правки чтоб закомметить на bitbucket, могу на словах описать. (diff-файл не делал)
Под Windows ltrctl попробую собрать сам, если действительно будет актуально.

#7 Техническая поддержка » LTR-CEU-1-4, LTR24, интерфейсы крейта. » 22.02.2018 08:01:15

ET
Ответов: 6

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

Подскажите, пожалуйста, в чем может заключаться следующая проблема:
1. LTR Manager прекрасно видит как крейт, так и модуль в нем, когда в настройках крейта указан интерфейс крейта USB.
Но когда указывается TCP/IP(Ethernet) (с настроенным IP и маской подсети, шлюз, допустим, указан пустым), то виден только крейт,
но не видно модуля. ПК вместе с крейтом подключены к одной ЛС через обычный хаб.
2. При/после установки ПО последних версий (lcomp.exe, ltrd-setup.exe, ltrmanager_setup.exe, ltrdll.exe) утилита ltrctl не установлена.
(она желательна нам для общего единообразия в работе с другой ОС). Должна ли она устанавливаться в Windows. Об этом трудно судить из документации.

Спасибо.

Контакты

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

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

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

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