Оцените, знающие люди!!!

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
AlexOskar
user
user
Сообщения: 95
Зарегистрирован: 05 июл 2016, 21:02
Версия LabVIEW: 12
Контактная информация:

Оцените, знающие люди!!!

Сообщение AlexOskar »

Под свои нужды расковырял библиотеку "nimodbus121" и сделал циклический опрос 2-х приборов. Нуждаюсь в редактуре. Может чего лишнего наделал или наоборот...
Лицевая панель не оформлена, т.к. планирую передавать данные в другое приложение через средства DSC модуля.
Сразу скажу, что использовать стандартный набор средств Модбас библиотеки не получится, т.к. команды нестандартные. Забирать информацию пакетом из всех ячеек тоже нельзя, т.к. потому что....
Вложения
Стабильный для счетчиков.vi
(98.44 КБ) 231 скачивание
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Оцените, знающие люди!!!

Сообщение Blackman »

Если по поводу BD, то на рис. как могло бы быть)
Вложения
MBMS_Read Input Registers (Synch)_26-11-2016 13-16-47_604d.png
MBMS_Read Input Registers (Synch)_26-11-2016 13-16-47_604f.png
AlexOskar
user
user
Сообщения: 95
Зарегистрирован: 05 июл 2016, 21:02
Версия LabVIEW: 12
Контактная информация:

Re: Оцените, знающие люди!!!

Сообщение AlexOskar »

Да не сыпь соль...) А так, по моему алгоритму, есть замечания?
Аватара пользователя
Kosist

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

Re: Оцените, знающие люди!!!

Сообщение Kosist »

AlexOskar писал(а):Да не сыпь соль...) А так, по моему алгоритму, есть замечания?
А что Вы конкретно подразумеваете под алгоритмом? Процесс конвертации сообщения? Считывание сообщения?
Архитектура - наше все; не устану это повторять.
Как по мне, то во время разработки нужно спрашивать себя - насколько легко будет изменить приложение, если будут какие-то изменения то ли в требованиях заказчика, то ли в установке. И еще один вопрос, который нужно всегда держать в голове - сколько кода из данного приложения я смогу использовать еще раз в другом проекте.
Поэтому с этой точки зрения, архитектура - главная проблема Вашего приложения. Тем более, что в самом :labview: уже есть все шаблоны для проэктов - уже есть стартовая точка для разработки приложения с правильной архитектурой.
Например, много хардкода. Stacked Sequence Structure - зло, вместо нее лучше использовать стейт машину. Повторяющиеся куски кода, которые лучше запихать в subVI. Если com порт не будет присутствувать в системе, нужно будет остановить, и перезапустить приложение, т.к. элементарно нету кнопки Старт. Кстати, я не нашел там функции VISA Close - а ведь нужно правильно закрывать VISA сессию, иначе могут быть проблемы. И т.д., и т.п.
Такое делать можно для прототипирования, proof of concept. И то, нужно помнить, что в конце-концов этот proof of concept код будет далее использоваться в "боевом" приложении...
Ну, и непонятно, почему все-таки нельзя использовать либу от NI, как показал Blackman. Если Ваше устройство не поддерживает формат комманд Modbus, то тогда это и не Modbus вовсе; в мире коммуникационных протоколов все более-менее строго...
Конвертация данных - другое дело; но она не связан с опросом прибора на прямую. У меня тоже был случай, когда нужно было по особому парсить байты от прибора, но опрашивал я его стандартно... Хотя точно Ваш случай я не знаю, да и не нужно его знать - но все-таки не понятно, почему нельзя использовать либу от NI там...
Но можно следовать другой философии. "Работает? - Работает. - Ну вот и не трогай". Поэтому если работает - то :super: , но вот оформление и построение программы я бы поменял обязательно...
Мы делили апельсин - много наших полегло...
AlexOskar
user
user
Сообщения: 95
Зарегистрирован: 05 июл 2016, 21:02
Версия LabVIEW: 12
Контактная информация:

Re: Оцените, знающие люди!!!

Сообщение AlexOskar »

Kosist, спасибо за развернутый комментарий.
Под алгоритмом я понимаю порядок выполнения всех операций. Хочу чтобы этот алгоритм проверили на логичность последовательности выполнения операций и необходимость их проведения. Возможно там есть лишние проверки или не нужно отслеживание тайминга выполнения операций... Это основная причина моего обращения на форум.
Протокол обмена подозрительно похож на ModBus))), но все же это не он. Здесь Вы правы на 100%. VISA Close я обязательно добавлю, спасибо. В subVI запихну все сразу, как только получу одобрение на форуме)
Какая необходимость в кнопке СТАРТ, если на панели программы есть эта кнопка (белая стрелочка)?
Расскажите, пожалуйста, подробнее какие есть претензии к Stacked Sequence Structure. Я про это ничего пока не слышал.
Аватара пользователя
Kosist

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

Re: Оцените, знающие люди!!!

Сообщение Kosist »

