Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
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. Получили "мигание" одного из крейтов, показанное на картинке. Что бы это значило?
Вопрос на всякий случай.
Можно ли будет при необходимости после прошивки до 3.0.0.13 вернуться на 2.0.0.0? Как?
Проблема с крейтами мешает удаленной работе с крейтами при разработке программ, когда они в офисе стоят без сотрудников фирмы.
На объекте у нас поставлены средства дистанционного передергивания питания. Это не очень удобно, но обеспечивает работу системы. Если возникнут проблемы на объекте, сможем откатить на 2.0.0.0.
Кстати, предварительная работа с техникой LTR на объекте продемонстрировала устойчивую ее работу. Программа после запуска всегда работала без проблем, пока строители не отключали электричества.
Сегодня подключился к крейту после передергивания питания.
Сообщения о крейте в ltrmanager:
ltrd
Версия 2.1.8.11
Крейт
Тип LTR-EU-8/16
Серийный № 3T778752
Интерфейс TCP/IP
Режим Рабочий
Версия прошивки 2.0.0.0
Версия загрузчика - пусто, ничего не указано
Версия прошивки ПЛИС 1.00.08 (build 15.02.10)
Ревизия 2
Время подключения 14:14:04, 27.11.2023
Всего клиентов 0
Управляющих соединений 0
Передано слова 20
Принято слов 7
Скорость передачи 0.0 слов/с
Скорость приема 0.0 слов/с
Метки 'Старт' 0
Метки 'Секунда' 0
Расширенная метра времени - пусто
Термометр(нижний) - пусто
Термометр (верхний) - пусто
Часто при попытке подключения по сети к крейтам LTR получаем отказ. По диагностике так понимаем, что кто-то захватил уже доступ (только непонятно кто). Приходится передергивать питание крейта, чтобы подключиться. Другие варианты восстановления доступа существуют?
Какие посторонние приложения могут захватить доступ к крейтам? Какие варианты запрета захвата крейтов сторонними программными средствами можете предложить? Или только отключение и включение?
sudo apt-key add - < Release.key
результат: устаревший метод
укажите, пожалуйста, по шагам, как установить ваш софт - Ubuntu 22.04
Программой LGraph2 в свободных каналах LTR114 наблюдается импульсная помеха напряжением до 10 В.
В каналах измерения напряжения также присутствует импульсная помеха. В чем причина?
Как задавать таймаут для сбора данных с модуля LTR114?
Пример: FreqDivider=40, Interval=0, LChQnt=8, интервал сбора данных в буфер 5сек.
Как рассчитать таймаут? Или только опытным путем?
Крейт пингуется, но в LTRManager не подключается. Ошибка -507. Иногда подключается, иногда не подключается. День на день не приходится.
Есть ли возможность без передергивания питания перезапустить крейт. Если есть такая функция в ltrapi, пожалуйста, укажите.
Если такой возможности нет, можно ли как-либо "реанимировать" крейт через TCP?
Кстати, и под winows7 перед этим вел себя так же.
Система AltLinux.
В предыдущие дни обычно крейт был виден. Запускали ранее пример для сбора данных с LTR114, переделанный из примера LCard, в котором сбор данных идет через отдельный поток, как в примере LCard для LTR212.
Прекрасно работал. Крейт был виден.
проблема решена ответ не требуется
С этим вопросом разобрался. На Ubuntu надо аккуратнее использовать массив char. Строку "3T778751" проглотил.
Ответ на требуется.
Из своей программы на Ubuntu 20.04 пытаюсь подключиться к крейту по сер.№ 3T778751, адрес 127.0.0.1, порт 11111. Выдает ошибку -14 Указанный крейт не найден.
Из ltrmanager крейт виден со всеми модулями, он пингуется, но в журнале, когда захожу в ltrmanager после попыток подключения возникают предупреждения (соответствуют моментам вызова программы):
"Client init [127.0.0.1]: Close client by error: Client try to work with unregistered crate"
Прототип этой программы на Windows такие сообщения не дает и проходит это место без ошибок.
Программа более простая, в которой не подключаюсь к крейтам, а только к модулям для запуска потоков сбора данных, работает штатно, собирает данные.
Чего не хватает на Ubuntu?
В ответе на запрос про дистрибутивы под Linux от 28.07.2023 (https://www.lcard.ru/forums/viewtopic.php?id=10590) сообщалось, что для AltLinux отсутствуют пакеты от LCard и что их надо собирать из исходников.
Приведите, пожалуйста, подробную инструкцию по сборке под AltLinux этих пакетов из исходников (и доступны ли эти исходники).
Использование этого варианта Linux является требованием отраслевого руководства заказчика.
В крейте LTR-EU-8-1 сер.№3T778750, проданном фирме ТКМ в этом году, в LTRManager перестали видеть модуль LTR114 в 1-м слоте. Вместо него прочерк.
В слотах 2 и 3 модули LTR212M-3 видны.
Как исправить ситуацию?
Какие дополнительные действия или проверки можем провести?
В потоках сбора данных LTR114 иногда возникает ошибка -10017, а в потоках сбора данных LTR212 - ошибка -2026.
Судя по именам констант в заголовочных файлах модулей, это ошибки, связанные с каким-то сбоем счетчика пакетов.
Как можно купировать эти ошибки?
Можно ли продолжать процесс получения данных при этих ошибках, ограниченно обработав результат или просто проигнорировав эту порцию данных?
Рассмотрим варианты:
1) Игнорируем данные и продолжаем сбор данных, если LTR не выбросит нас из процесса сбора данных.
2) Делаем в потоке _Stop() и сразу _Start(). (Или потребуется перезапускать процесс сбора данных?)
3) Какой есть в этом плане опыт у LCard?
В ltr212api.pdf не нашел таблицу кодов ошибок модуля LTR212M-3. Есть она где-нибудь на сайте LCard ?
Поясните, пожалуйста, какие необходимо задать значения размеров массивов recv_data и proc_data в функциях
LTR114_Recv(&hltr114, recv_data, NULL, size, STREAM_RECV_TOUT);
LTR114_ProcessData(&hltr114, recv_data, proc_data, &size,LTR114_CORRECTION_MODE_INIT, LTR114_PROCF_VALUE);
для приведенного далее примера:
hltr114.FreqDivider = 2;
hltr114.LChQnt = 8;
hltr114.Interval = 152;
Длина буфера соответствует 1сек.
(Хотим получить каждую секунду по 25 значений с каждого из 8 каналов)
Если после вызова Start и сбора данных требуется остановить получение данных с помощью функции Stop и потом снова запустить сбор данных, можно ли это сделать просто вызововм Start без повтора настроек и ADC ?
Используем модули LTR114 и LTR212M-3.
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск