fergus2022

Ответы в темах

Просмотр 15 сообщений - с 91 по 105 (из 135 всего)
  • Автор
    Записи
  • fergus2022
    Участник

    Всё увидел, разобрался, отобразилось, спасибо )

    fergus2022
    Участник

    Пытаюсь как то так:

    public double MyChoise(double perech)
    {
    double val = 0;
    string text = "";
    if (perech == 0) val = Val(101); text = "Температура";
    else if (perech == 1) val = Val(102);
    else if (perech == 2) val = Val(103);
    return val;
    return text;
    }

    И у переменной для отображения ставлю формат «Текстовый ASCII» и формулу MyChoise(textl(104)), но это не работает (

    fergus2022
    Участник

    Еще вопрос, как в переменную вывести выбранное значение из test_choise ? что бы была надпись типа: Канал 1 выбрано «Температура»

    fergus2022
    Участник

    Появилось окно с выбором темп. давл. расх., значение выбора канала прилетает в виртуальную переменную — вобщем заработало ! Огромное спасибо ! Далее по аналогии буду делать. Еще подскажите пожалуйста, для чего в интерфейсе можно создать файл формата .xml ?

    • Ответ изменён 3 года, 12 месяцев назад пользователем fergus2022.
    fergus2022
    Участник

    Для этого же канала создать канал управления и в нем так же выбрать формат Перечисление и в формулу добавить SetVal(канал, Cmd)

    В канале управления нету колонки «Формат», как выбрать формат Перечисления ?
    >скриншот<

    fergus2022
    Участник

    В таблице входные каналы у perech нашел формат: «текст перечисления» — то что нужно ?

    • Ответ изменён 3 года, 12 месяцев назад пользователем fergus2022.
    fergus2022
    Участник

    выбора Температура, Давление, Расход — это надо добавить в таблицу перечислений по примерам из нее и указать в этом канале формат — Перечисления

    Где тут таблица перечислений ? >скриншот<

    • Ответ изменён 3 года, 12 месяцев назад пользователем fergus2022.
    fergus2022
    Участник

    ну так присвойте значение — double ret = 0;

    Сервер и коммуникатор запустились.

    • Ответ изменён 3 года, 12 месяцев назад пользователем fergus2022.
    fergus2022
    Участник
    public double MyTemp(int selectznach) znach - сюда надо то, что приходит с датчика
    {
    double val;
    if (Val(selectperech) == 0) - perech хранит значение 0,1 или 2. 
    val = Val(101);
    
    return val;

    в логе ошибка:

     Ошибка при компилировании исходного кода формул: 
    Строка 517, колонка 9: error CS0103: Имя "selectperech" отсутствует в текущем контексте

    Я уже окончательно запутался надо сперва znach писать и в условии perech, или всё таки два раза perech ? и почему ни одна формула то не работает?

    • Ответ изменён 3 года, 12 месяцев назад пользователем fergus2022.
    fergus2022
    Участник

    с формулой

    public double MyTemp(int selectperech)
    {
    double val;
    if (Val(selectperech) == 0)
    val = Val(101);
    
    return val;
    }

    в логе:
    Строка 520, колонка 8: error CS0165: Использование локальной переменной "val", которой не присвоено значение

    fergus2022
    Участник

    с этим кодом

    public double MyTemp(int selectperech)
    {
    int n = (int)Val(selectperech);
    double ret;
    if (n == 0)
    ret = Val(101);
    else if (n == 1)
    ret = Val(102);
    else if (n == 2)
    ret = Val(103);
    return ret;
    }

    в логе:

    2022-10-11 15:44:08 <ASUTP3><СИСТЕМА><ERR> Ошибка при компилировании исходного кода формул: 
    Строка 524, колонка 8: error CS0165: Использование локальной переменной "ret", которой не присвоено значение
    fergus2022
    Участник

    При таком коде:

    public double MyTemp(int selectperech)
    {
      int n = (int)Val(selectperech);
      if (n == 0)
        return Val(101);
      else if (n == 1)
        return Val(102);
      else if (n == 2)
        return Val(103);
    }

    в логе ошибка:

    2022-10-11 15:12:21 <ASUTP3><СИСТЕМА><ACT> Формулы считаны из базы конфигурации
    2022-10-11 15:12:21 <ASUTP3><СИСТЕМА><ERR> Ошибка при компилировании исходного кода формул: 
    Строка 514, колонка 15: error CS0161: "Scada.Server.Engine.CalcEngine.MyTemp(int)": не все ветви кода возвращают значение
    Для ознакомления с исходным кодом см. файл C:\SCADA\ScadaServer\Log\CalcEngine.cs

    Что не так опять ?

    fergus2022
    Участник

    Выпадающие списки были бы прикольной штукой иногда. Но тут то 3 параметра можно было и в столбик на каждом объекте сделать. Не тот случай вроде, чтобы извращаться…

    нужна компактность для отображения на смартфоне

    fergus2022
    Участник

    имена переменных «perech» — для значений 0,1,2.
    znach — тут должны цифры с датчика выводиться с нужного канала (0,1 или 2 что выберет оператор ).

    public double MyTemp(int selectznach)
    {
       if (Val(selectperech) == 0)
        val = Val(101);
      else if (Val(selectperech) == 1)
        val =  Val(102);
      else if (Val(selectperech) == 2)
        val = Val(103);
      return val;
     }

    сервер и коммуникатор в ошибке при такой формуле.

    public double MyTemp(int selectznach)
    {
    double val;
      if (Val(selectperech) == 0)
        val = Val(101);
      else if (Val(selectperech) == 1)
        val =  Val(102);
      else if (Val(selectperech) == 2)
        val = Val(103);
      return val;
     }

    тоже самое всё в ошибке.

    из лога:

    2022-10-11 14:54:52 <ASUTP3><СИСТЕМА><ERR> Ошибка при компилировании исходного кода формул: 
    Строка 517, колонка 11: error CS0103: Имя "selectznach" отсутствует в текущем контексте
    Строка 519, колонка 16: error CS0103: Имя "selectznach" отсутствует в текущем контексте
    Строка 521, колонка 16: error CS0103: Имя "selectznach" отсутствует в текущем контексте
    Для ознакомления с исходным кодом см. файл C:\SCADA\ScadaServer\Log\CalcEngine.cs
    2022-10-11 14:54:52 <ASUTP3><СИСТЕМА><ERR> Нормальная работа программы невозможна
    • Ответ изменён 3 года, 12 месяцев назад пользователем fergus2022.
    fergus2022
    Участник

    когда в справочник «формулы» добавляю

    public double MyTemp(int selectCnl105)
    {
      int n = (int)Val(selectCnl105);
      if (n == 0)
        return Val(101);
      else if (n == 1)
        return Val(102);
      else if (n == 2)
        return Val(103);
     }

    то сервер и коммуникатор сваливаются в ошибку какую то. Если формулу удалить — всё в норме становится

Просмотр 15 сообщений - с 91 по 105 (из 135 всего)