Измерительный блок

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
Sergey
beginner
beginner
Сообщения: 44
Зарегистрирован: 02 ноя 2009, 12:40
Версия LabVIEW: Labview2010
Контактная информация:

Измерительный блок

Сообщение Sergey »

Добрый день Знатоки!
Извините за бесспокойство.
Я вроде смотрел по форуму, но ответа на свой вопрос не нашел.
Вообщем вопросы-пролемы:
Подключаю микроконтроллер (МК) pic18f4550 к пк через виртуальный компорт.
ПК должен отправлять команду, и потом принять данные с мк по этой команде.
1. если данные шлю постоянно с мк, т.е. в цикле, то пк принимает хорошо.
2. если же по команде - послал число, а мк ответил, то все не работает. Хотя заметил что работает, но разово, т.е. нужно перезапускать программу - это очень плохл.
3. принимаю данные с плавающей точкой и не как не могу их корректно обработать, а как не знаю. Они пришли и сразу пропали, как их запомнить.
Вот пробывал сделать проект по этой сслке http://www.labview.ru/forum/viewtopic.p ... 0d68501e9f
Но вообще не заработало, убрал visa clr все заработало, но проблемы описанные выше не исчезли.
Вообщем если только слать данные или только принивать данные, то все нормально, а если и то и то одноврененно, то проблема.
Прикладываю проект.
Вложения
Forum.vi
(28.17 КБ) 115 скачиваний
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Измерительный блок

Сообщение mzu2006 »

В этом :vi: несколько проблем:
1. состояние гонки с переменной write buffer
2. отсутствие паузы
3. чтение 1000 байт за раз

решения:
1. Убрать локальную переменную, всё делать проводами
2. вставить паузу
3. читать примерно размер одной посылки

возможно необходима пауза между записью и чтением.
Sergey
beginner
beginner
Сообщения: 44
Зарегистрирован: 02 ноя 2009, 12:40
Версия LabVIEW: Labview2010
Контактная информация:

Re: Измерительный блок

Сообщение Sergey »

Добрый вечер mzu2006!
Учел все Ваши замечания и вроде все заработало.
Только вот задержка между посылкой приемом 500мс уж больно большая. Ниже все виснет после четырех посылок.
И еще была такая ошибка
LabVIEW: An input parameter is invalid. For example if the input is a path, the path might contain a character not allowed by the OS such as ? or @.
Я так понял, что некоректный данные приходят с контроллера.
Sergey
beginner
beginner
Сообщения: 44
Зарегистрирован: 02 ноя 2009, 12:40
Версия LabVIEW: Labview2010
Контактная информация:

Re: Измерительный блок

Сообщение Sergey »

Добавляю еще исправленый файл.
Вложения
Forum.vi
(29.98 КБ) 99 скачиваний
Sergey
beginner
beginner
Сообщения: 44
Зарегистрирован: 02 ноя 2009, 12:40
Версия LabVIEW: Labview2010
Контактная информация:

Re: Измерительный блок

Сообщение Sergey »

Добрый день!
Еще раз проверил и вроде нашел проблему.
Оказалось. что данные с контроллера некоректно приходят. Даже можно не ставить задержку между посылкой и приемом все работает нормально.
:labview: принимает данные с плавающей точкой, а мк хотя по программе и шлет такой же тип данных, но некоректно они переводятся в строку.
Проверил так - послал число 12.000 строкой на пк и все нормально. А до этого ацп принимало данные в тип float, затем они переводились в строку и потом слались на пк.
Может у кого-то есть программа на си для мк фирмы microchip, которая переводит из float to string?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Измерительный блок

Сообщение Borjomy_1 »

А обязательно надо, чтобы число строкой шло? Можно ведь в HEX загнать.
Sergey
beginner
beginner
Сообщения: 44
Зарегистрирован: 02 ноя 2009, 12:40
Версия LabVIEW: Labview2010
Контактная информация:

Re: Измерительный блок

Сообщение Sergey »

А как?
А :labview: с этим справиться?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Измерительный блок

Сообщение Borjomy_1 »

Ту часть, которая на контроллере - надо на С сделать аналогичное.
Вложения
кодирование.png
Sergey
beginner
beginner
Сообщения: 44
Зарегистрирован: 02 ноя 2009, 12:40
Версия LabVIEW: Labview2010
Контактная информация:

Re: Измерительный блок

Сообщение Sergey »

Добрый день вообще получилось!
Ошибка была в посылке и в принимаемых байтах в :labview: . Нужно чтобы все было согласовано. если с мк 4байта, то и в :labview: тоже 4байта + можно использовать перевод строки или/и возврат каретки.
Возник еще один вопрос. Вернее два.
1.Как сделать чтобы структура темепература (аналогично структуре генератор) включалась при определенной посылки с пк на мк. Ведь структура генератор тоже подсоединен к visa write. Когда я соединяю два выходных провода со структур, один с генератора, один с температуры - ошибка. Пробывал через кластер, тоже ошибка.
А планируется доставить еще блок ацп, это уже третий провод к тем двум.
Надеюсь что написал понятно.
2. В структуре темепература я поставил Waveform Graph и планирую использовать. Кроме того, что данные отобаражаюся в режиме реального времени, хотелось бы записывать в файл, потом вывести их в график. Только как это сделать - не знаю.
Вложения
Forum.vi
(33.51 КБ) 100 скачиваний
Ответить

Вернуться в «Коммуникация с приборами»