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

Радиотехника, платы, схемы, оборудование, фото- видео- приборы, компьютеры

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

Postby Taba on 25 Sep 2018, 12:19

Всем привет. Имеется 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
Attachments
Driver front panel.jpg
Driver back panel.jpg
magic.jpg
Taba
beginner
beginner
 
Posts: 27
Joined: 02 Dec 2015, 15:06
LabVIEW Version: 2018
Karma: 0

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

Postby Kosist on 25 Sep 2018, 12:44

"Фишка" в том, что прибор не обязан каждый раз возвращать максимальное количество точек, которое он может держать в памяти. 10к - это просто лимит, а возвращать прибор будет столько точек, сколько имеет по факту.
Посмотрите на последний свой скрин - там первый комментарий в кейс-структуре. Вместе с пакетом данных, возвращается 2 байта, которые указывают на то, сколько точек содержит посылка.
Чтобы увеличить количество точек, поиграйте со временем измерения, частотой, и т.д.
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 958
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 270
CLAD I/O VIP students

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

Postby Vitekkz88 on 25 Sep 2018, 20:16

Попробуйте накапливать эти посылки, получится ли после склеивания нужный сигнал? Из своего опыта, работал с одним анализатором спектра - он почему-то в режиме управления с ПК децимировал сигнал и возращал строго 500 отчетов в программу. Полистал юзер мануал и нашел, что это действительно так и по другому сигнал возвращать прибор не будет.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
expert
expert
 
Posts: 1079
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 302
hardware I/O VIP

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

Postby Taba on 25 Sep 2018, 21:39

"Фишка" в том, что прибор не обязан каждый раз возвращать максимальное количество точек

Поиграл с параметрами в разных примерах пака.. Действительно иногда удаётся добиться 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 периода) в оцифрованном виде.
Attachments
error 1.jpg
error 2.jpg
Driver back panel 2.jpg
Taba
beginner
beginner
 
Posts: 27
Joined: 02 Dec 2015, 15:06
LabVIEW Version: 2018
Karma: 0

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

Postby Taba on 25 Sep 2018, 21:54

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

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

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

Postby Taba on 25 Sep 2018, 22:10

Попробуйте накапливать эти посылки, получится ли после склеивания нужный сигнал?


Похоже вы правы. Заменил условие на завершение цикла While. Там вроде в сравнении на Code error не тот нумер стоит.
Но ищу поищу жуков, наверняка какие-нибудь найдутся..
Attachments
magic 2.jpg
bingo.jpg
Taba
beginner
beginner
 
Posts: 27
Joined: 02 Dec 2015, 15:06
LabVIEW Version: 2018
Karma: 0

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

Postby Taba on 25 Sep 2018, 22:13

Но ещё поищу жуков...*
А как тут редактировать сообщение?)
Taba
beginner
beginner
 
Posts: 27
Joined: 02 Dec 2015, 15:06
LabVIEW Version: 2018
Karma: 0

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

Postby dadreamer on 25 Sep 2018, 22:18

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

Т.е. типа есть буффер Visa, куда осциллограф сгружает то, что посчитает нужным после запроса Visa Write. Мы его считываем запросом Visa Read, и там находится нечто в бинарном виде и Byte Count - это сколько первых байтов считать? Т.е. Надо тогда больше 10к писать 8), т.е. я явно что-то не так понимаю.

По умолчанию размер входного и выходного буфера для COM-порта - 4096 байт. Если размер порта не переопределялся при инициализации прибора, то функция VISA Read с параметром 4096 - это считать из порта всё, что есть. Возможно, что-то придёт позднее, мы не знаем.
Taba wrote:А как тут редактировать сообщение?)

2018-09-26_0-18-56.jpg

