Оцените, знающие люди!!!
-
- user
- Сообщения: 95
- Зарегистрирован: 05 июл 2016, 21:02
- Версия LabVIEW: 12
- Контактная информация:
Оцените, знающие люди!!!
Под свои нужды расковырял библиотеку "nimodbus121" и сделал циклический опрос 2-х приборов. Нуждаюсь в редактуре. Может чего лишнего наделал или наоборот...
Лицевая панель не оформлена, т.к. планирую передавать данные в другое приложение через средства DSC модуля.
Сразу скажу, что использовать стандартный набор средств Модбас библиотеки не получится, т.к. команды нестандартные. Забирать информацию пакетом из всех ячеек тоже нельзя, т.к. потому что....
Лицевая панель не оформлена, т.к. планирую передавать данные в другое приложение через средства DSC модуля.
Сразу скажу, что использовать стандартный набор средств Модбас библиотеки не получится, т.к. команды нестандартные. Забирать информацию пакетом из всех ячеек тоже нельзя, т.к. потому что....
- Вложения
-
- Стабильный для счетчиков.vi
- (98.44 КБ) 232 скачивания
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Оцените, знающие люди!!!
А что Вы конкретно подразумеваете под алгоритмом? Процесс конвертации сообщения? Считывание сообщения?AlexOskar писал(а):Да не сыпь соль...) А так, по моему алгоритму, есть замечания?
Архитектура - наше все; не устану это повторять.
Как по мне, то во время разработки нужно спрашивать себя - насколько легко будет изменить приложение, если будут какие-то изменения то ли в требованиях заказчика, то ли в установке. И еще один вопрос, который нужно всегда держать в голове - сколько кода из данного приложения я смогу использовать еще раз в другом проекте.
Поэтому с этой точки зрения, архитектура - главная проблема Вашего приложения. Тем более, что в самом уже есть все шаблоны для проэктов - уже есть стартовая точка для разработки приложения с правильной архитектурой.
Например, много хардкода. Stacked Sequence Structure - зло, вместо нее лучше использовать стейт машину. Повторяющиеся куски кода, которые лучше запихать в subVI. Если com порт не будет присутствувать в системе, нужно будет остановить, и перезапустить приложение, т.к. элементарно нету кнопки Старт. Кстати, я не нашел там функции VISA Close - а ведь нужно правильно закрывать VISA сессию, иначе могут быть проблемы. И т.д., и т.п.
Такое делать можно для прототипирования, proof of concept. И то, нужно помнить, что в конце-концов этот proof of concept код будет далее использоваться в "боевом" приложении...
Ну, и непонятно, почему все-таки нельзя использовать либу от NI, как показал Blackman. Если Ваше устройство не поддерживает формат комманд Modbus, то тогда это и не Modbus вовсе; в мире коммуникационных протоколов все более-менее строго...
Конвертация данных - другое дело; но она не связан с опросом прибора на прямую. У меня тоже был случай, когда нужно было по особому парсить байты от прибора, но опрашивал я его стандартно... Хотя точно Ваш случай я не знаю, да и не нужно его знать - но все-таки не понятно, почему нельзя использовать либу от NI там...
Но можно следовать другой философии. "Работает? - Работает. - Ну вот и не трогай". Поэтому если работает - то , но вот оформление и построение программы я бы поменял обязательно...
Мы делили апельсин - много наших полегло...
-
- user
- Сообщения: 95
- Зарегистрирован: 05 июл 2016, 21:02
- Версия LabVIEW: 12
- Контактная информация:
Re: Оцените, знающие люди!!!
Kosist, спасибо за развернутый комментарий.
Под алгоритмом я понимаю порядок выполнения всех операций. Хочу чтобы этот алгоритм проверили на логичность последовательности выполнения операций и необходимость их проведения. Возможно там есть лишние проверки или не нужно отслеживание тайминга выполнения операций... Это основная причина моего обращения на форум.
Протокол обмена подозрительно похож на ModBus))), но все же это не он. Здесь Вы правы на 100%. VISA Close я обязательно добавлю, спасибо. В subVI запихну все сразу, как только получу одобрение на форуме)
Какая необходимость в кнопке СТАРТ, если на панели программы есть эта кнопка (белая стрелочка)?
Расскажите, пожалуйста, подробнее какие есть претензии к Stacked Sequence Structure. Я про это ничего пока не слышал.
Под алгоритмом я понимаю порядок выполнения всех операций. Хочу чтобы этот алгоритм проверили на логичность последовательности выполнения операций и необходимость их проведения. Возможно там есть лишние проверки или не нужно отслеживание тайминга выполнения операций... Это основная причина моего обращения на форум.
Протокол обмена подозрительно похож на ModBus))), но все же это не он. Здесь Вы правы на 100%. VISA Close я обязательно добавлю, спасибо. В subVI запихну все сразу, как только получу одобрение на форуме)
Какая необходимость в кнопке СТАРТ, если на панели программы есть эта кнопка (белая стрелочка)?
Расскажите, пожалуйста, подробнее какие есть претензии к Stacked Sequence Structure. Я про это ничего пока не слышал.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Оцените, знающие люди!!!
Когда Вы жмете белую стрелку (кнопку Run), VI сразу начинает выполнение. Но, в Вашем случае, нужно вначале выбрать VISA Com port, сделать настройки бауд рейт, и т.д. - и только после этого запускать виайку; что не есть хорошо - в любом приложении пользователь вначале запускает приложение, делает нужные конфигурации, и только потом происходит инициализации железа, и т.д. - возьмите, например, RealTerm, и т.д. Поэтому неплохо иметь кнопку Старт, которая будет собственно запускать сам алгоритм; а при помощи Run Вы запускаете само приложение, в целом.
По поводу Stacked Sequence Structure - советую почитать темы о стейт-машинах, их плюсах и минусах. При стейт машине, Вы можете определять переход между состояниями как угодно. А при Stacked Sequence Structure - порядок действий "захардкоден". Поэтому с точки зрения масштабирования приложения, Sequence Structure и не желательна, и ее рекомендуют использовать только в крайних случаях; ну или если алгоритм внутрии нее не будет никак изменяться.
По поводу Stacked Sequence Structure - советую почитать темы о стейт-машинах, их плюсах и минусах. При стейт машине, Вы можете определять переход между состояниями как угодно. А при Stacked Sequence Structure - порядок действий "захардкоден". Поэтому с точки зрения масштабирования приложения, Sequence Structure и не желательна, и ее рекомендуют использовать только в крайних случаях; ну или если алгоритм внутрии нее не будет никак изменяться.
Мы делили апельсин - много наших полегло...
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Оцените, знающие люди!!!
Не зная протокола обмена девайса, оценивать Вашу реализацию протокола а-ля Modbus, что вилами по воде.) Если же сравнивать c режимом RTU протокола Modbus реализацию передачи запроса и приема ответа, то кроме алгоритма расчета контрольной суммы СRС-16 и смотреть больше нечего.AlexOskar писал(а):... Хочу чтобы этот алгоритм проверили на логичность последовательности выполнения операций и необходимость их проведения. Возможно там есть лишние проверки или не нужно отслеживание тайминга выполнения операций... Это основная причина моего обращения на форум....
-
- user
- Сообщения: 95
- Зарегистрирован: 05 июл 2016, 21:02
- Версия LabVIEW: 12
- Контактная информация:
Re: Оцените, знающие люди!!!
Ув. Kosist, подскажите как правильно сделать в моем vi кнопку ПУСК.
И вы еще упоминали, что при отсутствии COM-порта нужно будет перезапускать vi. Сегодня тестировал работу приложения в разных ситуациях и получилось слудующее: при подключении к ПК нового устройства USB-Serial мой vi зависает напрочь. Не помогает никакой перезапуск и рестарт LabView, а только перезагрузка ПК. В чем может быть причина и как это исправить?
И вы еще упоминали, что при отсутствии COM-порта нужно будет перезапускать vi. Сегодня тестировал работу приложения в разных ситуациях и получилось слудующее: при подключении к ПК нового устройства USB-Serial мой vi зависает напрочь. Не помогает никакой перезапуск и рестарт LabView, а только перезагрузка ПК. В чем может быть причина и как это исправить?
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Оцените, знающие люди!!!
По поводу кнопки Старт - можно сделать как-то так:
По поводу перезапуска компа - посмотрите, стоит ли у Вас в настройках галочка Automatically Close VISA Sessions. Почему виснет - увы, помочь не могу... У Вас основной цикл While Loop крутится со страшной скоростью (нужно внутрь поставить задержку)... Попробуйте посмотреть "под лампочкой" - может, где-то в каком-то цикле все виснет...
Вариант не самый лучший, но при актуальной арихитектуре, должно работать. Т.е. Вы вначале делаете конфигурацию VISA портов и настроек, а потом жмете кнопку старт - цикл останавливается, и программа выполняется.По поводу перезапуска компа - посмотрите, стоит ли у Вас в настройках галочка Automatically Close VISA Sessions. Почему виснет - увы, помочь не могу... У Вас основной цикл While Loop крутится со страшной скоростью (нужно внутрь поставить задержку)... Попробуйте посмотреть "под лампочкой" - может, где-то в каком-то цикле все виснет...
Мы делили апельсин - много наших полегло...
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Оцените, знающие люди!!!
Там цикл внутри цикла + еще несколько циклов. Думаю, что еще один цикл перед главным циклом картину не испортит Плюс такой подход - почти что стандартный в примерах от NI для RF библиотек (что странно однако, но факт).Blackman писал(а):Ув. Kosist! Контролы с настройками должны быть внутри Loop.)
Уважаемый Blackman, Вы же лучше меня знаете, что здесь без Producer-Consumer "кина не будет".
Мы делили апельсин - много наших полегло...
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Оцените, знающие люди!!!
У Вас значения контролов уже во входных туннелях Loop. Их изменение ничего не даст. Data Flow.)
- Вложения
-
- settings.PNG (25.45 КБ) 15185 просмотров
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Оцените, знающие люди!!!
А-а, вот оно что... Мда, пора на отдых... Спасибо, я не заметил...Blackman писал(а):У Вас значения контролов уже во входных туннелях Loop. Их изменение ничего не даст. Data Flow.)
Мы делили апельсин - много наших полегло...
-
- user
- Сообщения: 95
- Зарегистрирован: 05 июл 2016, 21:02
- Версия LabVIEW: 12
- Контактная информация:
Re: Оцените, знающие люди!!!
Что за BD использована? У меня таких иконок нетСообщение Blackman 26 ноя 2016, 15:36
Если по поводу BD, то на рис. как могло бы быть)
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Оцените, знающие люди!!!
Если я не ошибаюсь, то это библиотека для Modbus поновее - http://forums.ni.com/t5/NI-Labs-Toolkit ... -p/3524019 (в конце обсуждения есть vipm пакеты для установки).AlexOskar писал(а):Что за BD использована? У меня таких иконок нетСообщение Blackman 26 ноя 2016, 15:36
Если по поводу BD, то на рис. как могло бы быть)
Мы делили апельсин - много наших полегло...