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

Re: Пуск-стоп двигателя

Добавлено: 06 сен 2018, 17:03
Jakob Brontfeyn
Рекомендую заглянуть сюда, думаю очень может пригодиться

http://www.labviewportal.org/viewtopic. ... =45#p43928

Re: Пуск-стоп двигателя

Добавлено: 06 сен 2018, 17:11
mish17
Да,спасибо. Эту тему я прочитал-это подойдет для решения локальной задачи, но будет сложно использовать, когда потребуется задавать различные параметры с верхнего уровня.

Re: Пуск-стоп двигателя

Добавлено: 08 сен 2018, 18:32
mish17
Возвращаюсь к своему вопросу. В примере управление 2 насосами кнопками Пуск-Стоп(хочется, реализовать на паттерне Producer\Consumer). Каким образом добавить автоматический режим, чтобы при аварии первого включался второй и наоборот)- необходимо добавлять новые состояния у насосов? Хотя по логике у каждого насоса должны быть Остановлен, Разгон, Работа, Останов, Авария.

Re: Пуск-стоп двигателя

Добавлено: 08 сен 2018, 20:39
IvanLis
mish17 писал(а):Возвращаюсь к своему вопросу. В примере управление 2 насосами кнопками Пуск-Стоп(хочется, реализовать на паттерне Producer\Consumer). Каким образом добавить автоматический режим, чтобы при аварии первого включался второй и наоборот)- необходимо добавлять новые состояния у насосов? Хотя по логике у каждого насоса должны быть Остановлен, Разгон, Работа, Останов, Авария.
Ну...
Вы несколько упрощаете свою задачу и немного не верно понимаете данную модель программирования.
Например, по Вашей логике (классификации состояний), насос не может быть одновременно в Аварии и Останов, на самом деле это не так. Возможно Вы путаете действие (процесс - разгон, работа, торможение) и состояние (работоспособен/не работоспособен). Можно еще добавить пред аварийное состояние, например когда начинает расти температура насоса (двигателя) или потребляемый ток, т.е. он как-бы еще работает, но лучше переключиться на резерв.

Нужно четко расписать состояния, действия, команды и т.д.

Например для каждого насоса:
* состояния:
- работоспособен
- не работоспособен
- пред аварийное
* действия объекта:
- простой
- разгон
- нормальная работа
- торможение
* команды управления:
- старт
- стоп
- опрос датчиков
* события:
- старт насоса 1
- старт насоса 2
- стоп насоса 1
- стоп насоса 2
и т.д.

Продумать логику совместной работы насосов.
Могут ли они работать одновременно, например при аварии 1, начинается его торможение и сразу стартует 2. Или 1 должен дождаться, когда 2 выйдет в рабочий режим и только после этого начать торможение с плавной передачей нагрузки и без резких скачков давления.
Либо 2 стартует только после полной остановки 1.... и т.д. и т.п.

Потом разработать алгоритм работы, например
Инициализация
1.Определение текущего состояния (по идее датчиков должно быть больше)
- опрос датчика 1 насоса 1
- опрос датчика 2 насоса 1
- решение о состоянии насоса 1 (в зависимости от действия объекта)
- опрос датчика 1 насоса 2
- опрос датчика 2 насоса 2
- решение о состоянии насоса 2 (в зависимости от действия объекта)
- отображение текущего состояния (допустим для "действия"="простой" все сигналы в норме, присваивается обоим насосам "состояние"="работоспособен")
2. Ожидание (idle)
Допустим нажали кнопку запуска насоса 1, при этом генерируется событие "старт насоса 1". Совершаем над насосом 1 "действие"="разгон"
3. Разгон насоса
Для этого нужно знать оптимальные/предельные (кому как) значения скорость, ускорение, ну и для прошаренных - рывок.
В процессе разгона путем интегрирования рывка получаем ускорение, а из ускорения скорость, из скорости значение тока управления (или частоты, скважности и т.д. не знаю что у Вас), постоянно контролируя чтобы все значения не выходили за допустимые пределы.
- начальный момент I(t)=I(0)=0
- на следующем шаге (t+dt) все считаем и допустим получили I(t+dt)=0.3
- определение текущего состояния (при "действие"="разгон") и если "состояние"="работоспособен" продолжаем разгон (t+dt) иначе, например "состояние"="не работоспособен", "действие"="торможение"
И так пока не выведем его "действия объекта"="нормальная работа".
4. Нормальная работа
- вычисление управляющего воздействия для регулирования (на основании показания датчиков)
- определение текущего состояния (при "действие"="нормальная работа"). Если "состояние"="работоспособен" продолжаем "нормальная работа" иначе, например "состояние"="не работоспособен", "действие"="торможение"
5. Торможение
- аналогично разгону, только в обратную сторону

