Управление двигателем пуск-стоп

Простейшие вопросы в области инженерной разработки
AlexOskar
user
user
Сообщения: 95
Зарегистрирован: 05 июл 2016, 21:02
Версия LabVIEW: 12
Контактная информация:

Управление двигателем пуск-стоп

Сообщение AlexOskar »

Доброго времени суток!
В систему сбора данных, созданную в LV, необходимо добавить блок управления двигателем ПУСК-СТОП. Двигателем управляет реле ОМ-310, связь по Modbus через COM порт.
Приложение уже непрерывно опрашивает ряд параметров у реле и выводит данные. Как сделать кнопки ПУСК и СТОП на лицевой панели, которы при нажатии на них будут отправлять однократный сигнал на реле через тот же порт без остановки программы? Нигде не могу найти пример. Это вообще возможно в LV?
(прошу строго не судить за ошибки....только начинаю изучать...)
Аватара пользователя
Jakob Brontfeyn

Activity Gold Silver Black
expert
expert
Сообщения: 1729
Зарегистрирован: 28 фев 2008, 11:01
Награды: 6
Благодарил (а): 1 раз
Контактная информация:

Re: Управление двигателем пуск-стоп

Сообщение Jakob Brontfeyn »

AlexOskar писал(а):Доброго времени суток!
В систему сбора данных, созданную в LV, необходимо добавить блок управления двигателем ПУСК-СТОП. Двигателем управляет реле ОМ-310, связь по Modbus через COM порт.
Приложение уже непрерывно опрашивает ряд параметров у реле и выводит данные. Как сделать кнопки ПУСК и СТОП на лицевой панели, которы при нажатии на них будут отправлять однократный сигнал на реле через тот же порт без остановки программы? Нигде не могу найти пример. Это вообще возможно в LV?
(прошу строго не судить за ошибки....только начинаю изучать...)
smotri primer
Вложения
pusk_stop.vi
(23.57 КБ) 111 скачиваний
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Управление двигателем пуск-стоп

Сообщение Borjomy_1 »

В базовом варианте примерно так.
Вложения
pusk_stop.vi
(23.97 КБ) 80 скачиваний
AlexOskar
user
user
Сообщения: 95
Зарегистрирован: 05 июл 2016, 21:02
Версия LabVIEW: 12
Контактная информация:

Re: Управление двигателем пуск-стоп

Сообщение AlexOskar »

Спасибо за варианты!
Borjomy_1, в Вашем варианте у меня не определились 2 элемента. Что там должно быть?
Вложения
пуск.jpg
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Управление двигателем пуск-стоп

Сообщение Borjomy_1 »

Это элементы библиотеки NI Modbus.llb, которые работают с MODBUS. Если интересно, то поищите на NI.com (не могу ее подцепить в сообщение, т.к. размер больше 2Мб)
AlexOskar
user
user
Сообщения: 95
Зарегистрирован: 05 июл 2016, 21:02
Версия LabVIEW: 12
Контактная информация:

Re: Управление двигателем пуск-стоп

Сообщение AlexOskar »

Разбирался сегодня с предложенными вариантами. Решения классные, я такого бы не сделал сам, спасибо. К сожалению, Ваш вариант, Borjomy_1, я не осилил. Не могу понять что за функции выполняют элементы. Может есть какая литература?
Но столкнулся с еще парочкой проблем и прошу помощи:
1. Не могу придумать как встроить отправку команд на пуск и остановку в имеющийся цикл опроса.
2. Приложение постоянно выполняет циклический опрос устройства и для срабатывания кнопок приходится удерживать их до тех пор, пока не придет их очередь. Время цикла порядка 16 секунд (много запросов) и это подбешивает. Можно ли сделать чтобы кнопка зажималась до первой сработки?

Кусок программы прикреплю к сообщению. Посмотрите пожалуйста опытным взглядом, может есть более простые и изящные решения для таких запросов-ответов.
Вложения
OM-310-2 - копия.vi
(30.37 КБ) 91 скачивание
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Управление двигателем пуск-стоп

Сообщение Borjomy_1 »

