Форум:

Вы не вошли.

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

#1 Re: Техническая поддержка » Межмодульная синхронизация L502 » 08.05.2024 13:43:45

На ведущем модуле Вам нужно задать опорную частоту в 1.5 МГц (которую будет использовать сам ведущий модуль и генерировать для ведомого) с помощью X502_SetRefFreq() до настроек частоты АЦП, а для ведомого нужно задать ожидаемое значение внешней опорной частоты с помощью X502_SetExtRefFreqValue() перед установкой частоты АЦП, чтобы функция установки частоты АЦП корректно подобрала делители опорной частоты.

За 10 часов при пределах отклонения опорной частоты в ±0,005 % (5.5.1 из https://www.lcard.ru/download/l-502_users_guide.pdf) максимально допустимое расхождение в худшем случае будет (если у одного модуля отклонение на -0,005%, у другого на +0,005% - за счет этого умножение на 2 в конце) в секундах равно: 10*3600*(0,005/100)*2 = 3.6 c. Хотя в конкретном случае оно может быть значительно меньше...

#2 Re: Техническая поддержка » Считывание данных с LTR24-2 Python » 06.05.2024 18:57:03

Насчет соответствия размеров типов есть сомнения... по крайней мере у меня sizeof(ctypes.c_ulong) дает 8 вместо 4, а sizeof(ctypes.c_bool) - 1, вместо также 4 (BOOL определен как 4-байтовое в типах Windows, в отличие от BOOLEAN - 1 байт). Лучше бы использовать типы с явным размером:

int = ctypes.c_int32
BOOL =  ctypes.c_uint32
BYTE = ctypes.c_uint8
WORD = ctypes.c_uint16
DWORD = ctypes.c_uint32

Если поменять на такое соответствие типов и использовать pack = 4, то что с соответствием размеров и данными будет?

#3 Re: Техническая поддержка » Межмодульная синхронизация L502 » 06.05.2024 18:25:46

А какая опорная частота используется  (функции X502_SetRefFreq() для ведущего и X502_SetExtRefFreqValue() для ведомого) ? т.к. при работе от внешней частоты верхний предел 1.5 МГц, то нужно перейти с 2 МГц на 1.5 МГц.
Нули появляются на ведомом модуле? на всех каналах? Сбор идет без остановки и просто в потоке с какого-то момента данные становятся нулями а потом опять же без перезапуска все восстанавливается или как?

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

#4 Re: Техническая поддержка » Крейт LTR-EU-8/16 перестал видеть модули LTR212 и LTR27 » 06.05.2024 18:10:11

Добрый день! Судя по скриншотам это аппаратная проблема в крейте, она не связана с ПО или версией Windows (видимо просто совпало по времени), т.к. сам крейт корректно определяется в системе, а определение наличия модулей уже выполняется внутри крейта. Видимо по какой-то причине от модулей перестал доходить сигнал их присутствия до крейта. В любом случае придется связываться с офисом и передавать крейт в ремонт.

#5 Re: Техническая поддержка » Установка LMS - "Ошибка запуска службы базы данных экспериментов" » 23.04.2024 15:07:31

2. По журналу похоже, что это не после полного удаления (что у C:\Program Files (x86)\L-Card\L Card Measurement Studio\bin\db\ на момент установки были файлы).
Если поставить LMS, пропустив ошибки, затем ее удалить и при удалении согласиться на полное удаление базы экспериментов (если будут ошибки - нажать пропустить), убедится, что вся папка установки пуста, и заново попробовать установить LMS, можете прислать также сообщения из деталей после этого? Запускаете установщик от имени Администратора при этом?
3. Да, опечатка, имел ввиду [mysqld.exe].

#6 Re: Техническая поддержка » Считывание данных с LTR24-2 Python » 22.04.2024 19:40:15

Также смущает, что у Вас в объявлении идет _pack_ = 1, хотя ltr24api.h используется выравнивание на 4, а не 1.
Также, чтобы проверить правильность описания структур в Phyton, сравните значение размера структуры TLTR24, полученное sizeof из вашей программы, и значение, которое будет в поле Size после вызова LTR24_Init()

#7 Re: Техническая поддержка » Установка LMS - "Ошибка запуска службы базы данных экспериментов" » 22.04.2024 18:32:01

Здравствуйте.
А какая ОС на каждом из ПК?
Если при этой ошибке прерывать установку и открыть "детали", то можете тут выложить последние строки из оттуда?
При прерванной установке файлы внутри <пусть установки LMS>/bin/db/bin есть файлы включая mysld.exe? Если его запустить вручную, будет какое-то сообщение или просто ничего не будет происходить?
В меню Windows "Управление компьютером" -> "Службы и приложения" -> "Службы" есть в этом случае служба LMSDbService? Какое состояние? Если попробовать правой кнопкой нажать и выбрать "Запустить"?

#8 Re: Техническая поддержка » Считывание данных с LTR24-2 Python » 18.04.2024 15:48:43

Enanik пишет:

# переключаем модуль в тестовый режим
   pLTR24.contents.TestMode = True

А в тестовый режим зачем переключаете? Тестовый режим для канала диф. входа это как раз режим измерения собственного нуля, тогда данные вполне объяснимы...

#9 Re: Техническая поддержка » Установка драйвера на orangepi » 11.04.2024 15:25:14

У Вас судя по всему какая-то очень старая версия исходников драйвера lcomp.
В упомянутой в предыдущем посте такого быть не должно...

#10 Re: Техническая поддержка » Работа LTR43 с RS485 » 22.12.2023 11:20:31

RS485 на LTR43 можно использовать при написании своей программы с использованием штатной библиотеки ltr43api (функции описаны в https://www.lcard.ru/download/ltr43api.pdf).

В LMS в настоящее время работа с RS485 LTR43 не поддерживается. Также не совсем понятно, что имеется ввиду под поддержкой RS485 в законченном ПО, тут скорее может идти речь о поддержке конкретных устройств с интерфейсом RS485, подключаемых к LTR43.

Для чего Вы хотите использовать RS485? Что именно к нему подключаете?

#11 Re: Техническая поддержка » LTR отказывает в доступе » 29.11.2023 15:43:10

Да, точно также, взяв файлы отсюда: https://www.lcard.ru/download/ltr_eu_8_16_fw2000.zip.
Но точно также запись прошивки можно делать только по USB

#12 Re: Техническая поддержка » Получение списка модулей крейта » 28.11.2023 11:00:26

Добрый день.
Все коды идентификаторов модулей есть в перечислении _LTRNative.MODULETYPE, с ними по хорошему и нужно сравнивать, вставляя его значения как Net Property. Сами же эти числа являются по сути двухбайтовыми значениями, где младший и старший байт равны номеру модуля, т.е. их можно получить по формуле: n + 256*n, где n - номер модуля.

#13 Re: Техническая поддержка » LTR отказывает в доступе » 28.11.2023 04:24:55

Да, в прошивке 2.0.0.0 есть проблема, что при разрыве соединения, если крейт не получил пакет закрытия, то у него соединение остается незакрытым и не может быть установлено новое соединение. Попробуйте обновить прошивку крейта на 3.0.0.13 (https://www.lcard.ru/download/ltreu-fw-3.0.0.13.zip). Для этого нужно подключить крейт по USB и в LTR Manager нажать правой кнопкой по крейту и выбрать соответствующее действие и указать файл (ltr030 - 8/16 местный, ltr031 - 2-местный)

#14 Re: Техническая поддержка » LTR отказывает в доступе » 24.11.2023 18:46:28

А какая версия прошивки крейта у Вас используется (можно посмотреть в LTR Manager)?

#15 Re: Техническая поддержка » Синхронный опрос модулей в LTR-EU-8 » 10.11.2023 13:36:19

Для синхронизации данных нескольких модулей можно использовать механизм синхрометок крейта. Для этого нужно использовать функции работы с крейтом из ltrapi (в LabView класс ltrcrate из ltrModulesNet), как описано в пункте 4.6 документа https://www.lcard.ru/download/ltrapi.pdf, а также для каждого модуля использовать вариант Recv, в котором помимо данных возвращаются счетчики меток tmark. Общая идея, что сперва Вы запускаете сбор со всех модулей (он будет в разное время за счет задержек передач команд запуска), после этого даете крейту команду генерации метки СТАРТ, а при приеме данных от модулей отбрасываете данные (кратно размеру кадра) до тех пор, пока счетчик меток старт в tmark не изменится. Таким способом вы привяжете момент начала данных от всех модулей к метке СТАРТ с точностью до периода дискретизации модуля.

Этот механизм можно использовать для всех модулей непрерывного сбора данных, но нельзя для LTR210 в режиме покадрового сбора. Но для LTR210 есть свои сигналы синхронизации, которые можно соединить и настроить работу в режиме ведомый-ведущие и получить синхронный сбор кадров. Если нужна синхронизация кадров LTR210 с данными других модулей, то можно использовать разъем синхронизации крейта LTR-EU. Можно либо настроить, чтобы крейт генерировал сигнал при метке СТАРТ на выходе DIGOUT1 или DIGOUT2 разъема синхронизации и его завести на синхровход модулей LTR210 и настроить их запуск от внешнего цифрового сигнала, либо реализовать в обратную строну, где ведущий LTR210  будет вырабатывать сигнал на выходе синхронизации и его завести на DIGIN1 или DIGIN2 разъема синхронизации крейта и настроить генерацию меток по сигналу на этом входе. В первом случае кадр в LTR210 будет собираться по команде генерации синхрометки крейта, а во втором наоборот, синхрометки будут генерироваться по сбору кадра в LTR210 по команде к LTR210. В любом случае метка будет привязана к моменту сбора кадров LTR210 и данные других модулей можно будет привязать к данным кадра LTR210.

Использование привязки данных к метке СТАРТ для LTR24 на LabView можно посмотреть в примере отсюда: https://www.lcard.ru/download/examples/ … _start.zip.
Пример использования класса ltrcrate в LabView на примере настройки выходов разъема синхронизации можно посмотреть в примере: https://www.lcard.ru/download/examples/ … ut-cfg.zip

#16 Re: Техническая поддержка » L-502 и Astra Linux SE Смоленск » 19.10.2023 17:48:43

Есть ли на этой системе инструменты сборки ПО (gcc)? Есть ли возможность собрать консольный пример для модуля https://gitlab.com/l-card/acq/devices/x … type=heads и протестировать, будет ли зависание, если его запускать?

Если взять пакет x502studio (это та же lqmeasstudio, просто в новых версиях сменила название) версии 1.3.2, то проявляется ли на ней? Если в настройках приложения отключать спектральную обработку и/или увеличить интервал обработки/уменьшить время блока обработки, то как-то это влияет на зависания?

#17 Re: Техническая поддержка » L-502 и Astra Linux SE Смоленск » 19.10.2023 00:59:05

Здравствуйте. А какая версия прошивки FPGA в модуле L-502 (отображается в студии)? 
Сам модуль L-502 один и тот же в обоих случаях?
Под  ОС Astra Linux  Орел в качестве ПК выступает такой же моноблок или там другое железо?
Влияет ли настроенная частота ввода на зависания?

#18 Re: Техническая поддержка » L502 подсчёт времени » 14.10.2023 23:19:05

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

По поводу точности, то нужно учитывать, что для любого способа, основанного на внутренней частоте процессора есть ошибка, связанная с неточностью значения самой этой частоты, от которой работает процессор. Для L-502 эта точность 50ppm или 0.005 % (т.е. для измерения времени секунды может быть ошибка до 50 мкс).

По поводу Вашего кода.
Во первых не совсем понятна инициализация таймера, *pTIMER0_CONFIG = 0x0003 - это режим работы EXT_CLK - подсчета импульсов внешнего сигнала, который должен подаваться на соответствующую ножку процессора (чего в схеме L-502 нет), значения pWIDTH и pPERIOD также не очень понял, и они устанавливаются когда *pTIMER0_CONFIG равен 0, т.е. таймер запрещен и эти изменения вообще могут быть неприменимы.

Если Вам нужен таймер, который генерирует прерывания раз в мс, то Вам нужно настроить режим PWM_OUT без использования собственно выходного сигнала PWM на ножке (OUT_DIS = 1), с постоянной (не однократной) генерацией сигнала (PERIOD_CNT = 1) и с разрешенной установкой бита прерывания в конце каждого периода (IRQ_ENA = 1). Таймер по умолчанию работает от частоты SCLK = 132.5 МГц, соответственно в регистр длительности периода, чтобы она была 1 мс, нужно записать значение 132500. Регистр WIDTH определяет длину активного значения импульса (duty cycle) для сигнала pwm и т.к. сам PWM сигнал Вы не используете, то его значение не важно, но на всякий случай лучше установить его в действительное значение, т.е. не менее 1, но меньше PERIOD.

Т.е. код инициализации таймера без разрешения обработчика прерывания таймера может выглядеть так:

*pTIMER0_CONFIG = PWM_OUT | PERIOD_CNT | IRQ_ENA | OUT_DIS;
*pTIMER0_PERIOD = 132500;
*pTIMER0_WIDTH  = 1;
*pTIMER_STATUS = TIMIL0; /* сброс флага прерывания на случай, если он был установлен */

После конфигурации таймер необходимо также запустить через TIMER_ENABLE.

*pTIMER_ENABLE = TIMEN0;

В этом режиме можно проверить настройки таймера без разрешения обработчика путем обычного опроса (т.к. бит IRQ_ENA установлен, то таймер будет устанавливать флаг прерывания, который можно проверить и сбросить, но сам обработчик не будет вызываться, т.к. не разрешен в pSIC_IMASK1), периодически вызывая проверку:

if (*pTIMER_STATUS & TIMIL0) {
    *pTIMER_STATUS = TIMIL0; /* сброс идет записью 1 */
    
    /* увеличение счетчика мс */ 
}

Если все работает как надо (идет подсчет мс корректно), то долее можно разрешить уже обработчик.

Строка REGISTER_ISR(12, inc_time); регистрирует обработчик прерывания для прерывания IVG12. Через регистры IAR Вы делаете маппинг прерываний от периферии на прерывания контроллера (IVG7 - IVG15) (что необходимо, т.к. обработчиков под периферию всего 9, а источников намного больше). В макросе Pxx_IVG(n)  значение n - это как раз номер IVG, а значение xx - Peripheral ID# (для TIMER0 - 32), т.е. правильный вызов макроса - P32_IVG(12). Во-вторых делать просто операцию "или" не совсем корректно, т.к. уже есть назначение по умолчанию при старте и поле может быть не 0 (и к слову для TIMER0 это как раз IVG12 и можно было бы ничего не писать), поэтому сперва значение этого поля в IAR4 нужно обнулить. Для этого я не нашел готовый макрос, поэтому в прошивке пишу через явную битовую маску:

*pSIC_IAR4 = (*pSIC_IAR4 & 0xFFFFFFF0) | P32_IVG(12);

Т.е. после настройки таймера и до его разрешения через pTIMER_ENABLE, нужно вставить:

*pSIC_IAR4 = (*pSIC_IAR4 & 0xFFFFFFF0) | P32_IVG(12);
REGISTER_ISR(12, inc_time);
*pSIC_IMASK1 |= IRQ_TIMER0;

В обработчике прерывания необходимо аналогично проверить флаг от таймера и сбросить его, после чего вызвать ssync(), чтобы флаг сбросился до выхода из обработчика и не попасть в обработчик второй раз:

ISR(inc_time) {
    if (*pTIMER_STATUS & TIMIL0) {
        *pTIMER_STATUS = TIMIL0; /* сброс идет записью 1 */
    
        /* увеличение счетчика мс */ 

        ssync()
    }
}

#19 Re: Техническая поддержка » LTR51 - ошибка 1172 » 13.10.2023 12:32:23

Здравствуйте.
Поле F_base не предназначено для заполнения пользователем. Это результирующий параметр, вычисляемый библиотекой при вызове LTR51_Config на основе значений Fs и Base. Поэтому в классе C# он задан как доступный только на чтение. Вы же пытаетесь записать значение в данное свойство, на что и выдается соответствующая ошибка об отсутствии метода для установки значения.

#20 Re: Техническая поддержка » Linux Astra и LTR-EU-16-1 » 02.10.2023 20:31:23

Да, смена настроек поддерживается только через подключение по USB интерфейсу.

#21 Re: Техническая поддержка » Драйвер lcomp_linux для ядра 6 » 02.10.2023 20:26:49

ltrd: Зависит: libc6 (>= 2.34) но 2.28-10deb10u2+ci202302271750+astra5 должен быть установлен

Это сообщение говорит о том, что библиотека собрана c libc версии 2.34, которая как раз в Ubunutu 21.10, а у Вас в системе стоит версии 2.28 (и от этой версии зависят другие пакеты и ее нельзя обновить). Версии libc (не считая номера патча) как правило не меняются в рамках одного дистрибутива, а только при переходе от одной версии дистрибутива к другой.
Нужно ставить из того дистрибутива, на котором основана Ваша версия Astra. И судя по версии "2.28-10deb10u2" из Вашего сообщения, она основана на Debian-10. Вот и ставьте пакеты из Debian-10, а не Ubuntu.

и еще в инструкции в разделе 7 для Debian подобных систем описана установка deb пакетов, но ни в одном из репозиториев нет deb пакетов, везде тарбол

.deb файлы лежат в папках архитектуры, для которой они предназначены. Например для Debian 10 для 64-битной архитектуры x64: https://download.opensuse.org/repositor … _10/arm64/

"liblcomp.so.1: cannot open shared object file: No Such file or directory"

Сообщение ровно то и означает, что не найден указанный файл библиотеки. Драйвер тут не причем. Он у Вас должен быть в стандартной папке (обычно /usr/lib), либо должен быть указан путь, откуда его брать одним из способов. Если Вы ставите из пакетов, он туда поставится автоматом. Если сами собирали, то установлен ли он у Вас и куда? Если делали через make install, то во время выполнения пишется папка, куда файлы скопированы. Проверьте, т.к. при ручной установке по умолчанию обычно используется директория с local, т.к. в основное дерево файлов по хорошему ставить нужно только через пакеты, чтобы не было конфликтов, и эта локальная директория может отсутствовать в путях, где ищутся библиотеки по умолчанию.

#22 Re: Техническая поддержка » Драйвер lcomp_linux для ядра 6 » 28.09.2023 11:48:20

Для основанных на Debian дистрибутивов (как Astra) для atomic-ops должен стоять штатный пакет libatomic-ops-dev. Если ставить библиотеку из пакета, то эта зависимость уже прописана, если собирать вручную, то нужно поставить явно:

sudo apt install libatomic-ops-dev

После сборки библиотеки Вы как раз и получите .so файл.
Другой вопрос, что liblcomp написан на C++ с использованием виртуальных методов, и весь вопрос, насколько это можно напрямую использовать из C#. С обычными C функциями с этим проблем нет и в случае lcomp для Windows некоторыми клиентами для работы из C# использовалась "обертка" на C для lcomp (wlcomp), функции которой уже вызывались из C#.

#23 Re: Техническая поддержка » Драйвер lcomp_linux для ядра 6 » 27.09.2023 17:06:01

Для сборки драйвера для make нужно указать цель в зависимости от варианта сборки.

Если будете просто устанавливать файлы модуля напрямую, то

make lcomp-drv
sudo make lcomp-drv-install

Если через систему dkms, которая управляет добавлением внешних модулей в ядро (должен стоять пакет dkms):

sudo make lcomp-dkms-install

#24 Re: Техническая поддержка » Как установить ltrd ltrmanager и библиотеки в Ubuntu 22.04? » 27.09.2023 15:02:06

Там строчки были только для ltramanger. ltrd и ltrapi - отдельные пакеты. Устанавливали его с помощью:

sudo apt install ltrd

а для библиотек соответственно:

sudo apt install libltrapi1-dev

#25 Re: Техническая поддержка » Как установить ltrd ltrmanager и библиотеки в Ubuntu 22.04? » 27.09.2023 11:56:32

А команда сама выполняется? Вроде устаревший метод должно быть просто предупреждением.

Но если уже вообще эту команду отключили, то можете попробовать вариант инструкции установки отсюда https://software.opensuse.org//download … ltrmanager:

echo 'deb http://download.opensuse.org/repositories/home:/l-card/xUbuntu_22.04/ /' | sudo tee /etc/apt/sources.list.d/home:l-card.list
curl -fsSL https://download.opensuse.org/repositories/home:l-card/xUbuntu_22.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_l-card.gpg > /dev/null
sudo apt update
sudo apt install ltrmanager

Контакты

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

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

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

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