Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

Организация передачи данных из модуля E14-440

Вы не вошли.

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

12.11.2011 12:25:21
#1

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

Re: Организация передачи данных из модуля E14-440

В принципе размер запроса ReadData() может быть любым в заданных пределах. Но из соображений надежности сбора данных DataStep следует выбирать таким, чтобы полное время сбора этого запроса была 100-200-300-400 и более мс. Связано это с тем, что событие о завершении запроса с уровня ядра до пользовательского уровня (с помощью, например, функций типа WaitForSingleObject() или GetOverlappedResult()) может приходить с непредсказуемыми задержками, т.к. Windows не является средой реального времени. Так при частоте сбора 400кГц и DataStep=6144 время выполнения запроса равно ~15мс, что при определенной загруженности системы может привести с сбою приема данных.

Andreyonka
12.11.2011 14:03:43
#2

Гость

Re: Организация передачи данных из модуля E14-440

Огромнейшее спасибо! Вы ответили на вопрос,который мучил меня с 2007 г. (тогда я писал первую версию своей программы под этот АЦП и не совсем понял принципа выбора величины DataStep). АЦП должен получать данные с прибора, а программа проверять при этом наличие полезного сигнала, длительность которого составляет примерно 100 мс. После этого сбор прекращается и АЦП останавливается. Запуск по уровню не устраивает, т.к. в этом случае теряется часть информации, а при низком пороге происходят ложные срабатывания во время установки прибора. Тогда я DataStep устанавливал так: DataStep =  (32*(DWORD)(AdcRate/32)). При частоте 100 кГц (используется только 1 канал) DataStep = 96 значениям. Значит время получения этих данных 96*0.01 мс=0.96 мс (совсем не соответствует Вашим рекомендациям). Проблема была в том, что периодически в случайном порядке сигнал при измерении не регистрировался, причем чаще это происходило на Celeron 2000, на Pentium 4 3000 реже. Согласно Вашим объяснениям я прихожу к выводу, что виноваты именно задержки Windows. Думаю, что в этом случае нужно действительно увеличить величину DataStep, скажем, до 625*32=20000 значений (время заполнения 20000*0,01 мс = 200 мс), чтоб не ждать долго обработки данных.
Еще вопрос. У Вас в некоторых примерах не задается величина AdcFifoLength. Какой она в таком случае устанавливается? Я, кстати в старой программе тоже ее не задавал.
Спасибо.

Andreyonka
12.11.2011 14:36:37
#3

Гость

Re: Организация передачи данных из модуля E14-440

Кстати, думаю, неплохо было бы включить Ваши рекомендации и пояснения по выбору величины NumberOfWordsToPass в руководство программиста. Может быть это еще кому-то помогло.

12.11.2011 23:36:39
#4

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

Re: Организация передачи данных из модуля E14-440

1. По умолчанию AdcFifoLength равна 12288. Также про выбор величины AdcFifoLength полезно просмотреть следующие ссылки:
http://www.lcard.ru/forumthreads/1128
http://www.lcard.ru/forumthreads/875
2. По поводу NumberOfWordsToPass ...
В описании функции ReadData() эта ситуация вроде бы более-менее разъяснена (см. асинхронный режим).

Andreyonka
13.11.2011 08:23:00
#5

Гость

Re: Организация передачи данных из модуля E14-440

1.Спасибо и ссылки действительно полезны.
2.Перечитал в очередной раз описание функции ReadData() для асинхронного режима. В принципе разъяснение, конечно, есть. Но чтоб полностью вникнуть в тонкости использования этой функции необходимо достаточно хорошо знать некоторые особенности Windows, если можно так сказать. В описании упомянуто, что Windows может "задуматься" перед началом ReadData(), но после START_ADC() на 31 мс и более, а для недопущения этого требуется хотя бы 1 ReadData() до START_ADC(), тогда это переводит процесс на уровень ядра. Согласен, что можно догадаться и о размере NumberOfWordsToPass, но для этого, думаю, нужен достаточный опыт, а его, зачастую, просто не хватает. После Ваших пояснений на форуме все стало на свои места. Поэтому и считаю желательным внесение дополнений. Не сочтите за упрек.

