Всем Привет!
По работе появилась задачка, управление электроприводным многооборотным клапаном, который подключен к частотному преобразователю. Сама плата ввода/вывода подключена по каналу modbus tcp. Управление клапаном осуществляется с помощью двух дискретных выходов - "ход" и "реверс". Когда осуществляется закрытие - взведен только выход "ход", во время открытия - оба выхода "ход" и "реверс".
Состояние клапана контролируется отдельным vi-ем, который снимает задание при определенном сочетании четырех концевиков - двух ходовых (CloseP и OpenP) и двух моментных (CloseM и OpenM).
Для решения проблемы автоматического управления решил использовать switch-технологию, которая переключает режимы через иттератор.
Но увы - почему то не работает, понять не могу. При нажатии идет переключение иттератора на "двойку" при открытии, и на "пятерку" при закрытии. Но в структуре выборки (case) у меня идет присвоение иттератору "тройки" или "шестерки" соответственно, чтобы программа перешла на слежение за концевиками, но этого не происходит! Программа тупо виснет на процедуре старта и клапан, перекрутив все концевики, уходит в аварийный режим. Подскажите, что я делаю не так?
Управление задвижкой - не работает switch-технология.
-
- beginner
- Сообщения: 14
- Зарегистрирован: 14 окт 2016, 14:18
- Версия LabVIEW: 14
- Контактная информация:
Управление задвижкой - не работает switch-технология.
- Вложения
-
- Tester.vi
- Основная программа
- (77.55 КБ) 102 скачивания
-
- Valve Driver.vi
- Управление клапаном
- (32.28 КБ) 94 скачивания
-
Andrew Lunev
- VIP
- Сообщения: 957
- Зарегистрирован: 11 дек 2010, 12:31
- Награды: 2
- Версия LabVIEW: 2014-2021
- Откуда: Москва
- Благодарил (а): 4 раза
- Поблагодарили: 10 раз
Re: Управление задвижкой - не работает switch-технология.
Код даже проверять не хочу. У вас не соблюдается основной принцип программирования на Labview - принцип потока данных. Из-за этого вы совершенно не знаете какая часть кода будет выполнена в какой последовательности. Скорее всего в одном case пишете в переменную, а в другом параллельно читаете старое значение. Такой стиль программирования недопустим. Использовать переменные в Labview крайне нежелательно. Практически любой код можно переработать так, чтобы обойтись без переменных. Начните с чтения книги "Labview для всех".
В качестве примера картинка из курса Labview Core1. Из-за использования переменной возможно 4 варианта выполнения кода и какой будет в конкретной итерации заранее неизвестно. В вашей программе происходит что-то похожее.
В качестве примера картинка из курса Labview Core1. Из-за использования переменной возможно 4 варианта выполнения кода и какой будет в конкретной итерации заранее неизвестно. В вашей программе происходит что-то похожее.
-
Andrew Lunev
- VIP
- Сообщения: 957
- Зарегистрирован: 11 дек 2010, 12:31
- Награды: 2
- Версия LabVIEW: 2014-2021
- Откуда: Москва
- Благодарил (а): 4 раза
- Поблагодарили: 10 раз
Re: Управление задвижкой - не работает switch-технология.
Пример из вашей программы:
В этом варианте вы параллельно пишите в переменную true и false. В какой последовательности будет запись? Сначала 1 потом 2 или сначала 2 и потом 1? Никто не знает...
Из за этого на выходе неопределенность. И так у вас с большинством переменных.
В этом варианте вы параллельно пишите в переменную true и false. В какой последовательности будет запись? Сначала 1 потом 2 или сначала 2 и потом 1? Никто не знает...
Из за этого на выходе неопределенность. И так у вас с большинством переменных.
-
- beginner
- Сообщения: 14
- Зарегистрирован: 14 окт 2016, 14:18
- Версия LabVIEW: 14
- Контактная информация:
Re: Управление задвижкой - не работает switch-технология.
Здесь уже спросони забыл поставить структуру Case и FirstCall.Andrew Lunev писал(а):Пример из вашей программы:
В этом варианте вы параллельно пишите в переменную true и false. В какой последовательности будет запись? Сначала 1 потом 2 или сначала 2 и потом 1? Никто не знает...
Из за этого на выходе неопределенность. И так у вас с большинством переменных.
Сейчас вот почему то на вкладке K5 при нажатии открытия иттератор на миллисекунду меняет состояние и сбрасывает на ноль.
На K1 тишина при нажатии...
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Управление задвижкой - не работает switch-технология.
Рекомендую посмотреть сюда:
LabVIEW State Diagram Toolkit
https://forums.ni.com/t5/Reference-Desi ... -p/3606081
LabVIEW State Diagram Toolkit
https://forums.ni.com/t5/Reference-Desi ... -p/3606081
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Управление задвижкой - не работает switch-технология.
Не поленитесь изучить тулкит для решения ПЛК-шных задач в Лабвью
это почти Ваш пример, реализованный несколькими способами
http://www.labviewportal.org/viewtopic. ... =30#p43333
Отдельное описание
http://www.labviewportal.org/viewtopic. ... =30#p43117
это полный комплект с описанием и примерами
http://www.labviewportal.org/viewtopic. ... =45#p43928
это почти Ваш пример, реализованный несколькими способами
http://www.labviewportal.org/viewtopic. ... =30#p43333
Отдельное описание
http://www.labviewportal.org/viewtopic. ... =30#p43117
это полный комплект с описанием и примерами
http://www.labviewportal.org/viewtopic. ... =45#p43928
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 1 Ответы
- 139 Просмотры
-
Последнее сообщение Artem.spb