Выдать очень длинный буфер (DO)

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

Выдать очень длинный буфер (DO)

Postby Artem.spb on 15 Mar 2016, 22:39

Есть задача выдать очень длинную последовательность очень точно по таймингу, т.е. нужно использовать буферизацию. Но последовательность может быть длительностью в несколько дней, да ещё и неизвестно, сколько именно (пока пользователь не остановит), так что заранее сформировать весь буфер нереально.
Задача осложняется тем, что железа у меня нет, эксперименты затягиваются. Работаю на симуляторе.
Модуль NI 9402, cDAQ-9188
Делаю так:
DO.png

генерацию выдаваемого массива упростил, сейчас это не принципиально.
На симуляторе запускаю, вижу что dt = 500мс, из чего заключаю, что функция записи в буфер честно ждёт, пока в буфере появится свободное место.
Заказчик запускает у себя, и dt < 70мс, т.е. никакого ожидания не наблюдается.
Где косяк, как включить ожидание?
wait mode не похож на решение, потому что все три варианта ждут, только с разной загрузкой процессора.
Artem.spb
expert
expert
 
Posts: 1622
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 262
CLD hardware I/O VIP freelance

Re: Выдать очень длинный буфер (DO)

Postby Blackman on 15 Mar 2016, 23:26

На симуляторе запускаю, вижу что dt = 500мс

Все правильно. А что надо?
Заказчик запускает у себя, и dt < 70мс, т.е. никакого ожидания не наблюдается.

? Можно пояснить более подробно?
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: Выдать очень длинный буфер (DO)

Postby Artem.spb on 15 Mar 2016, 23:46

Blackman wrote:
На симуляторе запускаю, вижу что dt = 500мс

Все правильно. А что надо?

именно это и надо

Заказчик запускает у себя, и dt < 70мс, т.е. никакого ожидания не наблюдается.

? Можно пояснить более подробно?

при работе с реальным железом dt сильно меньше "нужного", т.е. функция вовсе не дожидается, когда в буфере появится место и сразу перезаписывает данные.
Да, забыл добавить, что на реальном железе выскакивает предупреждение
Error 50202
Possible reason(s):
A system call returned a warning. The operation was completed but the state of the system may be unreliable.
Artem.spb
expert
expert
 
Posts: 1622
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 262
CLD hardware I/O VIP freelance

Re: Выдать очень длинный буфер (DO)

Postby Blackman on 16 Mar 2016, 00:37

Output Tasks
For generations, the amount of data you write before starting a generation determines the size of the buffer. The first call to a Multiple Samples version of the Write function/VI creates a buffer and determines its size.

You also can use the Output Buffer Config function/VI to create an output buffer. If you use this function/VI, you must use it before writing any data.

The samples per channel attribute/property on the Timing function/VI does not determine the buffer size for output. Instead it is the total number of samples to generate. If n is your buffer size, setting samples per channel to 3×n generates the data in the buffer exactly three times. To generate the data exactly once, set samples per channel to n.

Размер буфера 500. Samples Per Channel 1000=2*500 -> генерация данных из буфера 2 раза.

Здесь пример Dynamically Updating User Buffer Data. По моему то что надо.
http://www.ni.com/example/27148/en/
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: Выдать очень длинный буфер (DO)

Postby Artem.spb on 17 Mar 2016, 00:56

Как это водится, RTMF.
Заработало, спасибо.
Blackman wrote:Здесь пример Dynamically Updating User Buffer Data. По моему то что надо.
http://www.ni.com/example/27148/en/

Это не совсем то, что надо.
Задача выдавать импульсы со всё возрастающей паузой между ними, если я буду гонять одно и то же по кругу, или перезаписывать новые поверх старых, то будет большой косяк в выходном сигнале.
Регенерацию я как раз выключил, чтобы не получить осложнений. А развлекаться с поиском текущей точки для записи - лишняя работа.
Artem.spb
expert
expert
 
Posts: 1622
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 262
CLD hardware I/O VIP freelance


Return to Железо

Who is online

Users browsing this forum: No registered users and 3 guests

cron