LabVIEW Driver Implementation for ifm O2I100 Vision Sensor

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Valerii
interested
interested
Сообщения: 9
Зарегистрирован: 16 июн 2015, 13:00
Версия LabVIEW: 2014
Контактная информация:

LabVIEW Driver Implementation for ifm O2I100 Vision Sensor

Сообщение Valerii »

Здравствуйте уважаемые посетители форума!
Я студент,изучаю LabVIEW в университете...
И вот один из моих проектов это написания драйвера для коммуникации с мультиридером ifm O2I100 через RSR 232, который читает разные типы штрихкодов, баркодов, QR.

Мои задачи это:
- Implementation of RS232-communication
- Set/Get Vision Sensor functions such as:
Implement process data protocol e.g.
1) Set trigger mode
2) Trigger image
3) Set output
4) Read Barcodes

Все чего мне удалось достичь на на данный момент это научится подключать прибор O2I100 через специальную интерфейсную программу, где я могу сделать определённые настройки и конфигурации. А так же в LabVIEW удалось написать простой прибор для установки связи и считывания заводской информации с прибора.

А теперь главный вопрос, как вообще я могу получить информацию с моего сенсора?
К примеру, туже самую картинку штрихкода, которую я могу получить через специальную интерфейсную программу, которая в наборе с сенсором?
Как задать настройки и т.д.?
Какие есть идеи и советы по поводу решения моего проекта?

Буду очень благодарен за любую информацию и в свою очередь могу предоставить любую интересующую информацию для решения задачи.

Прилагаю так же мою программку.
Изображение

Вот еще так же ссылка на архив с документацией по сенсору ifm O2I100
https://cloud.mail.ru/public/8whQ/3LWkqSiNj
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5463
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 87 раз

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение IvanLis »

У Вас в архиве имеется файл "Programming manual".
Там имеется глава "4.4.2 Establish the RS-232 connection", где приведен пример настроек, для подключения, но это видимо у Вас уже получилось.
А в главе "14 Process data protocol" где описаны протокол и команды взаимодействия.
Вам необходимо реализовать необходимые функции, которые там описаны.
Valerii
interested
interested
Сообщения: 9
Зарегистрирован: 16 июн 2015, 13:00
Версия LabVIEW: 2014
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение Valerii »

Спасибо!
Да, запросы по некоторым командам я могу получить задав их в окне "write buffer" и ответ в "read buffer", но если мне нужно получить окно, где отображается то, что видит сенсор или задать настройки этого сенсора, то я не могу сообразить через какие функции это реализовать...
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение Kosist »

Valerii писал(а):Спасибо!
Да, запросы по некоторым командам я могу получить задав их в окне "write buffer" и ответ в "read buffer", но если мне нужно получить окно, где отображается то, что видит сенсор или задать настройки этого сенсора, то я не могу сообразить через какие функции это реализовать...
Немного странный вопрос, Вам нужно подойти к нему с другой стороны. Окно - это подприбор, или sub :vi: . То что видит сенсор - Вы уже реализовали, ведь на скрине, что Вы добавили, есть строка Read Buffer. На лицевой панели ее ведь видно, вот и есть уже что Вам нужно.
Для отображения используйте индикаторы, для настроек - контролы; из введенных в них значений формируйте строку для комманды баркод сканеру.
Мы делили апельсин - много наших полегло...
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение dadreamer »

Valerii писал(а):мне нужно получить окно, где отображается то, что видит сенсор
2015-06-16_19-40-15.jpg
Valerii писал(а):или задать настройки этого сенсора
2015-06-16_19-42-52.jpg
Valerii
interested
interested
Сообщения: 9
Зарегистрирован: 16 июн 2015, 13:00
Версия LabVIEW: 2014
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение Valerii »

Kosist писал(а): Для отображения используйте индикаторы, для настроек - контролы; из введенных в них значений формируйте строку для комманды баркод сканеру.
Спасибо за ответы!

Просто если использовать программку, которая в наборе с сенсором, то там появляется специальное окно, которое отображает то, что видит сенсор.
Про эту программу я могу забыть, она мне нужна только что бы посмотреть как должен работать сенсор и какие функции я должен реализовать в :labview: .