Когда Вы жмете белую стрелку (кнопку Run), VI сразу начинает выполнение. Но, в Вашем случае, нужно вначале выбрать VISA Com port, сделать настройки бауд рейт, и т.д. - и только после этого запускать виайку; что не есть хорошо - в любом приложении пользователь вначале запускает приложение, делает нужные конфигурации, и только потом происходит инициализации железа, и т.д. - возьмите, например, RealTerm, и т.д. Поэтому неплохо иметь кнопку Старт, которая будет собственно запускать сам алгоритм; а при помощи Run Вы запускаете само приложение, в целом.
По поводу Stacked Sequence Structure - советую почитать темы о стейт-машинах, их плюсах и минусах. При стейт машине, Вы можете определять переход между состояниями как угодно. А при Stacked Sequence Structure - порядок действий "захардкоден". Поэтому с точки зрения масштабирования приложения, Sequence Structure и не желательна, и ее рекомендуют использовать только в крайних случаях; ну или если алгоритм внутрии нее не будет никак изменяться.
Мы делили апельсин - много наших полегло...
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Оцените, знающие люди!!!

Сообщение Blackman »

AlexOskar писал(а):... Хочу чтобы этот алгоритм проверили на логичность последовательности выполнения операций и необходимость их проведения. Возможно там есть лишние проверки или не нужно отслеживание тайминга выполнения операций... Это основная причина моего обращения на форум....
Не зная протокола обмена девайса, оценивать Вашу реализацию протокола а-ля Modbus, что вилами по воде.) Если же сравнивать c режимом RTU протокола Modbus реализацию передачи запроса и приема ответа, то кроме алгоритма расчета контрольной суммы СRС-16 и смотреть больше нечего.
AlexOskar
user
user
Сообщения: 95
Зарегистрирован: 05 июл 2016, 21:02
Версия LabVIEW: 12
Контактная информация:

Re: Оцените, знающие люди!!!

Сообщение AlexOskar »

Ув. Kosist, подскажите как правильно сделать в моем vi кнопку ПУСК.
И вы еще упоминали, что при отсутствии COM-порта нужно будет перезапускать vi. Сегодня тестировал работу приложения в разных ситуациях и получилось слудующее: при подключении к ПК нового устройства USB-Serial мой vi зависает напрочь. Не помогает никакой перезапуск и рестарт LabView, а только перезагрузка ПК. В чем может быть причина и как это исправить?
Аватара пользователя
Kosist

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

Re: Оцените, знающие люди!!!

Сообщение Kosist »

По поводу кнопки Старт - можно сделать как-то так:
btn Start.PNG
Вариант не самый лучший, но при актуальной арихитектуре, должно работать. Т.е. Вы вначале делаете конфигурацию VISA портов и настроек, а потом жмете кнопку старт - цикл останавливается, и программа выполняется.
По поводу перезапуска компа - посмотрите, стоит ли у Вас в настройках :labview: галочка Automatically Close VISA Sessions.
Options.png
Почему виснет :vi: - увы, помочь не могу... У Вас основной цикл While Loop крутится со страшной скоростью (нужно внутрь поставить задержку)... Попробуйте посмотреть "под лампочкой" - может, где-то в каком-то цикле все виснет...
Мы делили апельсин - много наших полегло...
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Оцените, знающие люди!!!

Сообщение Blackman »

Ув. Kosist! Контролы с настройками должны быть внутри Loop.)
Аватара пользователя
Kosist

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

Re: Оцените, знающие люди!!!

Сообщение Kosist »

Blackman писал(а):Ув. Kosist! Контролы с настройками должны быть внутри Loop.)
Там цикл внутри цикла + еще несколько циклов. Думаю, что еще один цикл перед главным циклом картину не испортит :wink: Плюс такой подход - почти что стандартный в примерах от NI для RF библиотек (что странно однако, но факт).
Уважаемый Blackman, Вы же лучше меня знаете, что здесь без Producer-Consumer "кина не будет".
Мы делили апельсин - много наших полегло...
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Оцените, знающие люди!!!

Сообщение Blackman »

У Вас значения контролов уже во входных туннелях Loop. Их изменение ничего не даст. Data Flow.)
Вложения
settings.PNG
settings.PNG (25.45 КБ) 15067 просмотров
Аватара пользователя
Kosist

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

Re: Оцените, знающие люди!!!

Сообщение Kosist »

Blackman писал(а):У Вас значения контролов уже во входных туннелях Loop. Их изменение ничего не даст. Data Flow.)
А-а, вот оно что... Мда, пора на отдых... Спасибо, я не заметил... :thank:
Мы делили апельсин - много наших полегло...
AlexOskar
user
user
Сообщения: 95
Зарегистрирован: 05 июл 2016, 21:02
Версия LabVIEW: 12
Контактная информация:

Re: Оцените, знающие люди!!!

Сообщение AlexOskar »

Сообщение Blackman 26 ноя 2016, 15:36
Если по поводу BD, то на рис. как могло бы быть)
Что за BD использована? У меня таких иконок нет
Аватара пользователя
Kosist

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

Re: Оцените, знающие люди!!!

Сообщение Kosist »

AlexOskar писал(а):
Сообщение Blackman 26 ноя 2016, 15:36
Если по поводу BD, то на рис. как могло бы быть)
Что за BD использована? У меня таких иконок нет
Если я не ошибаюсь, то это библиотека для Modbus поновее - http://forums.ni.com/t5/NI-Labs-Toolkit ... -p/3524019 (в конце обсуждения есть vipm пакеты для установки).
Мы делили апельсин - много наших полегло...
Ответить

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