Запись данных с внешнего устройства cRIO

Работа с файлами и базами данных
Ответить
ashrag
beginner
beginner
Сообщения: 30
Зарегистрирован: 20 мар 2011, 15:43
Версия LabVIEW: 2010
Контактная информация:

Запись данных с внешнего устройства cRIO

Сообщение ashrag »

Здравствуйте!
Подскажите пожалуйста в таком вопросе. Нам необходимо записывать данные с внешнего устройства через cRIO-9074 и модули 9208 (http://russia.ni.com/sites/default/file ... %D0%B8.pdf) и 9213 (термопарный модуль). Но при программировании FPGA есть не все функции записи в файл. Задача состоит в следующем: есть установка (ГТД) и с нее надо снимать показания (ток, напряжение, частота, вибрация и температура). Эти параметры необходимо записывать в отчет, хотя бы в текстовый файл (желательно в форме таблицы). Также необходимо сделать привязку ко времени, т.е. чтобы каждое измерение сопровождалось временем измерения. Подскажите пожалуйста как можно организовать запись в таком случае? Если не сложно то приведите пожалуйста код программы, буду очень благодарен.
Аватара пользователя
Vasiliy Baev

Activity Gold Bronze
leader
leader
Сообщения: 545
Зарегистрирован: 31 окт 2011, 09:02
Награды: 4
Версия LabVIEW: 2019
Откуда: Санкт-Петербург
Благодарил (а): 9 раз
Поблагодарили: 10 раз
Контактная информация:

Re: Запись данных с внешнего устройства cRIO

Сообщение Vasiliy Baev »

Функции записи в файл доступны только при программирование RT приложения, на ПЛИС писать в файл нельзя.
Как вариант передаем данные с FPGA на RT и записываем их в TDMS или передаем данные через сетевые переменные на ПК и записываем в файл.
Для передачи данных с FPGA на RT используйте DMA FIFO: http://zone.ni.com/devzone/cda/tut/p/id/4534
На форуме NI много тем посвященному этому вопросу к примеру: http://forums.ni.com/t5/LabVIEW/Best-wa ... 062/page/2
С какой частотой планируете снимать измерения и записывать?
ashrag
beginner
beginner
Сообщения: 30
Зарегистрирован: 20 мар 2011, 15:43
Версия LabVIEW: 2010
Контактная информация:

Re: Запись данных с внешнего устройства cRIO

Сообщение ashrag »

Частота записи в память 50 Гц.
С английским у меня не то чтобы совсем никак, но и далеко не так хорошо как хотелось бы. Поэтому боюсь, что я просто не найду нужной темы. Если Вас не затруднит, не могли бы Вы дать ссылки на форуме хотя бы на несколько тем схожих с моей.
А как можно сделать привязку ко времени?
Аватара пользователя
Vasiliy Baev

Activity Gold Bronze
leader
leader
Сообщения: 545
Зарегистрирован: 31 окт 2011, 09:02
Награды: 4
Версия LabVIEW: 2019
Откуда: Санкт-Петербург
Благодарил (а): 9 раз
Поблагодарили: 10 раз
Контактная информация:

Re: Запись данных с внешнего устройства cRIO

Сообщение Vasiliy Baev »

ashrag, мне кажется, что целесообразно записывать данные на ПК, а не хранить их в PAC и не занимать память, которой там и так не много. Хотя и запись на PAC тоже можно рассмотреть. Если в вашей программе нет необходимости работать на больших частотах, то Вы можете и не спускаться на ПЛИС, а ограничиться RT приложением (до 1кГц). Для привязки ко времени используйте внутренние часы PAC (формат UTC). Выставить правильное время на PAC можно в MAX или синхронизировать время с ПК или другим контроллером написав для этого небольшой код (так же существует вариант поднять *временной* сервер на ПК, подобный тому которые используют наши ОС для синхронизации времени. Никогда такого не делал, но подобные темы на NI.com видел). Слышал, что для LW 2011 есть специальная палитра, предназначенная именно для синхронизации времени. Сетевые переменные имеют терминал TimeStamp, можете использовать его при записи данных на ПК. Ссылки поищу чуть позже.
ashrag
beginner
beginner
Сообщения: 30
Зарегистрирован: 20 мар 2011, 15:43
Версия LabVIEW: 2010
Контактная информация:

Re: Запись данных с внешнего устройства cRIO

Сообщение ashrag »

Vasa, Спасибо за советы. Да данные мы планируем записывать на ПК. А могли бы Вы по подробнее рассказать про привязку к времени? Как ее можно организовать? Т.е. можно просто использовать подприборы из палитры timing?
Можно ли организовать запись в файл прямо из RT-системы или надо передавать данные на ПК и только потом их записывать? Я спросил об этом техподдержку NI мне сказали, что можно, но надо перевести само шасси cRIO в scan mode. Я не совсем понимаю как это сделать. Можете подсказать как это сделать?
Мы собрали приложение для передачи данных из FPGA в RT, а затем передачи их на ПК и последующей записи, оно не работает (фото, см. ниже). Возможно вы могли бы подсказать в чем может быть причина?
Вложения
Сохранение данных.zip
(239.36 КБ) 194 скачивания
Аватара пользователя
Vasiliy Baev

Activity Gold Bronze
leader
leader
Сообщения: 545
Зарегистрирован: 31 окт 2011, 09:02
Награды: 4
Версия LabVIEW: 2019
Откуда: Санкт-Петербург
Благодарил (а): 9 раз
Поблагодарили: 10 раз
Контактная информация:

Re: Запись данных с внешнего устройства cRIO

Сообщение Vasiliy Baev »

ashrag, я нарисую Вам пример FPGA-RT-PC после праздников.
Если вы пишите данные на PAC, то конечно используйте приборы из палитры Timing. Про Scan Interface: при добавлении контроллера в проект, LW спрашивает в каком режиме вы будете использовать ваш контроллер (Scan/FPGA) или в проекте зайдите в свойства шасси и выберете необходимый. Про запись на ПК прямо из PAC я Вам ничего не скажу (будет минутка попробую на 9012 и отпишусь) в книгах таких примеров не видел.
Ваше приложение оставлю без комментариев пока. Как я понял Вам не важны абсолютно все снятые значения (на ПЛИС цикл будет >50Гц?) так что DMA можно оставить в покое. Вы планируете на ПК отображать данные, возможно управлять установкой?
Lexan_83

Bronze
adviser
adviser
Сообщения: 221
Зарегистрирован: 18 май 2009, 10:50
Награды: 1
Версия LabVIEW: 8.6
Откуда: Москва

Re: Запись данных с внешнего устройства cRIO

Сообщение Lexan_83 »

ashrag писал(а):Vasa
Можно ли организовать запись в файл прямо из RT-системы или надо передавать данные на ПК и только потом их записывать? Я спросил об этом техподдержку NI мне сказали, что можно, но надо перевести само шасси cRIO в scan mode. Я не совсем понимаю как это сделать. Можете подсказать как это сделать?
Мы собрали приложение для передачи данных из FPGA в RT, а затем передачи их на ПК и последующей записи, оно не работает (фото, см. ниже). Возможно вы могли бы подсказать в чем может быть причина?
RT-система позволяет реализовать сохранение данных многими способами:
1. Гнать данные в контроллер ( через фифо буфер, прямое чтение из ПЛИС или scan mode), там их обрабатывать и обработанные данные гнать уже по TCP/IP в ПК и там уже их сохранять. При такой реализации можно сделать дублирование сохранения в память контроллера (только контроллер желательно с USB разъемом, 256 Мб контроллера 9074 маловато). При такой реализации более 10000 изм/сек вряд ли удастся передавать.
2. Читать данные напрямую из фифо буфера ПЛИС в ПК и затем сохранять (у меня удавалось таким образом передавать 400000 изм/сек).
К сожалению вы не написали какая скорость вам нужна.
Пример реализации второго способа в архиве.

Для переключения в режим scan mode нужно удалить в проекте FPGA Target и добавить потом New => C series module. либо при формировании проекта указать scan interfese а не FPGA.
Для передачи данных из контроллера в ПК рекомендую ознакомится с библиотекой STM http://zone.ni.com/devzone/cda/tut/p/id/4095#toc7.
Вложения
тест FIFO Folder.zip
(634.2 КБ) 171 скачивание
ashrag
beginner
beginner
Сообщения: 30
Зарегистрирован: 20 мар 2011, 15:43
Версия LabVIEW: 2010
Контактная информация:

Re: Запись данных с внешнего устройства cRIO

Сообщение ashrag »

Насколько я уже понял ПЛИС как таковой нам не нужен. Нам просто надо считывать показания датчиков через модули (9208 и 9213) и сохранять данные с частотой 50 Гц. Периодичность вывода на экран 0,1 сек. Управлять установкой пока не планируется, только считывать показания и строить графики изменения их во времени.
В приведенном мной ранее примере мы пытались передать данные через Network Streams, но у нас почему то они не передаются. На входе блока Write Single Element to Stream (на уровне RT) данные есть они отображаются на индикаторе, а на выходе из блока Read Single Element from Stream (на уровне ПК) их нет. Мы также вводили задержку результат тот же. Мы также сверили нашу программы с другими примерами и вроде должно работать, но данные все равно не передаются.
Помимо этого мы нашли пример передачи данных через FIFО, но у нас также ничего не получилось. Мы нашли этот пример на сайте тот здесь http://zone.ni.com/devzone/cda/tut/p/id/4534.
Мы не знаем почему не работает.
А через TCP передавать также как и через другие: открыть-записать-закрыть на RT-системе и открыть-считать-закрыть на ПК? Или нужно что-то дополнительно использовать?
Аватара пользователя
Vasiliy Baev

Activity Gold Bronze
leader
leader
Сообщения: 545
Зарегистрирован: 31 окт 2011, 09:02
Награды: 4
Версия LabVIEW: 2019
Откуда: Санкт-Петербург
Благодарил (а): 9 раз
Поблагодарили: 10 раз
Контактная информация:

Re: Запись данных с внешнего устройства cRIO

Сообщение Vasiliy Baev »

Как вариант, имеющий право на жизнь для потоковой передачи данных с частотой <50Гц.
Для частот > 50Гц данные архивируют и посылают пачками, если Вам будет интересно - я нарисую пример.
Данные пример очень прост и требует доработки.
Вложения
PC
PC
RT
RT
FPGA
FPGA
Config
Config
cRIO.rar
9012+9103
(613.67 КБ) 146 скачиваний
Последний раз редактировалось Vasiliy Baev 03 май 2012, 08:31, всего редактировалось 1 раз.
ashrag
beginner
beginner
Сообщения: 30
Зарегистрирован: 20 мар 2011, 15:43
Версия LabVIEW: 2010
Контактная информация:

Re: Запись данных с внешнего устройства cRIO

Сообщение ashrag »

Спасибо за помощь. Мы попробуем. Скажите пожалуйста в чем именно требуется доработка? И если вам не сложно не могли бы Вы выложить программу?
Аватара пользователя
Vasiliy Baev

Activity Gold Bronze
leader
leader
Сообщения: 545
Зарегистрирован: 31 окт 2011, 09:02
Награды: 4
Версия LabVIEW: 2019
Откуда: Санкт-Петербург
Благодарил (а): 9 раз
Поблагодарили: 10 раз
Контактная информация:

Re: Запись данных с внешнего устройства cRIO

Сообщение Vasiliy Baev »

ashrag, извините, в спешке забыл приложить файл. Добавил к посту выше.
На верхнем уровне добавить проверку подключения к PAC, вывод графиков на экран. На RT, если приложение конфигурируемое, то добавить сохранения настроек в *.ini (или любой удобный для Вас), читать их в разделе инициализации (Настройки PID регулятора, фильтров и тп и тд).
Настройте время на PAС в MAX - выставите время для вашего региона (по умолчанию UTC).
Другой вариант приложения/передачи данных выложу после выходных - не дают у себя на работе посидеть :crazy:
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Сохранение данных»