Но вот каким :vi: или саб :vi: можно было бы это отобразить? Ведь обычные :vi: для отображени ХУ графиков и т.д. не подходят...?

И сигнал выполненной операции, которая была задана в окне "write buffer", будет выполненна после узла "Visa Read" в стринговом формате?

Простите за глупые вопросы, только начинаю разбираться с :labview: :drink:
Аватара пользователя
ladik

Silver
developer
developer
Сообщения: 275
Зарегистрирован: 18 ноя 2014, 11:45
Награды: 1
Версия LabVIEW: 2015, 2019
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 3 раза
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение ladik »

Valerii, в LabVIEW есть функции для работы с изображениями (палитра Graphics & Sounds). Чтобы увидеть баркод, Вам нужно преобразовать данные из приёмного буфера в картинку (2D Picture). Если у Вас идут "сырые" данные в буфер (в простейшем случае), то решение - создать массив нулей и единиц (1 - чёрный, 0 - белый) и превратить его в 2D Picture. Вот Вам ссылка на пример как из массива сделать 2D Picture: http://forums.ni.com/t5/Machine-Vision/ ... d-p/430748.
Дорогу осилит идущий.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение dadreamer »

Valerii, выложите сюда ответ от сенсора на команду I?, попробуем разобраться :wink:
ESeid

Автор
advanced
advanced
Сообщения: 150
Зарегистрирован: 30 мар 2011, 22:41
Награды: 1
Версия LabVIEW: 8.2-2013
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение ESeid »

Valerii, а почему бы вам не использовать уже имеющуюся у вас в примерах LabVIEW программу для чтения баркодов?
Она расположена здесь:
C:\Program Files\National Instruments\LabVIEW 2014\examples\Vision\Barcodes\Read 1D Barcode.vi
Вложения
Read 1D Barcode.pdf
(121.26 КБ) 164 скачивания
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1337
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 42 раза
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение AndreyDmitriev »

ESeid писал(а):Valerii, а почему бы вам не использовать уже имеющуюся у вас в примерах LabVIEW программу для чтения баркодов?
Она расположена здесь:
C:\Program Files\National Instruments\LabVIEW 2014\examples\Vision\Barcodes\Read 1D Barcode.vi
Потому что:
а) аппаратный сенсор как правило распознаёт коды значительно лучше пакета Vision
б) передача картинки по RS232 занимает довольно много времени
в) это просто удобнее - он сам переключается между различными типами кодов и т.д.
г) стоимость одной только рантайм лицензии Vision может запросто превысить стоимсть самого сенсора
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение Kosist »

Я вообще не понимаю, в чем проблема. Зачем нужен баркодсканнер? Чтобы прочитать баркод, зашифрованную в нем информацию. Вот и показывайте оператору уже расшифрованный код, зачем ему картинка баркода?
Тут все просто. Хотите изображение - используйте камеру. Хотите расшифровать баркод - используйте баркод ридер. Зачем городить велосипед?
Мы делили апельсин - много наших полегло...
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1337
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 42 раза
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение AndreyDmitriev »

Kosist писал(а):Я вообще не понимаю, в чем проблема. Зачем нужен баркодсканнер? Чтобы прочитать баркод, зашифрованную в нем информацию. Вот и показывайте оператору уже расшифрованный код, зачем ему картинка баркода?
Тут все просто. Хотите изображение - используйте камеру. Хотите расшифровать баркод - используйте баркод ридер. Зачем городить велосипед?
Ну иногда бывает полезно посмотреть, как "видит" баркод сенсор сканера, чтобы подрегулировать освещение, или параметры получше настроить. Я в прошлом месяце работал с ридером HAWK - так там четыре варианта освещения (разного цвета), и они влияли на контраст, а смотреть картинку в сторонней программе было неудобно, так как свою приходилось закрывать - порт-то RS232 у нас всего один. Но в нормальной работе это, конечно, не нужно - для этого строка с результатом передаётся. Вообще все сканеры с которыми я работал, передавали строку немедленно после чтения - то есть в сканер вообще ничего записывать не нужно, чтобы получить от него результат - надо просто ждать байтов с последовательного порта, как только сканер прочитает код, он результат сам отдаст.
Valerii
interested
interested
Сообщения: 9
Зарегистрирован: 16 июн 2015, 13:00
Версия LabVIEW: 2014
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение Valerii »

