Коммуникация через USB с прибором PPS3205T-3S

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы

Коммуникация через USB с прибором PPS3205T-3S

Postby Benzzopila on 14 Dec 2017, 16:28

Здравствуйте! :help:
Есть источник питания PPS3205T-3S, выпущенный компанией Atten, надо с помощью LabVIEW программно контролировать его через USB. Библиотеки под этот источник питания я не нашел, по этому решил что общаться с ним придется через VISA USB. Порывшись в интернете я понял что для начала прибор должен видеть Measurement and Automation Explorer для того чтобы выделить VISA Resource name:
PPS3205T.jpg

Далее для связи с прибором необходимо было найти протокол коммуникации. Был найден протокол для серии Atten PPS3000:
Protocol.jpg

Вот тут заключается загвоздка. Я чувствую что не понимаю каких-то элементарных вещей, но не могу понять каких именно :dntknw:
На сколько я понимаю мне надо отсылать 24-ех байтные пакеты для управления прибором, тоесть отправить массив, а точнее кластер по скольку в протоколе имеются как численные так и стринговые значения, но ни на один вход инструментов VISA не подаются кластеры или массивы... Подскажите, пожалуйста, что можно подчитать по основам данного направления и каким образом отсылать этот пакет данных устройству. Заранее благодарен :thank:
Benzzopila
beginner
beginner
 
Posts: 16
Joined: 19 Jun 2014, 13:23
Location: Leoben, Austria
LabVIEW Version: 2014
Karma: 0

Re: Коммуникация через USB с прибором PPS3205T-3S

Postby dadreamer on 14 Dec 2017, 19:18

Benzzopila wrote:На сколько я понимаю мне надо отсылать 24-ех байтные пакеты для управления прибором, тоесть отправить массив, а точнее кластер по скольку в протоколе имеются как численные так и стринговые значения, но ни на один вход инструментов VISA не подаются кластеры или массивы... Подскажите, пожалуйста, что можно подчитать по основам данного направления и каким образом отсылать этот пакет данных устройству. Заранее благодарен :thank:

Ну, у вас конвертор FTDI FT232R USB UART, так что в системе должен присутствовать виртуальный COM-порт. В :labview: работаете с ним, как с обычным COM-портом, через инструменты VISA Serial (не USB), такие как VISA Configure Serial Port, VISA Read / Write, VISA Close. Инструменты чтения-записи работают со строкой, строка легко переводится в U8-массив и обратно через String To Byte Array / Byte Array To String. Почитайте/посмотрите материалы по связи через последовательный интерфейс, примеров очень много как на форумах NI, так и в рунете.
User avatar
dadreamer
professor
professor
 
Posts: 3099
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 781
I/O VIP vision internet

Re: Коммуникация через USB с прибором PPS3205T-3S

Postby Benzzopila on 18 Dec 2017, 16:14

Ну, у вас конвертор FTDI FT232R USB UART, так что в системе должен присутствовать виртуальный COM-порт. В :labview: работаете с ним, как с обычным COM-портом, через инструменты VISA Serial (не USB), такие как VISA Configure Serial Port, VISA Read / Write, VISA Close. Инструменты чтения-записи работают со строкой, строка легко переводится в U8-массив и обратно через String To Byte Array / Byte Array To String. Почитайте/посмотрите материалы по связи через последовательный интерфейс, примеров очень много как на форумах NI, так и в рунете.

Воспользовался Вашим советом получил вот такую прогу:
Прога.jpg

На сколько я понял VISA Write записывает байт за байтом, потом отсылает пакет из 24 байт на прибор... Я так понял что все надо переводить в двоичный код, по этому каждый байт, согласно протоколу что в нем должно быть, переводится в двоичный массив и отсылается на прибор, но прибор на это ни как не реагирует, подскажите в чем может быть проблема?
Benzzopila
beginner
beginner
 
Posts: 16
Joined: 19 Jun 2014, 13:23
Location: Leoben, Austria
LabVIEW Version: 2014
Karma: 0

Re: Коммуникация через USB с прибором PPS3205T-3S

Postby dadreamer on 18 Dec 2017, 16:41

Benzzopila wrote:Я так понял что все надо переводить в двоичный код, по этому каждый байт, согласно протоколу что в нем должно быть, переводится в двоичный массив и отсылается на прибор

Эти все преобразования, что у вас на картинке - лишние. Отправляйте уже сформированный массив U8 за один заход VISA Write. Чтобы записать каждый байт в HEX-нотации, нажмите ПКМ на любом элементе массива и выберите Visible Items -> Radix:
2017-12-18_18-22-03.jpg
2017-12-18_18-22-03.jpg (47.42 KiB) Viewed 1909 times

Далее инструментом "рука" нажмите на появившемся Radix'е и выберите Hex:
2017-12-18_18-22-44.jpg
2017-12-18_18-22-44.jpg (30.32 KiB) Viewed 1909 times

