Управление задвижкой - не работает switch-технология.

Простейшие вопросы в области инженерной разработки

Управление задвижкой - не работает switch-технология.

Postby Anton.M on 18 Aug 2017, 00:21

Всем Привет!

По работе появилась задачка, управление электроприводным многооборотным клапаном, который подключен к частотному преобразователю. Сама плата ввода/вывода подключена по каналу modbus tcp. Управление клапаном осуществляется с помощью двух дискретных выходов - "ход" и "реверс". Когда осуществляется закрытие - взведен только выход "ход", во время открытия - оба выхода "ход" и "реверс".
Состояние клапана контролируется отдельным vi-ем, который снимает задание при определенном сочетании четырех концевиков - двух ходовых (CloseP и OpenP) и двух моментных (CloseM и OpenM).
Для решения проблемы автоматического управления решил использовать switch-технологию, которая переключает режимы через иттератор.
Но увы - почему то не работает, понять не могу. При нажатии идет переключение иттератора на "двойку" при открытии, и на "пятерку" при закрытии. Но в структуре выборки (case) у меня идет присвоение иттератору "тройки" или "шестерки" соответственно, чтобы программа перешла на слежение за концевиками, но этого не происходит! Программа тупо виснет на процедуре старта и клапан, перекрутив все концевики, уходит в аварийный режим. Подскажите, что я делаю не так?
Attachments
Tester.vi
Основная программа
(77.55 KiB) Downloaded 19 times
Valve Driver.vi
Управление клапаном
(32.28 KiB) Downloaded 17 times
Anton.M
beginner
beginner
 
Posts: 12
Joined: 14 Oct 2016, 14:18
LabVIEW Version: 14
Karma: 0

Re: Управление задвижкой - не работает switch-технология.

Postby Andrew Lunev on 18 Aug 2017, 02:52

Код даже проверять не хочу. У вас не соблюдается основной принцип программирования на Labview - принцип потока данных. Из-за этого вы совершенно не знаете какая часть кода будет выполнена в какой последовательности. Скорее всего в одном case пишете в переменную, а в другом параллельно читаете старое значение. Такой стиль программирования недопустим. Использовать переменные в Labview крайне нежелательно. Практически любой код можно переработать так, чтобы обойтись без переменных. Начните с чтения книги "Labview для всех".

В качестве примера картинка из курса Labview Core1. Из-за использования переменной возможно 4 варианта выполнения кода и какой будет в конкретной итерации заранее неизвестно. В вашей программе происходит что-то похожее.
Attachments
val.PNG
User avatar
Andrew Lunev
leader
leader
 
Posts: 850
Joined: 11 Dec 2010, 12:31
Location: Москва
Medals: 2
Activity (1) Professionalism (1)
LabVIEW Version: 2016
Karma: 244
hardware I/O VIP teachers

Re: Управление задвижкой - не работает switch-технология.

Postby Andrew Lunev on 18 Aug 2017, 03:00

Пример из вашей программы:
В этом варианте вы параллельно пишите в переменную true и false. В какой последовательности будет запись? Сначала 1 потом 2 или сначала 2 и потом 1? Никто не знает...
Из за этого на выходе неопределенность. И так у вас с большинством переменных.
Attachments
val2.PNG
User avatar
Andrew Lunev
leader
leader
 
Posts: 850
Joined: 11 Dec 2010, 12:31
Location: Москва
Medals: 2
Activity (1) Professionalism (1)
LabVIEW Version: 2016
Karma: 244
hardware I/O VIP teachers

Re: Управление задвижкой - не работает switch-технология.

Postby Anton.M on 18 Aug 2017, 08:32

Andrew Lunev wrote:Пример из вашей программы:
В этом варианте вы параллельно пишите в переменную true и false. В какой последовательности будет запись? Сначала 1 потом 2 или сначала 2 и потом 1? Никто не знает...
Из за этого на выходе неопределенность. И так у вас с большинством переменных.

Здесь уже спросони забыл поставить структуру Case и FirstCall.

Сейчас вот почему то на вкладке K5 при нажатии открытия иттератор на миллисекунду меняет состояние и сбрасывает на ноль.
На K1 тишина при нажатии...
Anton.M
beginner
beginner
 
Posts: 12
Joined: 14 Oct 2016, 14:18
LabVIEW Version: 14
Karma: 0

Re: Управление задвижкой - не работает switch-технология.

Postby Blackman on 18 Aug 2017, 08:59

Рекомендую посмотреть сюда:
LabVIEW State Diagram Toolkit
https://forums.ni.com/t5/Reference-Desi ... -p/3606081
Blackman
leader
leader
 
Posts: 671
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 166

Re: Управление задвижкой - не работает switch-технология.

Postby Jakob Brontfeyn on 18 Aug 2017, 11:49

Не поленитесь изучить тулкит для решения ПЛК-шных задач в Лабвью

это почти Ваш пример, реализованный несколькими способами
viewtopic.php?f=179&t=4673&start=30#p43333

Отдельное описание
viewtopic.php?f=179&t=4673&start=30#p43117

это полный комплект с описанием и примерами
viewtopic.php?f=179&t=4673&start=45#p43928
User avatar
Jakob Brontfeyn
expert
expert
 
Posts: 1679
Joined: 28 Feb 2008, 11:01
Medals: 6
Activity (1) Gold (1) Silver (2) Black (2)
Karma: 225
VIP


Return to Для чайников

Who is online

Users browsing this forum: Google and 13 guests

cron