Помогите подружить осциллограф TEK TDS 3044b с Labview

Радиотехника, платы, схемы, оборудование, фото- видео- приборы, компьютеры
Ответить
Taba
beginner
beginner
Сообщения: 35
Зарегистрирован: 02 дек 2015, 15:06
Версия LabVIEW: 2018
Контактная информация:

Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Taba »

Всем привет. Имеется TDS 3044b, подключенный по RS-232 с компом. Пытаюсь командовать прибором из драйвер пака Tektronix TDS 3000 Series, скаченного с ni.com. Осциллограф принимает и обрабатывает все команды (типа scale X, scale Y ит.д.) правильно, кроме одной. Почему-то не могу считать то количество точек, которое указываю. Макс объём памяти у прибора =10к, вот я и пытаюсь считать 10к точек, но вместо этого получаю значительно меньше (обычно несколько десятков); я пробовал считывать 500 точек - то же самое.
Полез в сами драйвера, которыми пользуюсь, а именно в Tektronix TDS 3000 Series Single Channel Waveform Acquire.Vi. Исходные настройки .Vi-шки в аттаче, на вход осциллографа подаётся синус 0.1V p-p, 1kHz.
Лезу дальше, пока не найду где генерится массив точек оцифрованной синусоиды, добираюсь до subVi GetRawWaveForm.Vi - не могу понять как она работает.
В этой subVi всё начинается с SCPI команды "CURVE?" - считывание массива точек, причём данные считываются в виде "Binary Format", дальше в True кейсе делаются манипуляции, в результате которых имеем array типа {0;0;0;0;1;1;1;2;2;3;5;7...}, который потом домножится на шаг дискретизации по Y и получится собственно сама оцифрованная синусоида, проблема в том, что этот array состоит не из 10к точек, а из 60 и рисуется не несколько периодов синуса а несколько градусов по фазе (хотя на самом осциллографе у меня в этот момент прорисовано 4 периода).
Помогите разобраться с этой subVi - не могу проверить корректно ли она работает. Я примерно представляю механизм "SCPI команда -> VISA WRITE; VISA READ -> ответ прибора", но тут ответ прибора в "Binary Format" и что это такое и с чем это едят я не знаю. Всё что происходит в True кейсе для меня магия.

Ссылка на драйвер пак: http://sine.ni.com/apps/utf8/niid_web_d ... el_id=6339
Ссылка на programmer manual: https://ru.tek.com/oscilloscope/tds3014 ... 00c-series
Вложения
Driver front panel.jpg
Driver back panel.jpg
magic.jpg
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Kosist »

"Фишка" в том, что прибор не обязан каждый раз возвращать максимальное количество точек, которое он может держать в памяти. 10к - это просто лимит, а возвращать прибор будет столько точек, сколько имеет по факту.
Посмотрите на последний свой скрин - там первый комментарий в кейс-структуре. Вместе с пакетом данных, возвращается 2 байта, которые указывают на то, сколько точек содержит посылка.
Чтобы увеличить количество точек, поиграйте со временем измерения, частотой, и т.д.
Мы делили апельсин - много наших полегло...
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Vitekkz88 »

Попробуйте накапливать эти посылки, получится ли после склеивания нужный сигнал? Из своего опыта, работал с одним анализатором спектра - он почему-то в режиме управления с ПК децимировал сигнал и возращал строго 500 отчетов в программу. Полистал юзер мануал и нашел, что это действительно так и по другому сигнал возвращать прибор не будет.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Taba
beginner
beginner
Сообщения: 35
Зарегистрирован: 02 дек 2015, 15:06
Версия LabVIEW: 2018
Контактная информация:

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Taba »

"Фишка" в том, что прибор не обязан каждый раз возвращать максимальное количество точек
Поиграл с параметрами в разных примерах пака.. Действительно иногда удаётся добиться 10к считанных точек (если увеличить время сбора). Но проблема в том, что это всё не стабильно. Т.е. можно в первой итерации прогона программы получить 2.5к точек, потом ещё 2.5к, а потом 150, а потом получить непонятную ошибку (аттач). Также прибор не всегда проходит запрос "ID?" в Initialize.Vi, так что ID? отключил.