Потом уже продумывать события и логику работы, например при нажатии кнопки СТОП, мы определяем какого из насосов "действие"="разгон" или "нормальная работа" и генерируем соответствующее событие, например "стоп насоса 1". Возможно для обоих насосов. При этом для 1 насоса "состояние"="работоспособен", "действие"="торможение" и действуем по п.5.
И т.д. и т.п. :dance:

А уже потом начинаем программировать :rtfm: .

Вы сами осмыслите все, я не идеален, не всего знаю и это лишь мое первоначальное представление (с чего начинать, потом будет корректироваться и наращиваться), возможно у Вас будут дополнения и изменения.
Я немного отдохну, а то только с работы, устал как с... Позже постараюсь пример накидать. На самом деле не все так страшно, как кажется :wink:

Re: Пуск-стоп двигателя

Добавлено: 08 сен 2018, 20:49
mish17
Спасибо большое за разъяснение.Все оказывается намного сложнее и запутанне ,о чем не особо упоминается на семинарах про продвижению NI. Вроде бы задача очень несложная,но требует достаточно знаний по labview.

Re: Пуск-стоп двигателя

Добавлено: 08 сен 2018, 20:57
IvanLis
mish17 писал(а):Спасибо большое за разъяснение.Все оказывается намного сложнее и запутанне ,о чем не особо упоминается на семинарах про продвижению NI. Вроде бы задача очень несложная,но требует достаточно знаний по labview.
Мы еще :labview: не касались, это пока только для того чтобы весь процесс работы разбить на детерминированные шаги.
У Вас например двигатель не может сразу перейти с "0" на "5000" оборотов. По этому его нужно плавно разгонять.
Есть специальные платы для управления двигателями и toolkit, с ними все свелось бы к нескольким операциям. Все расчеты и действия с движками они сами выполняют (не явно для пользователя).
https://www.ni.com/labview/softmotion/

Re: Пуск-стоп двигателя

Добавлено: 08 сен 2018, 21:28
mish17
Вопрос не управлении двигателем конкретно, а в принципе построения программы на примере двигателей.вы очень точно описали,что я упрощаю и не верно понимаю модель программирования. Осмыслю Ваш ответ-попробую сделать на основе этих рекомендаций.

Re: Пуск-стоп двигателя

Добавлено: 10 сен 2018, 11:36
Borjomy_1
Уточню со своей стороны.
Обычно насосом работают с помощью не плат, но частотных преобразователей. Частотный преобразователь включает в себя процессор обработки логики управления и модели векторного управления, и силовую часть. Управление разгоном, реакция на ошибки и аварийные ситуации закладывается в частотный преобразователь. Для управления ЧП используются простые дискретные и аналоговые входы-выходы. Поэтому в модель управления закладывать разгоны-торможения не стоит. Более продвинутые ЧП дают возможность управления также по какому-нибудь стандартному интерфейсу - последовательный порт, Profibus, CAN- шина и прочее. Управление насосом - задача давно решенная и стандартное решение - именно частотный преобразователь.

Re: Пуск-стоп двигателя

Добавлено: 10 сен 2018, 12:01
mish17
Да,я понимаю,что ПЧ управляется посредством аналоговых,дискретных входов и т.п. IvanLis, ответил именно о том,что я хотел услышать.о модели построения программы.Т.е.подали какое воздействие-перешел в определенное состояние.Вопрос именно в том,как д надо контролировать сигнал включения устоойства в процесе,работы и торможения,а при разгоне и останове не отслеживать.

Re: Пуск-стоп двигателя

Добавлено: 14 сен 2018, 23:23
Select
Вполне решаемая задача на (ADC) шим микро контроллерах, можно и с обратной связью.
Покурите, если не лень, этот материал. Там есть очень ценное для Вас зерно.
Если будут конкретные вопросы, подскажу.

Re: Пуск-стоп двигателя

Добавлено: 15 сен 2018, 13:05
Andrew Lunev
Select, сколько можно бегать по старым темам и постить в них совершенно бредовые сообщения? Для чего вы это делаете? Набираете количество сообщений? Опять совершенно не по теме вопроса написали и это уже далеко не в первый раз!

Re: Пуск-стоп двигателя

Добавлено: 15 сен 2018, 16:57
Select
Andrew Lunev?,
сколько можно бегать по старым темам и постить в них совершенно бредовые сообщения? Для чего вы это делаете? Набираете количество сообщений? Опять совершенно не по теме вопроса написали и это уже далеко не в первый раз!
Сообщение mish17 10 сен 2018, 13:01
Все что не по теме, это Ваше личное мнение...