13.11.2011 18:58:43
#6

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

Re: Организация передачи данных из модуля E14-440

Хорошо. Внесу в руководство программиста соответствующие изменения...

Andreyonka
13.11.2011 19:09:46
#7

Гость

Re: Организация передачи данных из модуля E14-440

Спасибо.

15.11.2011 10:26:24
#8

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

Re: Организация передачи данных из модуля E14-440

Но если Вам желательно читать небольшими порциями (чтобы чаще прогонялся цикл обработки данных, например, поиск нужного импульса), то еще можно попробовать ставить в очередь достаточно много (десятки) не очень больших буферов, т.е. сделать массив буферов и массив OVERLAPPEDов и читать не через ReadData, а через WINAPI ReadFile (хендл устройства берется из GetModuleHandle). Тогда они встанут в ядре системы в очередь, hEventы в OVERLAPPEDах будут прилетать в хронологическом порядке и по ним можно обрабатывать кусок и ставить его снова в конец очереди. Возрастут накладные расходы, но это некий возможный компромисс. Требует тестирования и, вероятно, возможности менять эти параметры в настройках программы.

Andreyonka
16.11.2011 10:26:14
#9

Гость

Re: Организация передачи данных из модуля E14-440

Понятно. Можно попробовать.Тем более ReadFile мнезнаком, так как в старой библиотеке ReadData был, можно сказать, практически полной его копией. Я брал раньше буфер размером 4 DataStep того размера, о котором написано выше. В принципе программа работала, хотя периодически все-таки были взбрыки. Сейчас я размер DataStep изменил:
DataStep = (DWORD)(am.AdcFifoLength/2*4);  // = 12288/2*4 = 24576 (время заполнения при 100 кГц = 245,76 мс
На новой библиотеке вроде пока все работает. Программа на испытании.
Интересный факт старой версии программы на старой библиотеке: При работе на ноутбуке от аккумулятора программа работала более или менее стабильно,но при подключении сетевого питания тут же в процессе измерения начинались сбои. Необходимо было отсоединять АЦП и перезапускать программу. Ноутбук IRU Brava 4115W: 512Мб оперативки, Pentium 4 3000 (2 ядра), чипсет SIS, Windows XP Sp3. Я даже соединил "землю" вилки питания, "землю" прибора, "землю" аналогового входа АЦП, металлоконструкцию, на которой проводятся измерения. Это ничего не дало.

16.11.2011 11:08:09
#10

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Организация передачи данных из модуля E14-440

Andreyonka, момент подсоединения сетевого питания ноутбука на ходу во время работы любого USB-устройства является критичным событием с точки зрения обеспечения электромагнитной собместимости (ЭМС). При этом, наименее критичен случай, когда входы-выходы E14-440 не подсоединены (37-контактые разъёмы E14-440 свободны), а соединение только по USB. Наиболее критичный случай - это когда подсоединённые источники сигналов E14-440 либо явно заземлены, либо имеют большую ёмкость относительно земли (например, когда длинные провода на входах-выходах E14-440). Критичность в том, что в момент подсоединения сетевого питания возникает пик тока по контуру: сеть питания - источник питания ноутбука - ноутбук - провод USB - USB-устройство - источники сигналов - земля. А интерфейс USB к таким сквозным токам неустойчив. Чтобы дать рекомендации по улучшению ЭМС в такой системе, нужно точно знать состав системы, как всё подсоединено и как всё заземлено...

Andreyonka
16.11.2011 22:00:28
#11

Гость

Re: Организация передачи данных из модуля E14-440

