iamdmitry
Junior Member / Новичок
Участник № / Member № 8063
отправлено / posted
Здравствуйте! Нужна ваша помощь. Есть проект (система смешивания твердых отходов), в нем кнопками задается исходное количество каждого из трех компонентов и три числа, которые суммируются и по отдельности вычитаются из исходных. Написана программа, в которой прописаны эти действия. На экране размещена кнопка на запуск, из неё «1» передаётся напрямую в условие программы, которое выполняется. Проблема вот в чём: программа выполняется один раз и после этого кнопка не срабатывает, а мне надо, чтобы числа, появившиеся после действий, дальше суммировались и вычитались каждый раз по нажатию кнопки до исчерпания одного из компонентов. Пробовал вызывать программу через атрибут 39 канала CALL типа Output, реакции не последовало. Заранее большое спасибо!
if Пуск==1 then Сумма=Компонент_A+Компонент_B+Компонент_C; Результат_компонент_A=Уровень_компонента_A-Компонент_A; Результат_компонент_B=Уровень_компонента_B-Компонент_B; Результат_компонент_C=Уровень_компонента_C-Компонент_C; Пуск=0; end_if;
Сообщения / Posts 5 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Если программа должна отрабатывать однократно по нажатию кнопки на экране, надо запускать программу по команде кнопки "ВЫПОЛНИТЬ" (см. свойства ГЭ "Кнопка").
При этом программа должна вызываться каналом CALL типа OUT.
iamdmitry
Junior Member / Новичок
Участник № / Member № 8063
отправлено / posted
Не работает. Может, что-то не так сделал: в кнопке ГЭ теперь по нажатию стоит команда "Выполнить", выбрана программа для выполнения. В разделе "Каналы" создан класс CALL типа Out, тип вызова Program, привязка к реальному значению программы, все остальные параметры по умолчанию. В итоге программа запускается сразу при запуске в профайлере и отображает данные сразу после ввода, нажатие на кнопку запуска программы ничего не даёт.
Сообщения / Posts 5 | Из / From: Россия
| IP / IP: IP адрес / IP address |
iamdmitry
Junior Member / Новичок
Участник № / Member № 8063
отправлено / posted
Во флагах программы установил флажок "Тип Output", теперь программа запускается по нажатию кнопки, но только один раз, повторное нажатие опять ни к чему не приводит. Мне же требуется, чтобы на каждое нажатие производились действия из программы с обновляемыми данными (то есть сумма от нажатия к нажатию должна расти, количество компонента в каждом резервуаре уменьшаться и т.д.).
Сообщения / Posts 5 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
Зачем Результат_компонент_X ??? Сумма & Пуск - VAR_INOUT if (Пуск) { summa = Уровень_компонента_X = Уровень_компонента_X - X; Пуск = 0; }
Сообщения / Posts 879 | Из / From: Россия
| IP / IP: IP адрес / IP address |
iamdmitry
Junior Member / Новичок
Участник № / Member № 8063
отправлено / posted
Тогда не отображается на экране результат вычитания, введенный с клавиатуры уровень (Уровень_компонента_X) остается неизменным. И по-прежнему остается проблема с однократным срабатыванием кнопки запуска программы.
Сообщения / Posts 5 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
Результат_компонент_X ??? зачем он нужен. должен меняться уровень -> компонент же использован
Сообщения / Posts 879 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
if Пуск==1 then Сумма=Компонент_A+Компонент_B+Компонент_C; Уровень_компонента_A=Уровень_компонента_A-Компонент_A; Уровень_компонента_B=Уровень_компонента_B-Компонент_B; Уровень_компонента_C=Уровень_компонента_C-Компонент_C; Пуск=0; end_if;
Сообщения / Posts 879 | Из / From: Россия
| IP / IP: IP адрес / IP address |
iamdmitry
Junior Member / Новичок
Участник № / Member № 8063
отправлено / posted
Моя ошибка, перепривязал аргументы программы к аргументам экрана и, действительно, уровень стал понижаться! Спасибо! Первоначально сумма не изменялась при повторном нажатии, только при изменении аргумента компонента. Решил добавлением аргумента суммы в выражение: Сумма=Сумма+Компонент_A+Компонент_B+Компонент_C; Вдруг кому поможет!
Сообщения / Posts 5 | Из / From: Россия
| IP / IP: IP адрес / IP address |