Понял, что вся инфа по оцифрованной таблице есть уже в probe 43 (аттач), ещё до true кейса (длина строки probe 43 = 150 символов, 7 из них это #510000, остальные 143 - данные оцифровки). В true кейсе эта инфа только приводится в правильный вид. Остаётся вопрос, почему на этот probe 43 приходит так мало данных. Т.е. CURVE?->Visa Write; Visa Read - > 143 данных вместо 10к... При том, что они на осциллографе есть (там отрисовывается несколько периодов, а на комп приходит 1/100 периода) в оцифрованном виде.
Вложения
error 1.jpg
error 2.jpg
Driver back panel 2.jpg
Taba
beginner
beginner
Сообщения: 35
Зарегистрирован: 02 дек 2015, 15:06
Версия LabVIEW: 2018
Контактная информация:

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Taba »

Вопрос на засыпку. А чего делает Node Byte Count в Visa Read? :crazy: Может там не то значение стоит? Хотя я так поигрался им, лучше не становится, но и хуже тоже.

Т.е. типа есть буффер Visa, куда осциллограф сгружает то, что посчитает нужным после запроса Visa Write. Мы его считываем запросом Visa Read, и там находится нечто в бинарном виде и Byte Count - это сколько первых байтов считать? Т.е. Надо тогда больше 10к писать 8), т.е. я явно что-то не так понимаю.
Вложения
byte count.jpg
Taba
beginner
beginner
Сообщения: 35
Зарегистрирован: 02 дек 2015, 15:06
Версия LabVIEW: 2018
Контактная информация:

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Taba »

Попробуйте накапливать эти посылки, получится ли после склеивания нужный сигнал?
Похоже вы правы. Заменил условие на завершение цикла While. Там вроде в сравнении на Code error не тот нумер стоит.
Но ищу поищу жуков, наверняка какие-нибудь найдутся..
Вложения
magic 2.jpg
bingo.jpg
Taba
beginner
beginner
Сообщения: 35
Зарегистрирован: 02 дек 2015, 15:06
Версия LabVIEW: 2018
Контактная информация:

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Taba »

Но ещё поищу жуков...*
А как тут редактировать сообщение?)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение dadreamer »

Taba писал(а):Вопрос на засыпку. А чего делает Node Byte Count в Visa Read? :crazy: Может там не то значение стоит? Хотя я так поигрался им, лучше не становится, но и хуже тоже.

Т.е. типа есть буффер Visa, куда осциллограф сгружает то, что посчитает нужным после запроса Visa Write. Мы его считываем запросом Visa Read, и там находится нечто в бинарном виде и Byte Count - это сколько первых байтов считать? Т.е. Надо тогда больше 10к писать 8), т.е. я явно что-то не так понимаю.
По умолчанию размер входного и выходного буфера для COM-порта - 4096 байт. Если размер порта не переопределялся при инициализации прибора, то функция VISA Read с параметром 4096 - это считать из порта всё, что есть. Возможно, что-то придёт позднее, мы не знаем.
Taba писал(а):А как тут редактировать сообщение?)
2018-09-26_0-18-56.jpg
Смотрю вот на это условие остановки цикла - как-то оно не совсем правильно сделано изначально. Код 1073676294 (0x3FFF0006) говорит о том, что сколько байтов попросили, столько и считали. Это предупреждение, которое по большому счёту можно игнорировать. Не следовало бы опираться на него при построении условия. Лучше было бы поставить таймаут операций чтения/записи, скажем, секунды 2-3 и выходить из цикла по таймауту (код -1073807339 = 0xBFFF0015).
Taba
beginner
beginner
Сообщения: 35
Зарегистрирован: 02 дек 2015, 15:06
Версия LabVIEW: 2018
Контактная информация:

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Taba »

А как тут редактировать сообщение?)
У меня такой опции нет. Надо кому-то написать чтоб включили? Или может за количество сообщений/карму подключают? Наверное надо почитать FAQ..
Taba
beginner
beginner
Сообщения: 35
Зарегистрирован: 02 дек 2015, 15:06
Версия LabVIEW: 2018
Контактная информация:

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Taba »