У вас там 3 запроса. Между прочим, предлагаемый мной вариант, с библиотекой позволяет читать несколько ячеек подряд, одним запросом. Выбор банков я вставил, поскольку неизвестно, к какому именно банку вы обращаетесь. Лишнее вполне можно удалить.
В вашем варианте кнопка стоп никогда не сможет сработать во внутреннем цикле. Ставьте ее во внутренний цикл, а результат транслируйте во внешний. Тем более, что он при таком построении программы работать не будет (нет условия выхода из внутреннего цикла и продолжения работы во внешнем)
Рекомендую все-таки освоить библиотеку. У вас абсолютно не предусмотрена обработка ошибок, и поэтому могут быть такие задержки в цикле - при непоступлении заданного количества байт (когда устройство выдает ошибку) ответа драйвер ждет таймаута, а он большой. Отсюда, кстати, может быть и такое недопустимо большое время цикла. Также операция CLR абсолютно бесполезна и алгоритмически является вредной. При правильной обработке вы должны явно вычитывать пакет.
Кроме того, есть маленькая тонкость в настройках системного драйвера (Панель управления/Диспетчер устройств/Порты COM/Com x/Свойства/Port Settings/Advanced...) выставьте размер приемного и передающего буферов в 1. Тогда уменьшится время задержки между приемом байта по порту и отдачей его в программу
AlexOskar
user
user
Сообщения: 95
Зарегистрирован: 05 июл 2016, 21:02
Версия LabVIEW: 12
Контактная информация:

Re: Управление двигателем пуск-стоп

Сообщение AlexOskar »

Спасибо за советы. Мне рекомендовали очищать порт перед записью в него нового запроса, поэтому везде CLR вставлены.
Я выложил лишь маленький фрагмент программы. Полная программа опрашивает 20 едениц оборудования по куче параметров, отсюда и продолжительность цикла.
Библиотеку я очень хочу освоить, но не могу найти ее описание.
Какую функцию выполняют эти банки?
И можно пример обработки ошибок?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Управление двигателем пуск-стоп

Сообщение Borjomy_1 »

Если у вас куча параметров, расположенная в близких ячейках, то стратегически более правильно забирать сразу массив, а не опрашивать каждую ячейку отдельно. Банк в терминах Modbus - это массив ячеек. Всего в стандарте modbus 4 банка. 2 банка (один только на чтение, другой на чтение-запись) размером ячейки 2 байта и два банка битовых. По стандарту размер банка 65536 ячеек, однако допустимо иметь не все ячейки.
Какое вам надо описание? Пример я вам дал. Параметр Quantity характеризует размер принимаемого массива, вам нужно правильно выбрать банк (из двух, я думаю, это будет несложно). Адрес устройства (а у вас их много) задается через переменную Serial Parameters/Slave Address
Обработку ошибок можно посмотреть в этих vi, которые производят чтение/запись в modbus
AlexOskar
user
user
Сообщения: 95
Зарегистрирован: 05 июл 2016, 21:02
Версия LabVIEW: 12
Контактная информация:

Re: Управление двигателем пуск-стоп

Сообщение AlexOskar »

А для запроса такого массива должна быть специальная команда? Это вообще распространяется на 8-битное общение?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Управление двигателем пуск-стоп

Сообщение Borjomy_1 »

А для запроса такого массива должна быть специальная команда?
естественно
Это вообще распространяется на 8-битное общение?
это распространяется на все транспортные протоколы Modbus
AlexOskar
user
user
Сообщения: 95
Зарегистрирован: 05 июл 2016, 21:02
Версия LabVIEW: 12
Контактная информация:

Re: Управление двигателем пуск-стоп

Сообщение AlexOskar »

Спасибо за совет с запросом массива данных. Сегодня удалось сократить запросы вполовину.
Но прошу еще немного помощи в настройке порта. За что отвечают подчеркнутые параметры и что настроить, чтобы было как на картнке?
Вложения
фрейм.jpg
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Управление двигателем пуск-стоп

Сообщение Borjomy_1 »

Если у вас программа под Labview работает, то ничего больше настраивать не нужно, большинство параметров на картинке дефолтные.
Кстати, для ускорения работы рекомендую ваши устройства перевести на более высокую скорость обмена (у вас 9600) - 57600 или 115200. Тогда интервалы обмена существенно уменьшатся.
AlexOskar
user
user
Сообщения: 95
Зарегистрирован: 05 июл 2016, 21:02
Версия LabVIEW: 12
Контактная информация:

Re: Управление двигателем пуск-стоп

Сообщение AlexOskar »

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

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

Re: Управление двигателем пуск-стоп

Сообщение dadreamer »

AlexOskar писал(а):Когда я запускаю свою программу, то у меня выдает параметры как на прилагаемой здесь картинке. Что нужно изменить, чтобы было так, как на картинке в моем предыдущем посте?
XOn Char, XOff Char и Replace Char можно выставить через Property Node:
2016-07-13_20-22-10.jpg
InSize и OutSize задаётся через VISA Set I/O Buffer Size (по дефолту 4096 байт на вход и на выход).
Shake, XOn Limit и XOff Limit в явном виде не задаётся, драйвер VISA должен сам управлять этими параметрами.
Ответить

Вернуться в «Для чайников»