сохранение значений по команде

Стартовая страница Форумы Понять, как работает ПО Формулы сохранение значений по команде

Просмотр 15 сообщений - с 16 по 30 (из 52 всего)
  • Автор
    Сообщения
  • #14138
    ViktorDV
    Участник

    Создал формулу
    public double TokNom(InomCod)
    {
    int InomCodes[18] = {32, 63, 80, 100, 125, 150, 160, 200, 250, 315, 400, 500, 630, 750, 800, 1000, 1250, 1500};
    InomAut = InomCodes[InomCod];
    return;
    }
    Значение InomCod может быть от 0 до 17
    Из массива InomCodes под идексом InomCod переменной InomAut присвоить значение массива и передать в канал для передачи на вебсервер.

    Сервер ругается. Что не так? Подскажите пожалуйста

    #14139
    Romiros
    Участник

    return InomAut;

    • Ответ изменён 6 лет, 7 месяцев назад пользователем Romiros.
    #14141
    ViktorDV
    Участник

    public double TokNom(InomCod)
    {
    int InomCodes[18] = {32, 63, 80, 100, 125, 150, 160, 200, 250, 315, 400, 500, 630, 750, 800, 1000, 1250, 1500};
    InomAut = InomCodes[InomCod];
    return InomAut;
    }
    При передаче в вебсервер формула не компилируется и естественно не работает. Ругается. Канал создан до расчетным.Если галочки в колонке использовать формулу нет, при «исправной» формуле компиляция то должна все равно быть. Ан нет.

    #14142
    ViktorDV
    Участник

    Запустить формулу так и не смог. Скада ее не воспринимает

    #14143
    manjey73
    Участник

    Ну наверное правильно обозвать и писать

    public double TokNom(int InomCod) Но лучше сразу double так как вы суда будете пихать Val(XXX)

    int[] InomCodes = new int[] { бла, бла, бла };

    Короче синтаксис C# надо смотреть. У вас это откуда ?

    return InomCodes[InomCod];

    ну в общем так как-то

    Если галочки нет и формула в самом канале то там можно собаку со свиньей скрещивать, текст игнорируется.

    • Ответ изменён 6 лет, 7 месяцев назад пользователем manjey73.
    • Ответ изменён 6 лет, 7 месяцев назад пользователем manjey73.
    • Ответ изменён 6 лет, 7 месяцев назад пользователем manjey73.
    • Ответ изменён 6 лет, 7 месяцев назад пользователем manjey73.
    #14156
    Mikhail
    Модератор

    Просьба указывать, какую ошибку пишет компилятор.

    #14188
    ViktorDV
    Участник

    Все работает. Скрипт создан шарпой. Текст привожу. Переменная в оглавлении должна быть double!!! Это важно!!!
    public double TokNom(double InomCod)
    {
    int[] InomCodes = new int[]
    32,63,80,100,125,150,160,200,250,315,400,500,630,750,800,1000,1250,1500};
    int x;
    x = (int)InomCod;
    return InomCodes[x];
    }

    Вдруг кому то пригодится работать с индексами массивов. Пользуйтесь на здоровье!!!!
    Вместо
    return InomCodes[x];
    написал
    return InomCodes[(int)InomCod];
    увы, скада не работает.

    #14189
    ViktorDV
    Участник

    Всем спасибо!!!!

    #14190
    ViktorDV
    Участник

    Поместить необходимо в справочники/формулы, во входнойм до расчетном канале написать — TokNom (Val(125)) — где 125 номер канала и поставить галочку использовать формулу. Удачи всем!!!

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

    Спасибо!

    #14198
    ViktorDV
    Участник

    Всем доброе время суток!
    Делюсь очередной формулой — Определение старшего байта из целого числа

    public double HighByte(double NumbeReg)
    {
    int x;
    x = (int)NumbeReg;
    byte HighByte = (byte)(x >> 8); ///старший байт
    return HighByte;
    }

    Определение младшего байта из целого числа

    public double LowByte(double NumbeReg)
    {
    int x;
    x = (int)NumbeReg;
    byte LowByte = (byte)(x & 0xFF); ///младший байт
    return LowByte;
    }

    Удачи всем!
    Михаил, а Вам за скаду спасибо! С нетерпением жду клонирование в схематике. Много скрипта подключается на шарпе! Делать можно что только пожелаешь!!!!

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

    Небольшое уточнение, в данных формулах старший — 1-й байт и младший — нулевой. Применительно к стандартным регистрам Модбас, байты действительно будут старшим и младшим.

    #14200
    manjey73
    Участник

    применительно к Modbus может быть как угодно, зависит от производителей железок.

    #14203
    ViktorDV
    Участник

    Доброе время суток!!!!
    В железках по протоколу Modbus действительно может быть все что завгодно. 6 блоков управления и защит и все разное до резкой противоположности. Доходит дело даже до абсурда. Да разве только это…На одном из блоков читаю содержание регистров, а параметров и близко то нет. В документации одно, а на самом деле другое…
    Но дело как раз и в том что не которые блоки по протоколу Modbus не хотят включатся…. Бьюсь битый час а запустить от кнопки ни в какую. Может чего то неправильно сделал в скаде…. Может в формуле…. В чем может быть причина и на что необходимо обратить внимание? Если нетрудно прошу алгоритм действия. То есть опишите всю последовательность формирование этой команды. За ранее благодарю! Самое интересное на первом этапе проектирования кнопка включение работала даже без передачи значения канала 0xFF00. После завершения проекта та же кнопка перестала работать. Блок ее явно не видит…

    #14204
    ViktorDV
    Участник

    В Скаде работаю от имени Админа

Просмотр 15 сообщений - с 16 по 30 (из 52 всего)
  • Для ответа в этой теме необходимо авторизоваться.