Смотрю вот на это условие остановки цикла - как-то оно не совсем правильно сделано изначально. Код 1073676294 (0x3FFF0006) говорит о том, что сколько байтов попросили, столько и считали. Это предупреждение, которое по большому счёту можно игнорировать. Не следовало бы опираться на него при построении условия. Лучше было бы поставить таймаут операций чтения/записи, скажем, секунды 2-3 и выходить из цикла по таймауту (код -1073807339 = 0xBFFF0015).
Я сначала (позавчера) писал на https://forum.tek.com. Т.к. там за вчера ничего не ответили, написал сюда. Предложу там ваше решение (ну и своё тоже).

Спасибо, ещё немного потестил, вроде всё работает :super:
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Blackman »

Вся беда происходит из-за terminal char (LF), код которого появляется в бинарных данных.
Надо править этот :vi: Попробую загрузить драйвер и посмотрю, что можно сделать.
В предложенном варианте если требуемая длина WF будет другая (например 500 точек) Loop чтения данных подвиснет навсегда :)
По редактированию сообщений - перезагрузите страницу, кажется ctrl+F5
Последний раз редактировалось Blackman 25 сен 2018, 22:49, всего редактировалось 1 раз.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение dadreamer »

Taba писал(а):У меня такой опции нет. Надо кому-то написать чтоб включили? Или может за количество сообщений/карму подключают? Наверное надо почитать FAQ..
Не, это старый глюк форума, иногда кнопки пропадают, то одна, то вообще все. Надо разлогиниться, почистить кэш/куки и зайти снова. Кнопки должны появиться. Иногда помогает несколько раз обновить страничку.
Taba писал(а):Я сначала (позавчера) писал на https://forum.tek.com. Т.к. там за вчера ничего не ответили, написал сюда. Предложу там ваше решение (ну и своё тоже).
Вряд ли они станут переписывать этот тулкит. Со странички на ni.com:
Driver Version: 2.3
Original Release Date: 31-OCT-2005
Update Release Date: 30-APR-2008
Да и по панелям видно, что писалось в эпоху палеолита. По-хорошему, надо делать полный рефакторинг всех :vi: -шек, по возможности распараллеливая код, т.к. сейчас и чтение/запись, и парсинг, и обработка - всё в одном потоке выполняется. Таймаут, кстати, там в 15 сек. ставится при инициализации. Если прибор не отвечает, то :vi: будет терпеливо ждать 15 секунд, а с ним и вся программа.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Kosist »

Мда, вчера я не досмотрел - действительно, нужно данные "склеивать" на базе первого пакета с хедером.
Посмотрите вот этот пример (парсинг заголовка можете взять из своей виайки, там это лучше сделано).
Читаем первую посылку -> узнаем, сколько точек нужно получить -> читаем данные в цикле, и сравниваем количество полученных точек с ожидаемым.
Read Data.png
Мы делили апельсин - много наших полегло...
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Blackman »

1. Новый алгоритм чтения бинарных данных.
2. Вместо генерации ошибки формата данных, добавлена попытка чтения данных в ASCII формате.
Вложения
TDS3000 Series Curve.png
GetRawWaveform2.vi
Версия 2017
(37.15 КБ) 216 скачиваний
Taba
beginner
beginner
Сообщения: 35
Зарегистрирован: 02 дек 2015, 15:06
Версия LabVIEW: 2018
Контактная информация:

Re: Помогите подружить осциллограф TEK TDS 3044b с Labview

Сообщение Taba »

Kosist, спасибо за подсказку про количество точек в хедере, я сегодня работал с осциллографом тупо подводя эту инфу снаружи отдельным нодом Number of Points to Acquire.

Blackman, ваш последний ответ сходу не понял, потому что не понимаю, что такое бинарный файл и ASCII формат. Будет свободное время посмотрю, покручу вашу Vi-шку, погуглю, может чего пойму; спасибо.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Железо»