Описание системы:
Прибор представляет собой цилиндрический пружинный ударник и индуктивный датчик. Ударник ударяет по якорю датчика, при этом катушка перемещается в магнитном поле и сигнал поступает в АЦП. Датчик представляет собой катушку индуктивности (катушка намотана на стальном сердечнике диаметром около 20 мм медным проводом виток к витку и имеет примерно 2000 витков-точнее не помню), находящуюся в поле з-х постоянных магнитов (мебельные магниты), установленных по окружности под углом 120 градусов. Катушка индуктивности одним концом соединена с корпусом прибора. Прибор стальной. Соединение с АЦП осуществляется через экранированный провод длиной около 2 м посредством 2-х пар разъемов ОНЦВГ (папа-мама) и разъем DRB. Экран провода соединен с корпусом прибора. На аналоговом входе АЦП датчик подсоединен к контакту 37 разъема DRB. На этом же разъеме соединены все контакты кроме 20, 1, 2 и 36. 36-й контакт был оставлен на всякий случай, если вздумается использовать еще один канал. Экран кабеля припаян к соединенным контактам.
Дополнительно когда подключалось внешнее питание ноутбука, был использован удлинитель с розетками Евро с заземляющим контактом. В розетке этого удлинителя был вмонтирован разъем ОНЦВГ. Заземляющий контакт евророзетки соединен с контактом 2 ОНЦВГ, этот же контакт соединен посредством экрана провода с соединенными контактом DRB, с корпусом прибора (заземленный конец датчика) и отдельным проводом с зажимом с металлоконструкцией, на которую устанавливается прибор для измерений. В евророзетку удлинителя подключается ноутбук.
Могу прислать схему, только скажите куда.

Andreyonka
16.11.2011 22:10:04
#12

Гость

Re: Организация передачи данных из модуля E14-440

Использовать внешнее питание было бы очень неплохо, так как заряда аккумулятора хватает максимум на 40 мин.  Ноутбук старый, новый аккумулятор найти не можем, а работать часто приходится дольше часа. Приходится ждать пока аккумулятор подзарядится, чтоб продолжить измерения - в общем лишняя головная боль.

16.11.2011 23:07:40
#13

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Организация передачи данных из модуля E14-440

Andreyonka,
1.Для начала, для эксперимента, создайте отсутствие свозных токов через USB, полностью отсоединив оба 37-контактых разъёма от E14-440.
Используйте USB кабель, входящий в комплект поставки  E14-440. Для определённости можно настроить E14-440 на режим измерения собственного нуля. Откройте и оставьте видимым окно диспетчера устройств. Провод USB отдалите от провода питания ноутбука, а также  E14-440 отдалите от источника питания ноутбука, запустите сбор данных E14-440, проделайте манипуляции с подключением-отключением сетевого питания ноутбука. В этом варианте сбои наблюдаются? Если да, то что происходит в диспетчере устройств с USB-устройством E-440? 
2. Схему вышлите на support@lcard.ru
3. Источник питания ноутбука имеет лепесток заземления на сетевой вилке?

17.11.2011 09:47:16
#14

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Организация передачи данных из модуля E14-440

4. Сообщите серийный номер E14-440.

Andreyonka
19.11.2011 11:28:09
#15

Гость

Re: Организация передачи данных из модуля E14-440

1. Все подключил как Вы сказали (кабель USB мы всегда использовали Ваш). В домашних условиях все работает и с подключенным прибором и всеми разъемами даже без заземления. Проблемы проявляются, судя по всему, когда рядом находятся массивные металлоконструкции и, в подавляющем большинстве случаев, когда идет процесс установки прибора на измеряемую поверхность (первое время даже током било при подключенном (блоке питания) БП ноутбука). После этого было сделано заземление при работе от сети. Вчера был на обследовании металлоконструкций, при отключенном заземлении нарушается синхронизация работы потоков получения и анализа данных из АЦП, при попытке прервать сбор данных возникают ошибки невозможности прервать сбор данных. При подключении по схеме 2 (когда заземлено питание не только ноутбука, но и GND АЦП) сбои практически прекращаются. При простом подключении БП при подключенном АЦП и запущенном процессе измерения (прибор не установлен на металлоконструкцию) все работает нормально.
2. Схему и фотографии выслал на e-mail support@lcard.ru на Ваше имя.
3. Вилка ноутбука имеет заземляющий лепесток, но заземлен ли лепесток заземления в розетке и как заземлен – неизвестно. Зато когда подключаешь клещи к металлоконструкции, наблюдается искрение очень часто. Именно поэтому был изготовлен удлинитель с отдельным принудительным заземлением на металлоконструкцию.
4. Номер АЦП в письме.

