Написание программы с простой логикой

Стартовая страница Форумы Понять, как работает ПО Использование формул Написание программы с простой логикой

Просмотр 15 сообщений - с 31 по 45 (из 55 всего)
  • Автор
    Сообщения
  • #1486
    Evgen
    Участник

    и какой тип канала необходимо создать?

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

    Чтобы «установить» значение канала из формулы, невозможно его так присвоить Val(100) = N. Нужно, чтобы формула для этого канала вернула нужное значение: return N. И затем использовать эту формулу в канале.
    Тип канала — дорасчётный ТИ.

    #1490
    Evgen
    Участник

    Здравствуйте!
    я хочу входные каналы присвоить массиву
    и затем после обработки вывести данные в скаде.
    // присвоение массиву значение каналов
    public double[] VremayRab()
    {
    double[] VremayRab = new double [30];
    foreach (int i in VremayRab)
    {
    VremayRab[CnlNum + i] = Val(274 + i);

    }
    return VremayRab;
    }
    // далее я создал дорасчётный ТИ
    и как этому каналу присвоить значение из массива?
    и как часто будут обновятся данные?(так же как и с ПЛК или будет временная задержка?)

    #1491
    Evgen
    Участник

    я перепробовал записать в столбце формула разными способами

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

    Создавать массив VremayRab нужно в виде отдельной формулы.
    Формула для вычисления значения канала должна возвращать double.

    Я бы рекомендовал заказать разработку нужных формул, потому что это значительно сэкономит Ваше время. По крайней мере в 1-й раз, а далее по аналоги уже будет проще создать новые формулы самостоятельно.

    #1493
    Evgen
    Участник

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

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

    Да, конечно. Но Ваша идея по поводу обучения лучше всего.

    #1517
    Evgen
    Участник

    Как из канала управления присвоить значение входному каналу?
    (не передавая его в плк или другое устройство)

    #1519
    Evgen
    Участник

    Вот я возвращаю каналу значение другого канала,
    public double InputChannels(int dependOnCnl)
    {
    return Val(dependOnCnl);
    }

    как задать похожую функцию что бы возвращать входному каналу значение канала управления

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

    Создайте 3 разных формулы: CnlValDict, CnlValGet и CnlValSet

    public Dictionary<int, double> CnlValDict = new Dictionary<int, double>();
    
    public double CnlValGet(int cnlNum)
    {
        double val;
        return CnlValDict.TryGetValue(cnlNum, out val) ?
            val : Val(cnlNum);
    }
    
    public double CnlValSet(int cnlNum)
    {
        CnlValDict[cnlNum] = Cmd;
        return double.NaN;
    }
    

    В формуле канала управления используйте CnlValSet, а в формуле входного канала CnlValGet. Параметр формул — номер входного канала. Тип входных каналов — дорасчётный ТИ.

    #1521
    Evgen
    Участник

    Спасибо работает!

    такой вопрос
    что означает:
    в канале управления: тип команды
    и какая разница между Часов ТИ и часовой ТС
    дорасчетный ТИ дорасчетный ТС?

    #1522
    Evgen
    Участник

    public int RepairTime(int dependOnCnl, int cnlNum)
    {
    if (Val(dependOnCnl) >= Val(cnlNum))
    {
    return 0;
    }
    return 1;
    }
    эта функция сравнивает 2 канала.
    как сюда добавить обнуление канала (Val(dependOnCnl))»или вернуть значение 0″
    если ввели команду в определенном канале управления.

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

    Канал типа ТИ отображается как число. ТС — перечислимое значение, например, Вкл и Откл.

    Чтобы в формула устанавливала значение канала, она должна возвращать это значение. Формула должна использоваться для канала Дорасчётный ТИ (или ТС).

    #1524
    Evgen
    Участник

    Здравствуйте!
    я написал функцию
    public double VremyaRab(int CnlNumI, bool CnlNumBut) //время работы привода с током CnlNumI и кнопкой CnlNumBut
    {
    bool m = MinuteBeg(); //начало новой минуты
    double V = Val(CnlNum); //текущее время работы
    if (m) //если начало новой минуты
    {
    if (Val(CnlNumI) > 1) //если ток привода больше нуля
    {
    V++;
    }
    }
    if (Val(CnlNumBut) == true)
    {
    V = 0;
    }
    return V;
    }

    Вопрос как добавить кнопку( 2 значения true false) в визуализацию
    кнопка нажата true не нажата false.
    и привязать канал управления в мою функцию

    #1525
    Evgen
    Участник

    удалось реализовать следующим образом
    канал управления Тип стандартный значение откл-вкл
    и присвоил значение канала упр входному.
    но приходится нажимать 2 раза что бы канал вернулся в исходное состояние
    это не удобно

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