Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
|
||||
|
e502 - ошибка X502_ProcessAdcDataСделал стриминг на Е502, но примерно через час работы X502_ProcessAdcData выдает ошибку X502_ERR_PROC_INVALID_CH_NUM. Частота 4 кГц 10 каналов.. вроде не так уж и много. Предположил, что не справляется ОС (начинал тестирование с Win7). Уменьшал частоту до 2 кГц, потом до 1 кГц... не помогло, все равно через некоторое время опять возникала та же ошибка. Решил попробовать поднять приоритет приложения. Перешел в Линукс (Rosa6). Использовал и nice и ionice для перевода приоритета приложения повыше... Все едино, примерно через час опять появляется эта ошибка.. Можете подсказать в чем проблема? Приложил примерный исходник класса для запуска е502. |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataА если использовать стандартный пример из SDK x502_stream_read (https://bitbucket.org/lcard/x502api/src … ew-default), то ошибка тоже возникает? Или если в программе lqmeasstudio (https://bitbucket.org/lcard/lqmeasstudio) проверить? Ошибка возникала и под Windows и под Linux? А куда исходник класса приложили? |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDatax502_stream_read вообще не находит никакого устройства, функция E502_UsbGetDevRecordsList возвращает 0 в usb_devcnt, что вообще говоря странно. Я пользуюсь E502_UsbGetSerialList и она возвращает одно устройство, кроме того lsusb тоже показывает, что устройство есть с ID 2a52:e502. Исходники кода пытался положить с помощью клавиши Загрузки... наверное неправильно? Тогда вот пусть будут прямо здесь:
|
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataСтранно, а в винде эта функция работает ().. вот что я получаю в окне: $ x502_stream_read |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataValery пишет:
Да, это очень странно, тем боле что E502_UsbGetSerialList() реализована через E502_UsbGetDevRecordsList(). А у Вас E502 не осталась открытой в Вашей программе? Valery пишет:
Тоже странно, пример не менялся никак? т.к. в примере после вывода информации вызывается f_setup_params, который при успехе должен написать установленные частоты, а в случае ошибки - вывести сообщение. А у Вас вообще никаких сообщений? Что-то я не вижу по какой ветке может пройти изначальный пример, чтобы ничего не написать после информации до запуска сбора |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcData1. да с чего это... перегрузил комп, все равно usb_dev_count = 0 $ x502_stream_read Теперь некоторое время надо ждать возможного появления ошибки |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataразобрался почему в Линуксе не запускалось - надо было стартовать от root (sudo x502_stream_read)... В винде ошибок не было за пару часов работы, запустил в Линуксе. |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataвот, сработало - выпала "ошибка обработки данных" примерно через час: вместо 3 каналов в x502_stream_read поставил 10. Так что похоже проблема скорее всего не в многопоточности.. |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataА частота сбора при этом какая была? |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcData4000 Гц |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataно кстати говоря в своей программе я частоту снижал до < 1000 Гц, ошибка все равно появлялась... можно и здесь попробовать. А вот такой вопрос - дамп принятого массива может чем-то помочь в анализе этой проблемы? |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataНу в принципе было бы интересно посмотреть (на тот, что из Recv()). |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataВот что получилось после примерно 2-х часов работы: Версия библиотеки: 1.1.4 |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataКажется смог у себя воспроизвести ошибку, постараюсь разобраться... А все же вопрос, если сделать максимальную (или близкую) частоту сбора и кадров (судя по частоте на канал вы видимо понизили частоту следования кадров?), то у Вас ошибка будет проявляться? |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataну максимум что можно поставить для случая 10 каналов - это 200 кГц. Хорошо, попробую этот вариант. Кстати, сегодня еще раз запустил в 7 утра и до сих пор ошибки нет. |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataНа 200 кГц проработало всю ночь без ошибок. Поставил 2000 Гц. Посмотрим что будет. Я вчера еще одно изменение сделал: почему-то с утра не смог запустить через тот разъем USB, к которому был подключен е502 (ни lsusb ни программа не видела АЦП, хотя в винде все было ок), подключил к другому. |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataи еще такой вопрос: когда возникает ошибка обработки было бы неплохо как бы перезапустить синхронный сбор. Я использовал вариант Х502_streamStop(); не очень красиво, но как правило помогало восстановить синхронный сбор данных (хотя очевидно и с потерями). А что нет другого пути ре-инициализировать синхронный сбор? |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataвот, все интереснее и интереснее.. Посмотрел на datasheet микроконтроллера, там USB 2.0, а я оказывается вчера подключил в USB-3.0 и все, ошибки похоже исчезли. Сейчас еще подожду (на 2 кГц) немного и верну подключение на USB 2.0.. |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataМикроконтроллер USB2.0, но вообще USB3.0 должен быть совместим с USB2.0. Конечно там наверное программный стек несколько отличается и какие-то могут быть всегда особенности, но по идее должно работать. По крайней мере ошибка с номером канала с этим не связана. Просто она может очень редко проявляться, иногда может и больше 2 часов работать. За вчерашний день + ночь я смог поймать ее только 3 раза. Скорее всего это совпадение в плане другого порта. Ошибка эта насколько я смог выяснить из этих 3-х раз, не связана с USB, это ошибка возникает еще до передачи в USB внутри модуля в интерфейсе можду ПЛИС и микроконтроллером. Ошибка может проявляться только если суммарный поток данных ниже 100 тыс отчетов/c (т.к. часто E502 используется на более высоких частотах + данная ошибка такая редка, поэтому видимо она осталась не замеченной). Еще мне понадобится какое-то время, чтобы ее исследовать... По поводу перезапуска синхронного сбора, то Х502_streamStop() и X502_StreamStart(); выглядит корректным вариантом, это как раз его "перезапускает". А что значит "как правило" - иногда не помогает? Другой вопрос, если речь идет не о перезапустить, а продолжить сбор с минимальной потерей данных, если предположить, что ошибка одиночная/блочная, а дальше сбор восстановится. Тогда это нужно в принятом блоке данных искать после ошибки начало следующего кадра, откидывать данные до него, и затем начать также обрабатывать данные после нахождения, но специально функции для этого нет, если только руками исходя из формата... |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataНу да, иногда эта пара вызовов не помогает и все сбивается в непрерывную череду ошибок.. но все равно факт: на USB 3.0 200 кГц работало всю ночь, а 2 кГц все еще работает без ошибок (уже больше 3-х часов). Возможно стек немного другой... |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataПроблему устранили. Вам понадобится обновить прошивки ПЛИС и прошивку контроллера Cortex-M4. Для этого нужно из пакетов Cent OS 7 поставить: Далее, по поводу того, что можно работаь только от root.
После этого с E502 можно будет работать от обычного пользователя. Далее для обновления прошивки ПЛИС нужно запустить Тогда можете обновить все и сказать, исчезла ли проблема |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcData@ Valery, |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataВсе установил как описано и запустил тестирование.. теперь это надолго |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataВообще по идее, если брали из CentOS (а не Fedora) пакеты, то там вроде нет зависимости от modbus. Просто в Fedora более расширенный набор стандартных пакетов и там есть libmodbus в официальном репозитории, поэтому и lboot собран с поддержкой modbus, а в CentOS стандартный набор пакетов (и штатного варианта libmodbus нет, как и в ROSA) и там lboot собран без modbus (modbus в любом случае конкретно для E502 не используется). Ну в любом случае, главное, что все обновилось) Спасибо за найденную проблему. С Эльбрусом это конечно интересная тема. А что там за ОС будет? |
|||
|
||||
|
Re: e502 - ошибка X502_ProcessAdcDataНа Эльбрусе стоит Линукс их (МЦСТ) сборки, последняя версия ядра, которую они выпускают - 3.14. Насколько я знаю они его делали для ВПК, так что ручками в ядре как-то ковырялись на предмет защиты, закладок и прочего. |