This is topic помогите реализовать управление кнопкой... in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/000384.html

Posted by kurzaev (Участник № / Member № 2922) on :
 
Здравствуйте! Помогите ПЛЗ красиво реализовать следующий "винт":
есть одна кнопка. мне нужно этой кнопкой переключать режимы работы... их всего три: "выключен", "автоматический режим", "ручной режим". для этого я выделил одну переменную типа "int" и соответственно мне нужно при каждом нажатии кнопки менять значения с 0 до 2 и далее, при каждом клике 0, 1, 2, 0, 1,...по циклу...
и еще не маловажный момент... таких кнопок будет много... и не хотелось бы для кождой кнопки писать "индивидуальную" программу. Можно ли реализовать этот винт в пределах шаблона экрана?
 
Posted by Vladimir T. (Участник № / Member № 2659) on :
 
Здравствуйте!
Думаю, другого варианта у Вас нет. Придётся добавлять при каждом нажатии "1" и написать программу, ОДНУ, в которой перечислить все аргументы состояний и обнулять каждый при достижении значения "3".
 
Posted by kurzaev (Участник № / Member № 2922) on :
 
дело в том, что я уже написал программку... но она почему то не работает...
вот ее код:
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...
может где нить закралась ошибка?
 
Posted by kurzaev (Участник № / Member № 2922) on :
 
если укажете почтовый ящик, вышлю сам проект...
 
Posted by Vladimir T. (Участник № / Member № 2659) on :
 
Может быть я Вас не правильно понял, но не проще ли выполнить этот "винт" следующим образом:
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;

END_PROGRAM
 
Posted by kurzaev (Участник № / Member № 2922) on :
 
спасибо, щас попробую...
 
Posted by kurzaev (Участник № / Member № 2922) on :
 
нехочет ни в какую... :-(
может я что не правильно делаю...?
1 создаю шаблон экрана с кнопкой и аргументом для нее.
2 создаю шаблон программы так же со своими аргументами.
3 переношу все в узел и делаю привязки...
думаю в этом то и проблема... в привязках... получается, что привязав аргумент экрана к аргументу программы я лишаю возможности обновлять сам аргумент экрана... очевидно, что программа отрабатывает, как надо... а если делаю обновление экранного аргумента через постредника, то вообще инкремент не проходит, т.к. он затирается еще не сформировавшейся временной переменной...
как быть?... "яду мне... яду."
 
Posted by kurzaev (Участник № / Member № 2922) on :
 
может если у Вас получилось (то есть очевидно, что я делаю что то не провильно) пришлите мне проект на il1@list.ru ПЛЗ...
 
Posted by M@V (Участник № / Member № 1800) on :
 
Отослал на мыло.
 
Posted by kurzaev (Участник № / Member № 2922) on :
 
Господа! огромное Вам спасибо! я понял в чем моя ошибка... я делал автоматические привязки аргументов после добавления шаблонов в узел... и уже потом привязывал каналы между собой...
Еще раз огромное спасибо... Доброго Вам здоровья!!!
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2