dadreamer, ответ на эту команду:

Код: Выделить всё

"BMP000308278BM6\B4\04\00\00\00\00\006\04\00\00(\00\00\00\80\02\00\00\E0\01\00\00\01\00\b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\
00\00\00\00\00\00\00\00\01\01\01\01\02\02\02\02\03\03\03\03\04\04\04\04\05\05\05\05\06\06\06\06\07\07\07\07\b\b\b\b\t\t\t\t\n"
А когда читаю произвольный QR код скачанный из сети по команде "t", то получаю вот такую информацию:

Код: Выделить всё

"start\D0\A1\D0\BF\D1\80\D0\B0\D0\B2\D0\BE\D1\87\D0\BD\D0\BE-\D0\B8\D0\BD\D1\84\D0\BE\D1\80\D0\BC\D0\B0\D1\86\D0\B8\D0\BE\D0\BD\D0\BD\D1\8B\D0\B9\s\D0\98\D0\BD\D1\82\D0\B5\D1\80\D0\BD\D0\B5\D1\82-\D0\BF\D0\BE\D1\80\D1\82\D0\B0\D0\BB\shttp://www.abcibc.comstopIFM\sELECTRONIC\tO2I100AC\tMulticode\sReader\tMy\slocation\t192.168.95.20\t255.255.25
5.0\t192.168.95.201\t00:02:01:20:3e:68\t0\t08080\r\n"
Где,

Код: Выделить всё

"IFM\sELECTRONIC\tO2I100AC\tMulticode\sReader\tMy\slocation\t192.168.95.20\t255.255.255.0\t192.168.95.201\t00:02:01:20:3e:68\t0\t08080\r\n"
- это заводские данные сенсора, которые я могу считать по команде "D?".

Сейчас только получил доступ к лаборатории. Буду пытаться что-то реализовать, завтра отпишусь о результатах и задам новые вопросы.

Благодарю всех за активное участие!
Последний раз редактировалось IvanLis 20 июн 2015, 23:47, всего редактировалось 1 раз.
Причина: выделил тегом Code, а то за страницу ушел текст
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение dadreamer »

Valerii
Очевидно, что в ответ приходит файл в формате BMP (первые три символа). Следующие 9 байт согласно инструкции - это длина файла, в вашем случае 308278 байт. Ну, а после этого идёт обычный BMP, по спецификации видим метку начала (0x4D42 = BM), размер файла (0x00 04 B4 36 = 308278d) и так далее. Файл вы получаете не полностью, пакет режется на терминальном символе 0xA = \n = LF, который задан по умолчанию для VISA Configure Serial Port. Чтобы такого не происходило, нужно отключить терминальный символ: Enable Termination Char = FALSE. Кроме того, нужно подумать над логикой чтения. Допустим, вы выполняете запись команды I? через VISA Write, после чего читаете через VISA Read только первые 12 байт. Из них вы выделяете размер файла и снова читаете уже необходимое число байт. В хорошем случае можно обойтись двумя VISA Read, однако если не получится, то можно добавить VISA Bytes At Port и читать данные в While-цикле, пока не будет набрано нужное число байт. Также проверьте в терминале, как будет отсылаться файл: сразу одним пакетом или по кускам. В первом случае большой файл не поместится в буфер порта (по дефолту он равен 4096 байт), нужно будет увеличивать размер буфера (VISA Set I/O Buffer Size). Во втором случае может поместиться, а может и нет.
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1337
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 42 раза
Контактная информация:

Re: LabVIEW Driver Implementation for ifm O2I100 Vision Sens

Сообщение AndreyDmitriev »

Кстати, наличие строк location\t192.168.95.20\t255.255.255.0\t192.168.95.201\t00:02:01:20:3e:68\t0\t08080
наводит на мысль, что у сканера есть и tcp соединение. Если это так, имеет смысл попробовать подключиться к нему именно таким способом.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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