Теперь можете вписать в массив нужные данные. Можно поступить ещё проще - записать в порт строку без лишнего преобразования. Создайте строковую константу, нажмите на ней ПКМ -> Visible Items -> Display Style:
2017-12-18_18-23-42.jpg
2017-12-18_18-23-42.jpg (38.77 KiB) Viewed 1909 times

Далее инструментом "рука" нажмите на появившемся Display Style и выберите Hex Display:
2017-12-18_18-24-41.jpg
2017-12-18_18-24-41.jpg (22.4 KiB) Viewed 1909 times

Кроме того, на рисунке у вас не сконфигурирован COM-порт. Вместо VISA Open должно быть VISA Configure Serial Port и для этого :vi: должны быть заданы параметры порта, с которыми работает ваш прибор (скорость передачи, терминальный символ, паритет и т.д.). При некорректно заданных параметрах будут наблюдаться ошибки приёма-передачи и потери символов. Ещё интересно, что же такое A9CRV1PP::RAW? Если работаете с COM-портом, то должно быть написано COM 1, COM 2 и т.д.

Короче, если не использовать приём ответа от прибора, то у вас будет всего три блока: VISA Configure Serial Port -> VISA Write -> VISA Close. Задержек нигде не надо ставить. В рабочей программе при работе в цикле VISA Configure Serial Port и VISA Close должны находиться вне цикла, а VISA Write должен вызываться по какому-то условию (например, нажатие кнопки).
Benzzopila wrote:На сколько я понял VISA Write записывает байт за байтом, потом отсылает пакет из 24 байт на прибор...

Не. Когда вызываете VISA Write, то сразу же пишете во входной буфер устройства (через драйвер ОСи и буфер контроллера порта, разумеется). Так что нет необходимости писать байт за байтом. Отправьте команду один раз и, если нужно, вызовите один раз VISA Read, чтобы получить ответ от прибора.
User avatar
dadreamer
professor
professor
 
Posts: 3099
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 781
I/O VIP vision internet

Re: Коммуникация через USB с прибором PPS3205T-3S

Postby Benzzopila on 18 Dec 2017, 17:45

Кроме того, на рисунке у вас не сконфигурирован COM-порт. Вместо VISA Open должно быть VISA Configure Serial Port и для этого :vi: должны быть заданы параметры порта, с которыми работает ваш прибор (скорость передачи, терминальный символ, паритет и т.д.). При некорректно заданных параметрах будут наблюдаться ошибки приёма-передачи и потери символов.

В том то и дело что я поначалу пользовал VISA Configure Serial Port, но он категорически отказывался работать какую бы я инфу туда не ставил(причем видно что сразу после него выходит ошибка) все значения которые я там ставил были согласно тому что написано в протоколе, а VISA Open при этом работает корректно(то есть ошибки нет).
Ещё интересно, что же такое A9CRV1PP::RAW? Если работаете с COM-портом, то должно быть написано COM 1, COM 2 и т.д.

Это часть VISA Resource Name - USB0::0x0403::0x6001::A9CRV1PP::RAW-:
PPS3205T.jpg
Benzzopila
beginner
beginner
 
Posts: 16
Joined: 19 Jun 2014, 13:23
Location: Leoben, Austria
LabVIEW Version: 2014
Karma: 0

Re: Коммуникация через USB с прибором PPS3205T-3S

Postby dadreamer on 18 Dec 2017, 17:52

Benzzopila wrote:В том то и дело что я поначалу пользовал VISA Configure Serial Port, но он категорически отказывался работать какую бы я инфу туда не ставил(причем видно что сразу после него выходит ошибка) все значения которые я там ставил были согласно тому что написано в протоколе, а VISA Open при этом работает корректно(то есть ошибки нет).

Потому и не работал, так как вы открываете не COM-порт, а "сырой" USB-интерфейс. Мне не совсем понятно, почему в системе не определился виртуальный COM-порт. Вы драйвер-то ставили?
http://www.ftdichip.com/Drivers/VCP.htm
User avatar
dadreamer
professor
professor
 
Posts: 3099
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 781
I/O VIP vision internet

Re: Коммуникация через USB с прибором PPS3205T-3S

Postby Benzzopila on 19 Dec 2017, 16:53

Спасибо за совет, теперь видит компорт, но все же это не устранило проблему с VISA Configure Serial Port, после него все еще выбивает ошибку, а так же за Вашим советом я переделал немного программу:
USB.jpg

Каждое значение с шестнадцетиричной системы перевел в десятеричную и записал в массив, добавил элемент VISA Read. Начало выбивать ошибку после VISA Read и все так же прибор не реагирует.
Benzzopila
beginner
beginner
 
Posts: 16
Joined: 19 Jun 2014, 13:23
Location: Leoben, Austria
LabVIEW Version: 2014
Karma: 0

Re: Коммуникация через USB с прибором PPS3205T-3S

Postby dadreamer on 19 Dec 2017, 17:13

Benzzopila wrote:но все же это не устранило проблему с VISA Configure Serial Port, после него все еще выбивает ошибку

