Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
В документации LTR212 указана частота оцифровки в быстром режиме 150.15Гц в одном месте ltr212api.pdf и 150.1 в другом. Что это за значения? Видимо получается делением какой-то исходной частоты на целое? Меняется ли эта частота от модуля к модулю?
Синхронизировать работу этого модуля можно с помощью массива счетчика сигнала "секунда" в функции recv ?
Ждем советы по подключению нашей программы к крейтам LTR через сложную сеть для стабилизации интервалов между приемами порций данных.
После некоторой работы сетевиков заказчика ошибки работы модулей LTR практически перестали приходить, но осталась проблема разброса времени между получением порций данных за 2сек.
Результаты тестирования прилагаем.
1. Тест с примером LCard.
Примеры LCard получают только измерительные данные.
Вопрос о временных метках опускается, хотя это важнейший вопрос при разработке систем непрерывного мониторинга объектов.
По этой причине мы немного доработали аналог тестового приложения LCard по мотивам примеров для LTR114 и LTR212.
Тестовое приложение создает один поток сбора измерительных данных с модуля LTR114.
Используем 6 каналов, как в одном из модулей основной программы.
Частота оцифровки каждого канала 100Гц, как в основной программе.
Текст теста прилагаем к ответу.
Добавили для каждого 2-сек блока (по 200 значений на канал) выдачу времени после получения блока с точностью до мс по часам компьютера.
Тестовое приложение назвали ltr114.
Откомпилировано в Qt под Ubuntu24.04.
2. Результаты теста.
При подключении через сложную сеть.
Тестовая программа по мотивам примеров LCard работает и работает, так как не контролирует длительность интервала между приемами порций данных.
Среднее значение интервала между примами порций данных составляет 2сек.
Но разброс очень большой. Это для нас критично с учетом того, что в нашей системе несколько крейтов, содержащих по несколько модулей. При этом требуется обеспечить предоставление синхронных данных в реальном времени .
ВОПРОС: Как снизить разброс ?
3. Прилагаются:
- Тестовое приложение «ltr114» с исходниками (1893-ltr114.7z).
- файл, содержащий лог программы (251112-1893-ltr114.txt.7z).
По разностям времени получения соседних порций данных определяли интервал получения данных.
- График интервалов (ltr114-dt.GIF).
В сети выставлено MTU 1500.
Да. Забыл важное. При работе i5 при правильном подключении время берем с компьютера при получении очередной 2сек порции данных. В этом случае интервал между последовательными получениями порций 2сек с точностью до 1мс. При неправильном подключении этот интервал в среднем около 2сек, но разброс от 0.018 до 5.012сек.
Так как файл wireshark (251107-1647.7z) через форум не дошел, высылаю на support.
1. Высылаю файл wireshark,который получили так:
1.1. Запустили запись wireshark коммуникации с крейтами 192.168.13.87 и 192.168.13.97
1.2. Запустили наше приложение сбора измерительных данных.
1.3. Дождались аварийного завершения приложения.
1.4. Остановили запись wireshark.
Использованный компьютер i3 содержит процессор i3.
Дополнительно высылаю скриншот работы i3 (i3.jpg).
В левом-верхнем окне видно, что cron периодически перезапускает приложение, которое аварийно останавливается после не слишком продолжительной работы.
В правом-верхнем окне видно, что коммуникация с крейтом 192.168.13.87 содержит большое число сбоев.
В нижнем окне видим, что работа некоторая происходит от перезапуска до перезапуска: сначала собрал 15176 порций, далее 15184.
2. Проверка, что дело в компьютере, не подтвердила это предположение.
Другой компьютер i5, который мы использовали при правильном подключении к крейтам (непосредственное подключение к крейтам без всяких дополнительных сегментов сети), содержит процессор i5.
При правильном подключении с ним никаких проблем не было.
Высылаю скриншот i5.jpg при его длительной работе при правильном подключении.
Видим, что перезапуски не требуются (все время один и тот же PID).
Компьютер i5 отнесли и подключили на место i3.
Получили те же проблемы, что и с i3.
Вывод: дело в сетке.
3. Дополнительно высылаю скрины ltrmanager (ltrmanager.7z), на которых видна коммуникация модулей с i5 при правильном подключении.
4. К сожалению, заказчик настоял на подключении компьютера через сеть довольно сложной конфигурации.
Хотелось бы получить указания по настройкам сетевикам заказчика, чтобы использовать компьютер i3 при существующем подключении.
Если это возможно.
5. Дополнительный вопрос: какое mtu выставлено в ethernet драйверах ltr. Если можно изменить mtu, как это сделать?
Кроме ltrmanager, описание перепрошивки есть в ltr_cross_sdk.pdf и https://www.lcard.ru/download/#libpart9.
В последнем месте предложен bat-файл.
Так как наши люди были уже на объекте, они попробовали вариант с bat-файлом. Он сработал.
Как перепрошить крейт LTR с версии 2.0.0.0 на 3.0.0.17 ?
На сайте LCard в разных местах есть разные тексты по этому поводу. Кроме того, в ltrmanager есть пункт меню перепрошивки.
1) Как надежно сделать перепрошивку?
2) Как вернуться на 2.0.0.0 в случае каких-то неприятностей после перепрошивки ?
1) Высылаю файл wireshark, полученный в результате запуска сбора пакетов на wireshark, затем запуска нашей программы сбора данных с 2 крейтов с 3 и 4 модулями LTR (114-ые, 212-ые и 12-й - 7 потоков сбора данных модулями и основной поток записи данных), затем фиксируем прекращение сбора данных и после небольшой задержки завершаем программу сбора данных с LTR, а затем сбор пакетов wireshark.
2) Описание сети
2.1) Два крейта LTR, разнесенные на 20м, подключены к коммутатору в шкафу одного из этих крейтов.
В работающем (временном) варианте в том же шкафу устанавливаем компьютер с ltrd, на котором одна программа нашей система собирает измерительные данные с LTR, а другая - картинки с двух видеокамер.
Все прекрасно работает.
2.2) Другой (основной) вариант:
далее от упомянутого коммутатора по меди через 2 репитера через 100м подключение к коммутатору, от которого по оптике подключение через километры к местному провайдеру, от которого далее подключение компьютера, на котором крутится ltrd и наша система.
Сбор данных с LTR довольно быстро нарушается.
Сбор ведется порциями по 2сек.
Иногда в сессии таких порций собираем несколько десятков до прекращения работы, иногда одну порцию, довольно часто вообще не собираем.
1)Просьба сформулировать требования к сети для подключения крейтов LTR.
Если у LCard есть документ по этому поводу, прошу выслать или указать ссылку.
2) Заказчик настоял, чтобы компьютер, собирающий данные с LTR, находился в одном сегменте сети, а сами LTR в другом.
В результате наш софт, когда подключаем к единому сегменту, работает замечательно, а когда в соответствии с требованиями заказчика - постоянно прерываемся из-за сбоев (коды -79, -73, -10010 и пр.).
Будем признательны, если что-то по этому поводу порекомендуете.
В документе ltr_soft_getting_started.pdf упомянут шлюз для настройки подключения крейтов LTR. В ltrmanager при настройках такого слова не обнаружили. У нас ltrd подключен по 127.0.0.1, а для ускорения работы по сети с крейтами местные специалисты предложили задать еще и где-то шлюз. Где мы должны его задать? Программа значительно тормозит и не может долго получать данные с крейтов.
Мы оценили наш трафик - существенно меньше 100000бит/с.
У нас 2 крейта: в одном 2 LTR114 + 1 LTR212; в другом 2 LTR114 + 1 LTR212 + LTR12.
Частота оцифровки LTR114 и LTR212 100 измерений на канал в секунду, LTR212 - немного более 100 измерений на канал в секунду.
Собираем порциями по 2сек.
Общее число каналов 30.
Подтвердите, пожалуйста, нашу оценку или уточните.
Спасибо.
При использовании двух RS-485/422-UART и двух линий RS485 можно будет использовать оба сигнала СТАРТ и СЕКУНДА или есть какие-то ограничения на этот счет?
В запросе на форуме https://www.lcard.ru/forums/viewtopic.php?id=10597 рассмотрен вопрос о вариантах синхронизации LTR на больших расстояния.
Какая предельная дистанция между крейтами может быть использована при использовании RS485-UART3 ?
Конкретный вариант:
4 крейта по 8 модулей;
используемые модули: LTR114, LTR212M-1, LTR12;
частота оцифровки 100Гц;
дистанции 200+70+200м.
Предложенное в ответе на запрос решение с RS485-UART3 подойдет?
Какие настройки будет необходимо сделать?
Поддерживает ли крейт LTR удаленный доступ через интернет? Если да, какие рекомендации по вариантам такого подключения?
При подключении LTR212 выдало про тип следующее:
...
LTR212, тип1 sn:2T780008
Версия Bios: 2.0 - 22.5.2013
...
Буквы M нет. Что означает "тип1": просто LTR212 или LTR212M-1?
1) Объясните, пожалуйста, смысл расчета объема данных в примере для LTR12:
ltr_cross_sdk\ltrapi\examples\c\ltr12\ltr12_recv\main.c,
в частности, строка 192:
DWORD block_ch_pts = (DWORD)(((hltr12.State.FrameFreq * BLOCK_TIME) + 999)/1000);
В чем смысл в конце формулы " + 999)/1000)"?
Это желание выделить память с запасом?
2) Пример:
используем 2 канала LTR12 с общим нулем.
Делаем в кадре дополнительных 2 замера для ровного счета.
Частота 100 кадров в секунду, то есть, adcFreq=400Гц в нашем случае.
Длительность одно измерений 2сек.
Для данных в LTR12_Recv надо зарезервировать массив DWORD длиной 800=2сек*100Гц*(2+2) (с учетом 2 дополнительных измерений в кадре), а в LTR12_ProcessData для результат массив double длиной 400= 2сек*100Гц*2.
Все верно?
1) Обнаружил в ltrapi функцию LTR_ServerRestart. В описании сказано, что перед рестартом службы закрываются все соединения. Эта функция может заменить передергивание питания крейтов, когда связь с ними пропадает?
2) Опробовал эту функцию в ситуации, когда ltrd на одном компьютере, а программа с LTR_ServerRestart запускается на другом. Служба просто остановилась. Ее пришлось запускать на компьютере, где она и работает, причем из-под администратора. В реальности нам придется запускать ее на том же компьютере, где она работает под Linux. Программу надо запускать под "su -" ?
Поставленный вопрос можно сформулировать так: "Как программно вызвать перезагрузку крейта, чтобы от него отвалились все коннекты?"
Железо предыдущего проекта сейчас вне доступа, но в новом проекте в этом году закуплены крейты. Прошивка от этого года. Кстати, как ее посмотреть программно? Мне крейты доступны только удаленно и в режиме черного экрана. ltrmanager использовать не могу - нет графики.
Сбой обычно происходил после длительной работы в одном из потоков. Обычно в функции LTR114_ProcessData. Закрывали после этого все потоки и выходили из приложения, после чего запускали с самого начала. Программа должна была работать постоянно, что мы обеспечивали ее перезапуском.
Существует ли возможность разблокировать крейт в нештатных ситуациях посылкой какой-либо команды по порту 11113 без использования временного отключения крейта от напряжения?
В документе "ltrcrate_protocol.pdf" описана работа с крейтом непосредственно по TCP по портам 11113 и 11110. В некоторых случая при нештатных ситуациях крейт LTR приходит в такое состояние, что оказывается недоступен для дальнейшей работы из нашей программы средствами штатного API.
В реализованном нами проекте использовали внешнее реле для временного отключения и подключения крейта к питанию. Может получится обходиться без дополнительного оборудования.
Вопрос вариантах о перезапуска процесса сбора данных при сбое:
Собираем данные в нескольких потоках с модулей LTR114, LTR212-M3.
Допустимо ли в потоках сбора (см.далее) данных для модулей LTR114 и LTR212-M3 после выхода из циклов сбора данных в потоках сбора данных выполнять только LTR114_Stop или LTR212_Stop и после этого не закрывая поток возвращаться на подготовку цикла и далее повторный запуск цикла сбора
данных; а LTR114_Close и LTR212_Close выполнять только в основном потоке при закрытии программы после остановки всех потоков сбора данных?
В настоящее время алгоритм выглядит так:
1) Сначала загружаем настройки для модулей LTR114 и LTR212 в главном потоке.
Функции настройки LTR114:
LTR114_Init,LTR114_Open,LTR114_GetConfig, LTR114_CreateLChannel,LTR114_SetADC
Функции настройки LTR212:
LTR212_Init,LTR212_Open,LTR212_CreateLChannel,LTR212_SetADC
2) Далее создаем потоки для сбора данных отдельно для каждого модуля.
2-LTR114) Поток для LTR114
Подготовка цикла:
LTR114_Calibrate,LTR114_Start
Цикл:
LTR114_Recv,LTR114_ProcessData
После цикла (при сбое):
LTR114_Stop,LTR114_Close
2-LTR212) Поток для LTR212
Подготовка цикла:
LTR212_Start,LTR212_CalcTimeOut
Цикл:
LTR212_Recv,LTR212_ProcessData
После цикла (при сбое):
LTR212_Stop,LTR212_Close
Потоки завершаем.
Перезапускаем при сбое программу целиком.
В новом проекте добавится модуль LTR12.
Статистика непрерывного мониторинга.
Используем 4 крейта, в которых 8 модулей LTR114 м 8 модулей LTR212-3. Частота оцифровки каждого канала LTR114 = 25Гц.
Работает более полугода. Примерно раз в месяц или чуток реже происходит сбой в одном из LTR114. В основном это происходит с одним и тем же модулем (sn:4T777790). Обычно ошибка -10010.
Соответствует наша статистика данным фирмы L-Card? Или желательно сменить этот модуль LTR114?
Вопросы по LTR114.
Запустили систему из 4 8-слотовых крейтов с модулями LTR114 и LTR212M-3. Иногда происходит аварийное завершение в потоке сбора данных одного из модулей LTR114 с кодом -10010 "Неверный номер канала в массиве данных от модуля":
04.01.2024 в модуле sn:4T777790, Firmware version AVR: 1.3, Firmware version PLD: 1.
22.02.2024 в модуле sn:4T777799, Firmware version AVR: 1.3, Firmware version PLD: 1.
Вопрос 1) Аварийная ситуация возникает внутри крейта на уровне взаимодействия крейта и модуля? Снаружи сеть не виновата? (Вроде бы вполне надежная оптика).
Вопрос 2) Какие меры можем предпринять, чтобы в дальнейшем устранить эти проблемы? Или только рестарт нашей программы?
После нескольких часов работы прервалась работа программы сбора данных. Проверили состояние крейтов измерительной системы с помощью ltrmanager. Получили "мигание" одного из крейтов, показанное на картинке. Что бы это значило?
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4
Многоканальный телефон:+7 (495) 785-95-25
Письма и запросы: lcard@lcard.ru
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск