Форум: Техническая поддержка

Тема: Ошибки API LTR с 212 модулем

Вы не вошли.

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

20.02.2021 13:45:33
#1

Участник
Здесь с 20.02.2021
Сообщений: 2

Ошибки API LTR с 212 модулем

Добрый день, использую последнюю библиотеку C++ для Win для работы с 2-х слотовым крейтом EU (довольно старым) с новой платой LTR212-M1.
Рядом с крейтом есть линия от соленоида, по которой на вход LTR212 модуля проходит помеха. Т.е. я в своем ПО в режиме записывающего осциллографа вижу короткие ~0.01c "зашкалы" входа АЦП (в плюс и в минус не помню сейчас) на частоте сбора 1.5кГц примерно. Проблема заключается в том что в случайный момент времени ф-я LTR212_ProcessData начинает на каждый входной фрейм от успешного LTR212_Recv возвращать ошибку "неверный формат данных". После перезапуска библиотеки (close, init, open ...) крейт и модуль продолжают работу нормально. Сбоя такого не случается, если клапан не работает. Можно понять как дальше диагностику делать? Правильный формат ответа от Recv где можно взять?
Если допустимо 2 вопроса в теме, то можно как-то разжевать раздел про калибровки модуля LTR212M1, т.к. из РЭ вообще не понятно, что реализовано в модуле и как использовать его функционал? Почему в разных режимах разные калибровки не применимы?

20.02.2021 15:31:11
#2

Сотрудник "Л Кард"
Здесь с 05.04.2019
Сообщений: 571

Re: Ошибки API LTR с 212 модулем

Здравствуйте, Игорь. Я затрону сначала ту сторону проблемы, о которой Вы не спрашиваете. С аппаратной точки зрения зрения, подобный сбой LTR212-M1, вызванный внешним воздействием (коммутацией цепи соленоида),  нельзя назвать "рабочим режимом" системы LTR. По хорошему, нужно также рассмотреть вопрос оптимизации схемы подключения (как соленоида, так и измерительной цепи LTR212-M1, а также крейта LTR в целом), чтобы решить проблему возникновения подобных сбоев. При наличии подробной схемы подключения, по данному вопросу я подробно консультирую.

20.02.2021 17:07:38
#3

Участник
Здесь с 20.02.2021
Сообщений: 2

Re: Ошибки API LTR с 212 модулем

В оптимизации схемы проблем нет. По объективным причинам хотелось выяснить конкретное место возникновение сбоя (для того чтобы гарантированно устранить возможность такого сбоя, иначе нужно писать обход и восстановление что не во всех случаях удобно) Для этого хочу сравнить принимаемые данные в нормальном и сбойном состоянии, зная правильный формат данных после "recv". Можете посказать где можно посмотреть?

20.02.2021 17:31:56
#4

Сотрудник "Л Кард"
Здесь с 05.04.2019
Сообщений: 571

Re: Ошибки API LTR с 212 модулем

Игорь, по программной стороне вопроса ответит наш программист. Чтобы закончить с аппаратной стороной вопроса, см. в Руководстве пользователя , п. 3.9.2 "Сбои и общая идеология восстановления после сбоя".

20.02.2021 20:06:35
#5

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,254

Re: Ошибки API LTR с 212 модулем

Документа с описанием формата передаваемых слов нет, но по разбору в ProcessData() в библиотеке формат данных такой:
На каждый отсчет всегда передается по два 32-битных слова, принимаемых Recv().
Общий формат 32-битного слова от LTR описан в разделе 4.6  Руководства пользователя . Специфические для LTR212 значения:
младший байт (NNNNNNNN в руководстве):
         - младшие 3 бита содержат номер канала, которому принадлежит отсчет
         - далее бит не используется (под код формата, но в реальности всегда используется один формат и этот бит равен 0)
         - старшие 4 бита - номер отсчета (счетчик слов) от начала сбора по модулю 16
второй байт (CYFT MMMM) - отсчеты АЦП передаются как данные, т.е. бит C = 0. Остальная часть вставляется на уровне крейта, как описано в главе руководстве. Y,F,T = 0, MMMM - номер слота, в который вставлен модуль (1 слот - 0)
старшие 16 бит слова (D...D) - для первого слова действительны только младшие 8 бит и содержат 8 старших бит 24-битного кода АЦП
                                                 - для второго слова содержат младшие 16 бит кода АЦП

Если используются FIR или IIR фильтры в режиме средней точности, то код после фильтра 16 битный и старшая часть первого слова по сути не используется.


По поводу восстановления, а LTR212_Stop() -> LTR212_Start() (или Stop() -> Configure() -> Start()) восстанавливают работу модуля или обязательно делать Close() -> Open()?



По поводу калибровок, то для режима высокой точности (4 или 8 каналов) доступны как заводские калибровочные коэффициенты, так и возможность пользовательской тарировки.
Для режима средней точности специальных заводских калибровочных коэффициентов не хранится. При этом для коэффициента шкалы можно использовать заводской калибровочный коэффициент для режима высокой точности, а смещение нуля (начальный разбаланс) нужно в тарировать явно пользователю. Т.е. доступна либо полная пользовательская тарировка нуля и шкалы или пользовательская тарировка нуля + заводские коэффициенты шкалы (для последнего случая также используются пользовательские коэффициенты, но выполняется для их получения сперва тарировка нуля (именуемая в API внешней калибровкой нуля), а затем запись в область пользовательских коэффициентов шкалы значения заводских калибровочных коэффициентов (этот процесс именуется в API внутренней калибровкой).

Для старых LTR212 также нельзя было использовать заводские калибровочные коэффициенты (ни шкалы, ни нуля) для ИОН=2,5 В, но к LTR212M-1/LTR212M-2  это не относится.

Контакты

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

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

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

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