Andreyonka
19.11.2011 11:35:19
#16

Гость

Re: Организация передачи данных из модуля E14-440

Сейчас родилась мысль: может "землить" второй канал в разъеме прибора, чтоб не было наводок посредством экрана? Хотя в управляющей таблице используется только 1 канал с общей "землей".

Andreyonka
19.11.2011 11:45:20
#17

Гость

Re: Организация передачи данных из модуля E14-440

Дополнение к первому вопросу.
Сообщение о невозможности прекращения сбора данных происходят при выполнении команды STOP_ADC().

19.11.2011 17:06:50
#18

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Организация передачи данных из модуля E14-440

Andreyonka, до схемы доберусь только в понедельник, а сейчас пока  из общих соображений:
1. Любые металлоконструкции окружающей обстановки должны быть заземлены. - Это по технике безопасности (ТБ), а также из соображений улучшения обстановки по ЭМС.
2. В описываемом Вами случае окружающих металлоконструкций наиболее правильно для ноутбука применить местное заземление кратчайшим способом прямо на металлоконструкцию, на которой он стоит. Как найти точку заземления ноутбука - это отдельный непростой вопрос, поскольку нередко её в принципе нет: ни в источнике питания ноутбука, ни у самого ноутбука. Если лепесток заземления у источника питания есть, то его ОБЯЗАТЕЛЬНО нужно заземлить прямо на металлоконструкцию.
3. Если заземление ноутбука относительно металлоконструкции, на которой он стоит, сделано правильно, то подсоединённый E14-440 только по USB (при отсоединённых остальных разъёмах E14-440) обязан (!) работать без сбоев, даже если E14-440 положен прямо на металлоконструкцию (если проблема была именно в незаземлённом ноутбуке, а не, например, из-за мощного внешнего радиополя, но это совершенно другой случай). Дополнительно может быть полезен сетевой фильтр, но только имеющий внутри последовательные индуктивности в линии. Точку заземления фильтра соединить нужно будет на ту же металлоконструкцию.
4. Если же  у ноутбука не удастся найти оптимальную  точку заземления (по п.3), то вместо него придётся применить стационарный системный блок, где таких проблем нет, и который больше соответствует индустриальным условиям.
5. ВАЖНО!: Цепь заземления любого прибора разрешается подсоединять (отсоединять) только при отключённой цепи питания этого прибора (это по ТБ), а также при отключенных внешних COM-, LPT-, USB-устройствах, не изолированных от цепи заземления (иначе пожжете эти порты!).     

Мои комментарии по Вашим схемам - только в понедельник.

Andreyonka
19.11.2011 18:46:58
#19

Гость

Re: Организация передачи данных из модуля E14-440

Спасибо за быстрые ответы. Прибор, в принципе, работает, так что днем раньше - днем позже не принципиально. Я сам только сегодня смог написать и отправить схему и фото на e-mail, хотя сообщения прочел практически сразу - просто зашиваюсь на работе, ни на что не хватает времени.
1. Я и "догадывался", что должны, к тому же большинство тех металлоконструкций, с которыми приходится иметь дело просто вкопаны в землю. И контакт заземляющий в розетке, и ноль тоже должны, но, к сожалению, это далеко не всегда так!!! Я лично сталкивался с тем, что заземляющий контакт в розетке перемычкой был соединен с "нулевым" проводом, а когда электрики меняли часть проводки, в распредкоробке поменяли местами фазу с нулем!!! Хорошо, что электрические печатные машинки в тот момент не были подключены!!! Я не удивлюсь, если это не единственный случай.
2. В таком случае, я думаю, 2 вариант схемы будет правильным. Попутно вопрос: нужно ли отсоединять заземляющий контакт на розетке, если цепляем его на металлоконструкцию?
3. Сбои все-таки прекращались только когда землили по второй схеме, т.е. заземляющий контакт вилки ноутбука и GND DRB на металлоконструкцию. Если землить только ноутбук, то сбои все равно периодически наблюдаются. Может, конечно, что-то с цепями ноутбука не в порядке.
4. Стационарный блок не подходит, т.к. прибор портативный. К счастью, на ноутбуке есть контакт заземления.
5. Я так понимаю, евророзетка, в таком случае, сделана таким образом, чтобы вначале подключалось заземление,а потом фаза с нулем? И спасибо за ценное указание, не смотря на то, что подозрение у меня такое было.
В общем, еще жду комментариев в понедельник по поводу схем.
Спасибо.

