Тема / Topic: помогите реализовать управление кнопкой...
kurzaev
Junior Member / Новичок
Участник № / Member № 2922
отправлено / posted
Здравствуйте! Помогите ПЛЗ красиво реализовать следующий "винт": есть одна кнопка. мне нужно этой кнопкой переключать режимы работы... их всего три: "выключен", "автоматический режим", "ручной режим". для этого я выделил одну переменную типа "int" и соответственно мне нужно при каждом нажатии кнопки менять значения с 0 до 2 и далее, при каждом клике 0, 1, 2, 0, 1,...по циклу... и еще не маловажный момент... таких кнопок будет много... и не хотелось бы для кождой кнопки писать "индивидуальную" программу. Можно ли реализовать этот винт в пределах шаблона экрана?
Сообщения / Posts 19 | Из / From: РФ
| IP / IP: IP адрес / IP address |
Vladimir T.
Junior Member / Новичок
Участник № / Member № 2659
отправлено / posted
Здравствуйте! Думаю, другого варианта у Вас нет. Придётся добавлять при каждом нажатии "1" и написать программу, ОДНУ, в которой перечислить все аргументы состояний и обнулять каждый при достижении значения "3".
Сообщения / Posts 7 | Из / From: Россия
| IP / IP: IP адрес / IP address |
kurzaev
Junior Member / Новичок
Участник № / Member № 2922
отправлено / posted
дело в том, что я уже написал программку... но она почему то не работает... вот ее код: PROGRAM VAR_INOUT bSelect : INT; END_VAR VAR_INOUT rData : REAL; END_VAR VAR_INPUT rAData : REAL; END_VAR VAR_INPUT rMData : REAL; END_VAR VAR_INOUT ARG_000 : INT; END_VAR
case bSelect of 0: rData = 0; 1: rData = rAData; 2: rData = rMData; else bSelect=0; End_case;
END_PROGRAM в итоге (после привязки переменных) у меня не происходит инкримент переменной iSelect... может где нить закралась ошибка?
Сообщения / Posts 19 | Из / From: РФ
| IP / IP: IP адрес / IP address |
kurzaev
Junior Member / Новичок
Участник № / Member № 2922
Vladimir T.
Junior Member / Новичок
Участник № / Member № 2659
отправлено / posted
Может быть я Вас не правильно понял, но не проще ли выполнить этот "винт" следующим образом: 1. При каждом нажатии на кнопку к значению аргумента экрана добаляется "1" (функция "Передать значение", "Добавить"). 2. Тогда, текст программы (аргумент экрана bSelect):
PROGRAM VAR_INOUT bSelect : INT; END_VAR
if bSelect == 3 then bSelect = 0; end_if;
END_PROGRAM
Если же подкорректировать Вашу программу, то:
PROGRAM VAR_INOUT bSelect : INT; END_VAR
case bSelect of 0: bSelect = 0; 1: bSelect = 1; 2: bSelect = 2; else bSelect=0; End_case;
kurzaev
Junior Member / Новичок
Участник № / Member № 2922
отправлено / posted
нехочет ни в какую... :-( может я что не правильно делаю...? 1 создаю шаблон экрана с кнопкой и аргументом для нее. 2 создаю шаблон программы так же со своими аргументами. 3 переношу все в узел и делаю привязки... думаю в этом то и проблема... в привязках... получается, что привязав аргумент экрана к аргументу программы я лишаю возможности обновлять сам аргумент экрана... очевидно, что программа отрабатывает, как надо... а если делаю обновление экранного аргумента через постредника, то вообще инкремент не проходит, т.к. он затирается еще не сформировавшейся временной переменной... как быть?... "яду мне... яду."
Сообщения / Posts 19 | Из / From: РФ
| IP / IP: IP адрес / IP address |
kurzaev
Junior Member / Новичок
Участник № / Member № 2922
отправлено / posted
может если у Вас получилось (то есть очевидно, что я делаю что то не провильно) пришлите мне проект на il1@list.ru ПЛЗ...
Сообщения / Posts 19 | Из / From: РФ
| IP / IP: IP адрес / IP address |
M@V
Forum Professor / Завсегдатай форума
Участник № / Member № 1800
kurzaev
Junior Member / Новичок
Участник № / Member № 2922
отправлено / posted
Господа! огромное Вам спасибо! я понял в чем моя ошибка... я делал автоматические привязки аргументов после добавления шаблонов в узел... и уже потом привязывал каналы между собой... Еще раз огромное спасибо... Доброго Вам здоровья!!!
Сообщения / Posts 19 | Из / From: РФ
| IP / IP: IP адрес / IP address |