Что за ошибка? Этот инструмент необходим, так как без него не получится правильно настроить сессию для связи с прибором. Задержки на вашей диаграмме лишние, т.к. при записи данные сразу же уходят на прибор, а при чтении блок VISA Read ждёт определённое время, как раз-таки задаваемое через VISA Configure Serial Port (по умолчанию 10 секунд). Если за это время данные не пришли, VISA Read выдаёт ошибку по таймауту. Можно обрабатывать событие таймаута, например, как здесь сделано. Но сначала надо разобраться, что не так с VISA Configure Serial Port.
User avatar
dadreamer
professor
professor
 
Posts: 3099
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 781
I/O VIP vision internet

Re: Коммуникация через USB с прибором PPS3205T-3S

Postby Blackman on 19 Dec 2017, 18:43

Здесь без VISA Configure Serial Port никак. ))
Attachments
Protocol.png
Blackman
leader
leader
 
Posts: 759
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 212

Re: Коммуникация через USB с прибором PPS3205T-3S

Postby Benzzopila on 20 Dec 2017, 14:38

Что за ошибка? Этот инструмент необходим, так как без него не получится правильно настроить сессию для связи с прибором. Задержки на вашей диаграмме лишние, т.к. при записи данные сразу же уходят на прибор, а при чтении блок VISA Read ждёт определённое время, как раз-таки задаваемое через VISA Configure Serial Port (по умолчанию 10 секунд). Если за это время данные не пришли, VISA Read выдаёт ошибку по таймауту. Можно обрабатывать событие таймаута, например, как здесь сделано. Но сначала надо разобраться, что не так с VISA Configure Serial Port.

Я Вам благодарен после того как перезагрузился комп все стало работать, с прибором нашли общий язык, без Вас вряд ли бы разобрался. Единственное что VISA Configure Serial Port не принимает data bits 9 максимально поставить можно 8, а в протоколе сказано что должно быть 9, хотя на самом приборе можно ставить как 9 так и 8... Мне интересно зачем создавать виртуальный компорт, почему не общаться с прибором непосредственно через USB. Посоветуйте, пожалуйста, что можно почитать общеобразовательное по :labview: или конкретно по данной тематике, может есть по Вашему мнению какие-то хорошие книги(можно и на англ) какие стоит прочитать. :1stplace:
Benzzopila
beginner
beginner
 
Posts: 16
Joined: 19 Jun 2014, 13:23
Location: Leoben, Austria
LabVIEW Version: 2014
Karma: 0

Re: Коммуникация через USB с прибором PPS3205T-3S

Postby dadreamer on 20 Dec 2017, 20:28

Benzzopila wrote:Единственное что VISA Configure Serial Port не принимает data bits 9 максимально поставить можно 8, а в протоколе сказано что должно быть 9, хотя на самом приборе можно ставить как 9 так и 8...

На картинке также написано, что можно использовать чётность/паритет (parity) = маркёр (mark), либо чётность/паритет (parity) = нет (none) и 2 стоповых бита.
Benzzopila wrote:Мне интересно зачем создавать виртуальный компорт, почему не общаться с прибором непосредственно через USB.

Через USB драйвер FTDI общается, освобождая вас от этой трудоёмкой работы. Напрямую с USB работать стоит только в самых крайних случаях, когда нет других вариантов. Этот интерфейс довольно сложен и нужно понимать, как он работает, прежде чем налаживать связь. И даже зная азы работы USB, будет не так просто сделать то, что по последовательному протоколу делается 1-2 командами. Кроме того, мост USB-UART у вас встроен в саму "железку", так что COM-порт - "то, что доктор прописал".
Benzzopila wrote:Посоветуйте, пожалуйста, что можно почитать общеобразовательное по :labview: или конкретно по данной тематике, может есть по Вашему мнению какие-то хорошие книги(можно и на англ) какие стоит прочитать. :1stplace:

Общая литература по :labview: - Трэвис и Блюм, ну и кое какие справочники типа Суранов. Конкретно по связи с приборами - на русском вряд ли есть, на инглише - надо искать на сайте NI. Ну, и смотрите примеры, поставляющиеся вместе с :labview: : Help -> Find Examples. Конкретно по последовательному интерфейсу - C:\Program Files\National Instruments\LabVIEW 2017\examples\Instrument IO\Serial. Можете поглядеть, как работать через Визу с USB (примеры самого общего плана) - C:\Program Files\National Instruments\LabVIEW 2017\examples\Instrument IO\VISA\USB.
User avatar
dadreamer
professor
professor
 
Posts: 3099
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 781
I/O VIP vision internet

Re: Коммуникация через USB с прибором PPS3205T-3S

Postby JohnySC on 18 Apr 2018, 17:49

Спасибо всем выше отписавшимся, благодаря этой информации, сделал свой вариант управления этим же прибором, кому интересно - архив с полностью проверенным VI во вложении
Attachments
БП.zip
(435.06 KiB) Downloaded 37 times
JohnySC
interested
interested
 
Posts: 1
Joined: 17 Apr 2018, 11:31
LabVIEW Version: 2016
Karma: 0


Return to Коммуникация с приборами

Who is online

Users browsing this forum: No registered users and 5 guests

cron