LabView:вопросы и ответы

Обсуждаем цифровые устройства...
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: LabView:вопросы и ответы

Сообщение Roman Venom »

orinoko
вы число 200 вставили на вход "количество байт". Таким образом функция "VISA Read" не выйдет, пока не придут все 200 байт либо по таймауту. При таймауте на выходе Error Out будет ошибка. Включите трассировку и увидите. если вы точнео знаете, сколько байт должно вернуться, то вместо 200 напишите. И как минимум 1 символ нужно послать. Дальше - что у вас посылает контроллер - данные в виде байт (BIN) или символьную строку. Если в виде байт, то это 2 байта (прикладываю ВИшку). И в цикл нужно вставить Wait until next ms (Метроном) и число 100 на вход. (Это задержка повтора цикла)

Спасибо, буду разбираться.


К примеру у меня есть готовый проект (по работе), который включает как раз такую связку (40*DS18B20 - ATmega16 - RS485 - LabView (графики, расчёты средних значений, запись в БД, експорт в Ексель)). Но всё это выкладывать... Во-первых накладно, а во вторых - это коммерческий проект.

Гм. Круто. Надеюсь, мой некоммерческий проект выльется во что-то похожее.
Успех - императив!
Реклама
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Если интересует, могу подробно , но на словах, рассказать как это всё у меня происходит, начиная от датчиков.
Реклама
Аватара пользователя
foxit
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт ноя 16, 2007 00:40:17
Откуда: Украина

Re: LabView:вопросы и ответы

Сообщение foxit »

orinoko писал(а):Если интересует, могу подробно , но на словах, рассказать как это всё у меня происходит, начиная от датчиков.


Конечно интересует
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение inkHunter »

orinoko писал(а):вы число 200 вставили на вход "количество байт". Таким образом функция "VISA Read" не выйдет, пока не придут все 200 байт либо по таймауту. При таймауте на выходе Error Out будет ошибка. Включите трассировку и увидите. если вы точнео знаете, сколько байт должно вернуться, то вместо 200 напишите. И как минимум 1 символ нужно послать. Дальше - что у вас посылает контроллер - данные в виде байт (BIN) или символьную строку. Если в виде байт, то это 2 байта (прикладываю ВИшку). И в цикл нужно вставить Wait until next ms (Метроном) и число 100 на вход. (Это задержка повтора цикла)
К примеру у меня есть готовый проект (по работе), который включает как раз такую связку (40*DS18B20 - ATmega16 - RS485 - LabView (графики, расчёты средних значений, запись в БД, експорт в Ексель)). Но всё это выкладывать... Во-первых накладно, а во вторых - это коммерческий проект.

переделати под 9 версию пожалуйста ...
Реклама
Эиком - электронные компоненты и радиодетали
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Вот для версии 9
Реклама
Аватара пользователя
Сэр Мурр
Модератор
Сообщения: 11169
Зарегистрирован: Чт окт 27, 2005 18:50:07
Откуда: из мест не столь отдалённых

Re: LabView:вопросы и ответы

Сообщение Сэр Мурр »

orinoko писал(а):Хотелось бы попросить Администратора, чтобы он разрешил добавлять файлы типа *.vi А то упаковка - это лишнее телодвижение. А это файл неисполняемый. Исходник, так сказать.

не надо упаковывать- достаточно заменить расширение на допустимое, и в заголовке сообщения указать - на какое расширение заменить при просмотре.
Реклама
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение inkHunter »

Вот сделал по отдельности (сильно не ругайте прогу вижу 2 раз ), выставляю скорость , номер порта, только как то старано она работает, помогите плиз )
Вложения
terminal_RS232.rar
(9.79 КБ) 403 скачивания
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Для начала я бы посоветовал всё таки внимательно почитать уроки по LV. Начать изучение LV я бы посоветовал с "LabVIEW Basic I Course". Он на русском. Можно найти. И также есть цикл уроков журнала Пикад. Можно скачать с сайта Пикада. Я, конечно, понимаю, что руский человек инструкцию читает только в двух случаях - когда нечего читать и когда всё сломалось. :) . Программирование на LV отличается от текстовых языков. Нельзя применять их методы к LV.
А теперь к вашему терминалу. Во-первых, всегда (как правило) используйте провод ошибки. Таким образом всегда можно узнать где и что случилось и сама программа будет меньше глючить. Потому что если в предыдущем блоке произошла ошибка, то и последующие об этом будут знать и не выполнять критические части своей программы. А так как у вас - независимо от возникшей ошибки следующие блоки пытаются отработать. Дальше - у вас два отдельных референса на один порт. Так работать не будет. Изучите внимательно сначала примеры. Главное - понять, а не бездумно скопировать.
И ещё. Опишите, что должен делать терминал. Что он должен получить в ответ.
Во вложении вариант терминала для приёма эха. Нужно соединить 2 и 3 ножки СОМ-порта.
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Начинаем с датчиков. У меня используется на все датчики 3 вывода порта С, таким образом имеем три группы датчиков. Линии подтянуты к +5В резистором 3,3 кОм. Соединение только по 3-проводному кабелю (общий, +5В, данные). Длина кабеля может достигать 10-15 метров. Идеально подходит UTP, а ещё лучше STP.И экран подключить к общему проводу. Обращение к датчикам происходит по их серийным номерам. Считывать их можно, подключая один на линию, и подавая команду «READ_ROM» (0х33). Полученные 8 байт нужно запомнить и они в такой же последовательности и должны передаваться при запросах. Все серийные номера датчиков и номер канала, к которому он подключен, хранятся в EEPROM.
Так как у нас датчиков много, то обмен с ними не должен мешать остальным функциям МК. Сначала для каждого датчика подаём команду «CONVERT» (0x44). Взводим таймер на 800 мс. По прерыванию этого таймера начинаем читать данные с каждого датчика и запоминаем в памяти. По окончании взводим таймер на время паузы между измерениями (200-500 мс). После чего всё повторяется.
Конечно, если у вас всего один датчик, то и городить этот пароход не имеет смысла.
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Вот пока все интересующимся учебники по LV
http://soft-hard.ucoz.ua/news/labview_b ... 9-11-13-47
И пикадовские уроки
http://www.picad.com.ua/lesson.htm
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

