Передача значения каналу

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Автор
    Сообщения
  • #1930
    xarconen
    Участник

    Добрый день. Столкнулся с такой проблемой. Есть входной канал, от значения которого зависят параметры вычислений. Он должен принимать значения 1 и 0 и хранить их до следующего изменения. Как лучше реализовать этот момент? Пробовал добавить формулу которое возвращает нужное значение и запускать ее через канал управления, но что-то оно не заработало.

    #1932
    Mikhail
    Модератор

    Добрый день.
    Не совсем понял, что именно нужно сделать. Не могли бы расписать подробнее?

    #1933
    xarconen
    Участник

    Виноват. Имеется входной канал типа Дорасчетный ТИ, предполагается, что у канала может быть два значения 0 и 1. Если значение канала 0, выполняется одна последовательность действий, если 1 — соответственно другая. На мнемосхеме есть две кнопки, одна должна передать каналу значение 0, вторая значение 1. И вот тут с реализацией возникли проблемы. Пробовал создать два стандартных канала управления со значением выполнить и формулой On(207). Код формулы примерно такой: public double On(int OnChannel){return 1;}. Понимаю, что это неверно, но не могу понять, как оно должно быть.

    #1935
    Mikhail
    Модератор

    Напрямую записать из канала управления во входной канал нельзя, к сожалению.
    Рабочая идея следующая:
    1. Завести в таблице формул переменные или массив для хранения значений.
    2. По нажатию кнопки в канале управления записывать значение в эти переменные.
    3. Из входных дорасчётных каналов считывать переменные.
    (4. Выполнить действия в соответствии с командой управления.)

    Могу предложить разработать формулы на коммерческой основе, но не навязываю 🙂

    #1941
    xarconen
    Участник

    О. Точно же. Тогда возникает вопрос, как прописать в формулах переменную? Объявить массив достаточно просто public int[] N = new int[10000]; а как быть с переменной? можно конечно использовать для этих целей второй массив меньше размером, но это не слишком удобно.

    #1942
    Mikhail
    Модератор

    Синтаксис C#

    public int X = 1;
    
    #1943
    xarconen
    Участник

    Все, спасибо, разобрался. Последний вопрос, в документации указано, что возможно использование различных классов .Net, доступен ли класс system, а в частности функция random?

    #1944
    Mikhail
    Модератор

    System доступно и Random тоже.
    Код формул преобразуется в класс, который можно увидеть C:\SCADA\ScadaServer\Log\CalcEngine.cs

    #2163
    djbond07
    Участник

    Добрый день! Позвольте продолжить данную тему, так как занялся подобным вопросом.

    Вопрос такой. на схеме есть кнопка, по нажатию которой передаётся стандартная команда (откл-вкл) на канал. Как можно сделать так, чтобы при передаче каналу значения вкл, переменной присваивалось значение 1, а при передаче выкл — 0? Какую функцию использовать для этого в формуле? Или же нужно 2 кнопки, 2 команды и 2 формулы? по одной записываем 1 в переменную, а по другой 0?

    И по пункту 3. Как будет выглядеть формула примерно для считывания? я думаю что-то вроде
    public double Read()
    {
    int f=Man;
    return f;
    }

    Man — это как раз та переменная, где хранится значение.
    Я правильно понимаю?

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Вы должны авторизироваться для ответа в этой теме.