Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Передача значения каналу
- В этой теме 8 ответов, 3 участника, последнее обновление 7 лет, 11 месяцев назад сделано djbond07.
-
АвторСообщения
-
31.03.2016 в 14:23 #1930xarconenУчастник
Добрый день. Столкнулся с такой проблемой. Есть входной канал, от значения которого зависят параметры вычислений. Он должен принимать значения 1 и 0 и хранить их до следующего изменения. Как лучше реализовать этот момент? Пробовал добавить формулу которое возвращает нужное значение и запускать ее через канал управления, но что-то оно не заработало.
31.03.2016 в 15:11 #1932MikhailМодераторДобрый день.
Не совсем понял, что именно нужно сделать. Не могли бы расписать подробнее?31.03.2016 в 17:44 #1933xarconenУчастникВиноват. Имеется входной канал типа Дорасчетный ТИ, предполагается, что у канала может быть два значения 0 и 1. Если значение канала 0, выполняется одна последовательность действий, если 1 — соответственно другая. На мнемосхеме есть две кнопки, одна должна передать каналу значение 0, вторая значение 1. И вот тут с реализацией возникли проблемы. Пробовал создать два стандартных канала управления со значением выполнить и формулой On(207). Код формулы примерно такой: public double On(int OnChannel){return 1;}. Понимаю, что это неверно, но не могу понять, как оно должно быть.
31.03.2016 в 20:22 #1935MikhailМодераторНапрямую записать из канала управления во входной канал нельзя, к сожалению.
Рабочая идея следующая:
1. Завести в таблице формул переменные или массив для хранения значений.
2. По нажатию кнопки в канале управления записывать значение в эти переменные.
3. Из входных дорасчётных каналов считывать переменные.
(4. Выполнить действия в соответствии с командой управления.)Могу предложить разработать формулы на коммерческой основе, но не навязываю 🙂
01.04.2016 в 13:00 #1941xarconenУчастникО. Точно же. Тогда возникает вопрос, как прописать в формулах переменную? Объявить массив достаточно просто public int[] N = new int[10000]; а как быть с переменной? можно конечно использовать для этих целей второй массив меньше размером, но это не слишком удобно.
01.04.2016 в 14:32 #1942MikhailМодераторСинтаксис C#
public int X = 1;
02.04.2016 в 05:52 #1943xarconenУчастникВсе, спасибо, разобрался. Последний вопрос, в документации указано, что возможно использование различных классов .Net, доступен ли класс system, а в частности функция random?
02.04.2016 в 10:44 #1944MikhailМодераторSystem доступно и Random тоже.
Код формул преобразуется в класс, который можно увидеть C:\SCADA\ScadaServer\Log\CalcEngine.cs25.05.2016 в 16:26 #2163djbond07УчастникДобрый день! Позвольте продолжить данную тему, так как занялся подобным вопросом.
Вопрос такой. на схеме есть кнопка, по нажатию которой передаётся стандартная команда (откл-вкл) на канал. Как можно сделать так, чтобы при передаче каналу значения вкл, переменной присваивалось значение 1, а при передаче выкл — 0? Какую функцию использовать для этого в формуле? Или же нужно 2 кнопки, 2 команды и 2 формулы? по одной записываем 1 в переменную, а по другой 0?
И по пункту 3. Как будет выглядеть формула примерно для считывания? я думаю что-то вроде
public double Read()
{
int f=Man;
return f;
}Man — это как раз та переменная, где хранится значение.
Я правильно понимаю? -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.