А теперь попробуем МК сконнектить с LV. Сначала определимся хоть с каким ни каким протоколом обмена. Будем сразу приучаться к методу "запрос-ответ". Упростим задачу. Компьютер должен послать команду - пусть это будет "Т" (английское). В ответ МК должен послать пакет о температурах всех датчиков. Данные одного датчика занимают 4 байта (у меня так) 1-й байт - порядковый номер, 2-й байт - состояние датчика, 3 и 4 байты - температура (как принято от самого датчика). Мы не будем пока заморачиваться с адресацией и обойдёмся без расчёта CRC.
Теперь наша задача в LV:
1. Послать запрос.
2. Принять весь пакет.
3. Раскидать в массив температур
это для начала...
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Вот набросал для начала процесс обмена LV с внешним устройством (нашим контроллером). Исходник и картинку диаграммы (кто просто хочет поглядеть).
А теперь я буду ждать высказываний от заинтересованных товарищей. А то что-то все замолчали.
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: LabView:вопросы и ответы

Сообщение Roman Venom »

orinoko
Спасибо. Установил версю 10. Работать приятнее чем в 6.

Не замолчали:). Пошли учиться наверное. Вопросы безусловно появятся, но попозже, когда накопятся более-менее нормальные знания по программе.
Успех - императив!
Аватара пользователя
foxit
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт ноя 16, 2007 00:40:17
Откуда: Украина

Re: LabView:вопросы и ответы

Сообщение foxit »

orinoko писал(а):А теперь я буду ждать высказываний от заинтересованных товарищей. А то что-то все замолчали.


Привет
У меня проблемы с интернетом.
Как только все устаканится, буду активно участвовать.

Расскажите про программу МК и как все данные упаковывать с помощью протокола.
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: LabView:вопросы и ответы

Сообщение Meteor »

Что касается протокола - то в 90% случаев это сугубо личное представление данных.
Основной задачей протокола является формализация представления информации. Протокол в данном случае выступает правилом кодирования, передачи, приема и декодирования информации.
Условно протоколы можно разделить на бинарные и текстовые.
Сами протоколы состоят из информативной и служебной частей.
Служебная часть отвечает за признаки начала передачи, разделители и окончания. В качестве окончаний часто выступают т.н. контрольные суммы.
Все данные помещаются в информативную часть.
Данные в бинарном протоколе предсталяются более короткими нежели в текстовых.
Для примера. Пусть желаем передать значение в пределах от 0 до 100. В бинарном представлении данные займут 1 байт, точнее 7 бит.
В текстовом представлении потребуется уже 3 байта - по одному на символ.
Ну и напоследок, хочется заметить, что формирование контрольной суммы в текстовых протоколах, желательно представлять текстом, а не бинарными данными (иногда бывает и так).
наверное на этом ликбез по протоколу можно считать завершенным.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Meteor, спасибо помощь в объяснениях! Реализация протокола - сугубо личное. Хочу также отметить, что свой пример я привёл для того, чтобы можно было при расшифровке пакета в LV на что-то опираться, на конкретный пример, а не рассказывать о сферических символах в вакууме :)
Завтра продолжим формировать данные в LV
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: LabView:вопросы и ответы

Сообщение Roman Venom »

мне необходимо получать данные либо в бинарном либо в 16-ричном коде.
Управляющее значение необходимо задавать в десятичном, потом кодировать в 2х8 бит бинарного.
С помощью каких функций это лучше сделать?
Успех - императив!
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

foxit писал(а):Расскажите про программу МК и как все данные упаковывать с помощью протокола.


В МК должен быть выделен буфер для хранения данных о температурах каждого датчика(это 1 и 2 принятые байты от датчика) и его состоянии (всего по 4 байта на датчик). Состояний у датчика может быть два - есть датчик(напр. 0x00) и нет датчика (напр. 0x7F). В процессе опроса датчиков это буфер заполняется значениями. по команде от компьютера весь этот буфер просто отсылается без изменений. Ничего упаковывать не надо. Я бы показал свою реализацию, но во-первых, у меня всё на асме, а во-вторых, протокол у меня более расширенный и с наскока там непонятно совсем. Но идея такая же. Но только я заполняю буфер передачи перед отсылкой, собирая данные последовательно в кучу. И по прерываниям "UDR_Empty" отсылаю весь буфер, по мере отсылки идёт расчёт CRC16, после отсылки всего буфера досылаю 2 байта CRC.
orinoko

Re: LabView:вопросы и ответы

Сообщение orinoko »

Roman Venom писал(а):мне необходимо получать данные либо в бинарном либо в 16-ричном коде.
Управляющее значение необходимо задавать в десятичном, потом кодировать в 2х8 бит бинарного.
С помощью каких функций это лучше сделать?


То есть вам нужно отослать с компьютера двухбайтное число в виде двух отдельных байтов?
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: LabView:вопросы и ответы

Сообщение Roman Venom »

orinoko

То есть вам нужно отослать с компьютера двухбайтное число в виде двух отдельных байтов?

Ну я рассматриваю 2 варианта. Либо посылка десятичного байта, а потом его кодирование в двухбайтное уже в МК, либо кодирование в лабвью и отправка уже 2х8 байт.
Успех - императив!
Ответить

Вернуться в «Цифровая техника»