19.11.2011 19:52:59
#20

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Организация передачи данных из модуля E14-440

Правильная разводка электрических цепей в здании - это когда отдельно проложены ТРИ независимых цепи: "земля", "ноль" и "фаза". Причём, "ноль" и "земля" должны быть соединены друг с другом только в одной точке, находящейся либо непосредственно на шине заземления здания (так делают в большинстве случаев), либо цепь заземления имеет отдельную шину, хорошо связанную с землёй под зданием и стенами. Когда сделано ИМЕННО ТАК, то большие силовые токи текут по контуру ноль-фаза, а малые выравнивающие токи текут по цепям заземления устройств. Когда же неправильно ноль и землю соединяют на стороне потребителя (прямо на розетках), то ЭТО ЗНАЧИТ: большие силовые токи пускают по цепям заземления устройств, вызывая огромные выравнивающие токи заземления при соединении более одного устройства друг с другом, вызывая проблемы ЭМС и не только... Пока не сделаете заземление по-человечески, от проблем разного рода не избавитесь. Ну, поменяйте электрика, для начала...

Andreyonka
19.11.2011 22:02:15
#21

Гость

Re: Организация передачи данных из модуля E14-440

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

19.11.2011 22:50:14
#22

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Организация передачи данных из модуля E14-440

Приспособить систему можно к любым условиям, даже при отсутствии заземления при плохой питающей сети, если поставить такую задачу, приняв соответствующие меры. Хочу только отметить, что не заземлённый компьютер, питающийся от сети + USB устройство, связанное с землёй явно неявно - это худший случай по ЭМС, который можно себе представить! Если Вы заранее знаете, что работаете в таких плохих условиях, то почему бы сразу не перейти на помехоустойчивый интерфейс Ethernet (LTR-EU-2-5 + LTR11+...), приблизившись к индустриальным нормам? Впрочем, рекомендации по применению E14-440 в подобных условиях я выдам в понедельник, а дальше Вам решать...

20.11.2011 10:33:56
#23

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Организация передачи данных из модуля E14-440

"как всё-таки лучше?" - Вам решать. Если по критерию ЭМС, то Ethernet - это промышленный интерфейс, а USB - бытовой, предполагающий одну и ту же местную землю соединяемых устройств: например, принтер с компьютером соединить, при этом, принтер и компьютер воткнуты в одну группу розеток с соединёнными лепестками заземления...

20.11.2011 11:03:41
#24

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Организация передачи данных из модуля E14-440

Как правило, USB применяют для изолированных от земли устройств, как это обычно бывает в бытовых условиях. Кстати, у большинства бытовых USB- принтеров нет лепестка заземления на вилке, поскольку производители принтеров принимают меры по его хорошей изоляции от помех в сети сети (например сетевыми фильтрами). А источник питания ноутбука, с одной стороны, нормальное заземление ноутбука не обеспечивает, с другой стороны, хорошую изоляцию от помех сети тоже не обеспечивает. Пока к ноутбуку хорошо изолированные от помех в сети USB-устройства подсоединяют, всё сходит с рук. Как только USB-устройство приобретает связь (в т.ч. емкостную) с внешней землёй, то возникшие сквозные токи через USB приводят к сбоям. Меры по борьбе с этим явлением существуют. Но об этом -  в понедельник...

Andreyonka
20.11.2011 11:10:58
#25

Гость

Re: Организация передачи данных из модуля E14-440

Все понял. Спасибо. Жду понедельника.

Контакты

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

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

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

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