Смотрю вот на это условие остановки цикла - как-то оно не совсем правильно сделано изначально. Код 1073676294 (0x3FFF0006) говорит о том, что сколько байтов попросили, столько и считали. Это предупреждение, которое по большому счёту можно игнорировать. Не следовало бы опираться на него при построении условия. Лучше было бы поставить таймаут операций чтения/записи, скажем, секунды 2-3 и выходить из цикла по таймауту (код -1073807339 = 0xBFFF0015).
User avatar
dadreamer
professor
professor
 
Posts: 3302
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 844
I/O VIP vision internet

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

Postby Taba on 25 Sep 2018, 22:31

А как тут редактировать сообщение?)

У меня такой опции нет. Надо кому-то написать чтоб включили? Или может за количество сообщений/карму подключают? Наверное надо почитать FAQ..
Taba
beginner
beginner
 
Posts: 27
Joined: 02 Dec 2015, 15:06
LabVIEW Version: 2018
Karma: 0

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

Postby Taba on 25 Sep 2018, 22:35

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

Я сначала (позавчера) писал на https://forum.tek.com. Т.к. там за вчера ничего не ответили, написал сюда. Предложу там ваше решение (ну и своё тоже).

Спасибо, ещё немного потестил, вроде всё работает :super:
Taba
beginner
beginner
 
Posts: 27
Joined: 02 Dec 2015, 15:06
LabVIEW Version: 2018
Karma: 0

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

Postby Blackman on 25 Sep 2018, 22:43

Вся беда происходит из-за terminal char (LF), код которого появляется в бинарных данных.
Надо править этот :vi: Попробую загрузить драйвер и посмотрю, что можно сделать.
В предложенном варианте если требуемая длина WF будет другая (например 500 точек) Loop чтения данных подвиснет навсегда :)
По редактированию сообщений - перезагрузите страницу, кажется ctrl+F5
Last edited by Blackman on 25 Sep 2018, 22:49, edited 1 time in total.
Blackman
leader
leader
 
Posts: 880
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 259
VIP

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

Postby dadreamer on 25 Sep 2018, 22:47

Taba wrote:У меня такой опции нет. Надо кому-то написать чтоб включили? Или может за количество сообщений/карму подключают? Наверное надо почитать FAQ..

Не, это старый глюк форума, иногда кнопки пропадают, то одна, то вообще все. Надо разлогиниться, почистить кэш/куки и зайти снова. Кнопки должны появиться. Иногда помогает несколько раз обновить страничку.
Taba wrote:Я сначала (позавчера) писал на 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 секунд, а с ним и вся программа.
User avatar
dadreamer
professor
professor
 
Posts: 3302
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 844
I/O VIP vision internet

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

Postby Kosist on 26 Sep 2018, 07:40

Мда, вчера я не досмотрел - действительно, нужно данные "склеивать" на базе первого пакета с хедером.
Посмотрите вот этот пример (парсинг заголовка можете взять из своей виайки, там это лучше сделано).
Читаем первую посылку -> узнаем, сколько точек нужно получить -> читаем данные в цикле, и сравниваем количество полученных точек с ожидаемым.
Read Data.png
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 958
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 270
CLAD I/O VIP students

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

Postby Blackman on 26 Sep 2018, 11:22

1. Новый алгоритм чтения бинарных данных.
2. Вместо генерации ошибки формата данных, добавлена попытка чтения данных в ASCII формате.
Attachments
TDS3000 Series Curve.png
GetRawWaveform2.vi
Версия 2017
(37.15 KiB) Downloaded 21 times
Blackman
leader
leader
 
Posts: 880
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 259
VIP

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

Postby Taba on 26 Sep 2018, 22:19

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

Blackman, ваш последний ответ сходу не понял, потому что не понимаю, что такое бинарный файл и ASCII формат. Будет свободное время посмотрю, покручу вашу Vi-шку, погуглю, может чего пойму; спасибо.
Taba
beginner
beginner
 
Posts: 27
Joined: 02 Dec 2015, 15:06
LabVIEW Version: 2018
Karma: 0


Return to Железо

Who is online

Users browsing this forum: No registered users and 2 guests

cron