Страница 1 из 1

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

Добавлено: 25 ноя 2016, 16:44
AlexOskar
Под свои нужды расковырял библиотеку "nimodbus121" и сделал циклический опрос 2-х приборов. Нуждаюсь в редактуре. Может чего лишнего наделал или наоборот...
Лицевая панель не оформлена, т.к. планирую передавать данные в другое приложение через средства DSC модуля.
Сразу скажу, что использовать стандартный набор средств Модбас библиотеки не получится, т.к. команды нестандартные. Забирать информацию пакетом из всех ячеек тоже нельзя, т.к. потому что....

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

Добавлено: 26 ноя 2016, 15:36
Blackman
Если по поводу BD, то на рис. как могло бы быть)

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

Добавлено: 26 ноя 2016, 23:06
AlexOskar
Да не сыпь соль...) А так, по моему алгоритму, есть замечания?

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

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

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

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

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

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

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

Добавлено: 27 ноя 2016, 23:31
Blackman
AlexOskar писал(а):... Хочу чтобы этот алгоритм проверили на логичность последовательности выполнения операций и необходимость их проведения. Возможно там есть лишние проверки или не нужно отслеживание тайминга выполнения операций... Это основная причина моего обращения на форум....
Не зная протокола обмена девайса, оценивать Вашу реализацию протокола а-ля Modbus, что вилами по воде.) Если же сравнивать c режимом RTU протокола Modbus реализацию передачи запроса и приема ответа, то кроме алгоритма расчета контрольной суммы СRС-16 и смотреть больше нечего.

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

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

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

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

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

Добавлено: 28 ноя 2016, 23:23
Blackman
Ув. Kosist! Контролы с настройками должны быть внутри Loop.)

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

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

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

Добавлено: 28 ноя 2016, 23:53
Blackman
У Вас значения контролов уже во входных туннелях Loop. Их изменение ничего не даст. Data Flow.)

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

Добавлено: 28 ноя 2016, 23:58
Kosist
Blackman писал(а):У Вас значения контролов уже во входных туннелях Loop. Их изменение ничего не даст. Data Flow.)
А-а, вот оно что... Мда, пора на отдых... Спасибо, я не заметил... :thank:

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

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

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

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