evg

Созданные ответы форума

Просмотр 15 сообщений - с 1 по 15 (из 59 всего)
  • Автор
    Сообщения
  • в ответ на: Установить дату #20075
    evg
    Участник

    Вау работает, сразу не получалось — потому как во входном канале стояла формула DateTime.Now.ToOADate() Как только убрал заработало. Благодарю Mikhail и manjey73. Кому интресно вот код в собранном виде:

    public byte[] GetDateStr(int mn)
    {
      string s = Encoding.UTF8.GetString(CmdData);
      DateTime dt = DateTime.Parse(s);
      SetVal(mn, EncodeDate(dt));
      return null;
    }

    Кстати независимо от того каким форматом прописываю в поле ввода 09-06-2021 или 09.06.2021 или даже 09/06/2021 всё преобразуется коректно.

    в ответ на: Установить дату #20019
    evg
    Участник

    string s = ScadaUtils.BytesToHex(Cmd);
    Ошибку выдаёт:
    http://d.radikal.ru/d28/2106/cf/79d3eabca32f.jpg

    • Этот ответ был изменен 2 года, 10 месяцев назад от evg.
    • Этот ответ был изменен 2 года, 10 месяцев назад от evg.
    в ответ на: Установить дату #19967
    evg
    Участник
    public byte[] GetDateStr()
    {
      string s = ScadaUtils.DecodeUnicode(Cmd);
      System.IO.File.WriteAllText(@"C:\SCADA\1.txt", s);
      return null;
    }

    Сам файл «1.txt» создался, но текст, который я ввёл нету =( В канале управления ставим «GetDateStr()» — я правильно понимаю? Тип Бинарный, Строка.

    в ответ на: Установить дату #19903
    evg
    Участник

    Добрый день. Да, дата у меня отображается, через формулу во входном канале DateTime.Now.ToOADate(). Я смотрю есь в упаковке формула «EncodeDate» или это не то?
    По переводу строки в double у меня есть такая формула:

    public double _Convert(int n)
    {
    double x = Val(n);
    double _double;
    string _string;
    _string = ScadaUtils.DecodeAscii(x);
    _double = Double.Parse(_string.Replace(‘.’, ‘,’));
    return _double;
    }

    Вы хотите устанавливать дату из пользовательского интерфейса?

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

    evg
    Участник

    Спасибо. Вчера тоже к этому пришёл.)

    public double _ValChance(int ValS1, int ValZ1, int ValS2, int ValZ2, int ValS3, int ValZ3)
    {
    double valueCh = 0;
    if((Val(ValS1) == 0) && (Val(ValZ1) > 0))
    {
    valueCh = Val(ValZ1);
    }
    if((Val(ValS2) == 0) && (Val(ValZ2) > 0))
    {
    valueCh = Val(ValZ2);
    }
    if((Val(ValS3) == 0) && (Val(ValZ3) > 0))
    {
    valueCh = Val(ValZ3);
    }
    return valueCh;
    }

    Так работает.
    Тему можно считать закрытой, всем спасибо!

    evg
    Участник

    Не работает — это слишком растяжимо. Выдает ошибку или не то, что Вы ожидаете? Может у Вас условия совпадают и переписывают друг друга. Важен порядок каналов от меньшего к большему. Напишите подробнее, думаю совместно решим. А лучше опишите прикладную задачу, что нужно сделать.

    Ошибки нету, просто не присваивается значение канала-каналу. Даже в такой форме.

    public double _ValChance(int ValS1, int ValZ1)
    {
    double valueCh = 0;
    if(ValS1 == 0 && ValZ1 > 0)
    {
    valueCh = ValZ1;
    }
    return valueCh;
    }

    К примеру я пишу во входном канале 201: _ValChance(110, 101)
    Сохраняю, выполняю условие при котром должно присвоиться значение канала 101 каналу 201 и нечего не происходит..

    Сейчас ещё попробую переделать проэкт, в любом случае мне нужно уменьшить количество задействованных входных каналов.. Возможно будет достаточно и одной формулы, которую давал manjey73. В конце дня отпишусь. Если подскажите почему не работает эта формула, которую я написал буду благодарен. Она как бы без проблем работает с числами, к примеру если сделать так «valueCh = 1;» — она работает, значение 1 присваивается, а вот как я это сделал (valueCh = ValZ1;) попыться присвоить, текущее значение одного канала другому так не работает..

    • Этот ответ был изменен 3 года назад от evg.
    evg
    Участник

    Romiros, там был 401 канал в сообщении, я через минуту сменил на 201. Изивините не правильно расписал, впредь постараюсь правильно рассписывать, я ценю вашу помощь и время которое вы уделяете. Имелось ввиду как раз то что описал «manjey73» =) Manjey73 cпасибо это сработало.

    (Val(110) == 0 && Val(101) > 0) ? Val(101) : Val()

    А вот как сделать прописную формулу? У меня предполагается, что значений с условием будет не 2, а 6 и возможно даже больше. Т.е.

    (Val(110) == 0 && Val(101) > 0) ? Val(101) : Val() ИЛИ (Val(120) == 0 && Val(131) > 0) ? Val(131) : Val() ИЛИ (Val(140) == 0 && Val(151) > 0) ? Val(131) : Val()

    — объемную стркоу не могу записать во входной канал. Изначально пробывал такой вот формулой сделать:

    public double _ValChance(int ValZ1, int ValS1, int ValZ2, int ValS2, int ValZ3, int ValS3)
    {
    double valueCh = 0;
    if(ValS1 == 0 && ValZ1 > 0)
    {
    valueCh = ValZ1;
    }
    if(ValS2 == 0 && ValZ2 > 0)
    {
    valueCh = ValZ2;
    }
    if(ValS3 == 0 && ValZ3 > 0)
    {
    valueCh = ValZ3;
    }
    return valueCh;
    }

    Но не работает. Чую что как-то по другому нужно её записать, но нехватает знания и понимания.

    evg
    Участник

    ааа, вам два условия надо? если 110-й = 0 и при этом 101 > 0 только тогда передать значение 101-го в 401 ?

    Да именно так.

    Надо формулу в 401-м писать и проверять эти два канала

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

    evg
    Участник

    Простое отображение текста при определенных значениях достигается с помощью «Текст перечисление». Вы просто в справочнике добавляете свой вариант по аналогии с Включен Отключен. Посмотрите внимательнее.

    О крутяк.))) Благодарю.)

    evg
    Участник

    Вот если поможет в применении с командами, не знаю. Просто непонятно, что вы там вводить собираетесь в команде, чтобы понять, что надо делать…

    Спасибо, может и поможет.. Попробую её модифицировать. Мне нужно чтобы в таблицах скады было отображение текста, к примеру вместо непонятной 1 — слово «выгрузка», вместо непонятного 2 — «загрузка». Предполагается что пользователь будет устанавливать статус ячейки на схеме, картинка будет меняться в зависимости от введенной цифры 1 или 2. В таблицах же скады должен быть текст, а не цифры.

    Я правильно понимаю в этой формуле, если я поставлю вместо слова «Error» — «загрузка», то при сработке условий появится это слово?

    — Как вариант я хотел сделать следующее, при условии если канал 101 будет равен =1, каналу 102 присвоить значение, которое бы отобразило текст «выгрузка», если канал 101 будет равен 2, то 102 каналу присвоить значение, которое бы отобразило текст «загрузка».

    evg
    Участник

    По идее канал должен быть не Стандартный а Строковый и формулой его переводить в массив байт. То есть Бинарный

    Как-то сложно.) Может какой-то пример имеется, где нибудь на гит-хабе?

    в ответ на: Rapid SCADA: HTTP API + JavaScript #19030
    evg
    Участник

    Понимаю.. Спасибо за пример. Попробуем разобраться.

    в ответ на: Rapid SCADA: HTTP API + JavaScript #18985
    evg
    Участник

    Добрый день, а подскажите пожалуйста по подробнее, как можно вывести данные скады на html страницу? С api и js не особо знаком, код глазами пролестал, но непонятно как взаимодействовать со скриптом clientapi.js Самой версткой (html+css) владею на приличном уровне. Вот к примеру, я создал элемент <p class=vda1></p> как мне вывести туда значение входного канала 100?
    И 2-й вопрос мне нужно, реализовать возможность как в дефолтных таблицах выберать число за которое мне нужно увидеть данные входных каналов — в теории это же можно реализовать к примеру взяв фрагмент кода из дефолтных таблиц?
    — Если в качестве примера рассматривать сами дефолтные таблицы, то там, помимо jquery.js, utils.js, ajaxqueue.js я вижу ещё и скрипт table.js который взаимодействует с элементами веб-страницы, т.е. выходит мне так же для взаимодействия нужно будет писать свой скрипт? А clientapi это как своего рода библиотека получается?
    — И 3-й вопрос, возможно есть способ в Схемы — добавить возможность выставить дату/время, за которую нужно показать данные входных каналов? А по дефолту, чтобы отображались текущие данные. Возможно в будущем, планируется что-то такое ввести? Подобное дополнение было бы весьма кстати.

    в ответ на: Не отображаются html страницы #18980
    evg
    Участник

    Нечего не помогало, пока не удалил строки в интерфейсе с html страницами; и заново их прописал под другими идентификаторами — только тогда стали отображаться.

    evg
    Участник

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

    Да такие пожелания были.. Подозреваю, поля ввода с кнопкой потверждения можно реализовать через html страницу. Возможно ли впринципе привязать каналы управления к полям ввода? Чтобы к примеру кнопка потвердить активировала эти поля, и если в этих полях вписаны числовые значения, то изменялись бы данные входных каналов к которым они привязаны.

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