Romiros

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

Просмотр 15 сообщений - с 46 по 60 (из 1,450 всего)
  • Автор
    Записи
  • в ответ на: Запись в базу данных по событию #34849
    Romiros
    Участник

    Добрый день. Вам скорее нужна связка DrvDbImport и Модуль авто управления. В DbImport подготовьте команду на запись с нужным запросом и вызывайте ее в МАУ по таймеру или нужному триггеру.

    в ответ на: Ошибка модуля автоуправления #34593
    Romiros
    Участник

    У Вас версия RapidScada последняя? Просто были изменения в модулях под самую последнюю версию, возможно что-то не стыкуется.

    в ответ на: Статусы каналов #34592
    Romiros
    Участник

    Скорее всего никак, это предустановленный текст.

    в ответ на: Лог. задача на время #34591
    Romiros
    Участник

    Сохраняй в storage как текстовый файл, при перезагрузке считывай из него. Наверное самое простое и надёжное средство.

    Romiros
    Участник

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

    Romiros
    Участник

    Сомневаюсь, поэтому и храню время в отдельном канале. При старте сервера и первой итерации расчета PrevVal = Cnl, я так думаю.

    Romiros
    Участник

    А зачем? На график выводится изменение самого параметра и там этот временной интервал можно оценить. А так масло масляное получается.

    Romiros
    Участник

    Так я об этом выше написал. Сохранять в значении расчетного канала последнее время изменения. У меня так и делается.

    Romiros
    Участник

    SetVal(CnlNum, Cmd)

    Естественно у тебя это не будет работать. Val(); Stat() просто продлевает значение и текущий статус канала. Если у тебя там был изначально 0, то и будут прочерки. Его же сначала надо задать. Т.е. используй SetData(n, val, stat) или SetData(n, cnlData).

    Romiros
    Участник

    У меня сделано так:

    В расчетный канал записывается время изменения чтобы не потерять данные при остановке сервера:
    PrevVal(219) != Val(219) ? UtcNow(): Val()

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

    public string EventTime(int cnlNum)
    {
    DateTime dt = DateTime.FromOADate(Val(cnlNum));
    TimeSpan delta = DateTime.UtcNow — dt;

    if(delta.Days > 0)
    return $»{delta.Days} day»;
    else if(delta.Hours > 0)
    return $»{delta.Hours} hour»;
    else if(delta.Minutes > 0)
    return $»{delta.Minutes} min»;
    else
    return $»{delta.Seconds} sec»;
    }

    Romiros
    Участник

    Ну это уже здравствуй Json + Javascript. Я пишу на нем для психологической разгрузки, когда можно тяжелое разделить на синее и прибавить фамилию и все это в одном массиве :). Структуры — это наверное уже RapidScada7 :).

    Romiros
    Участник

    с интервалами случился косяк ? 15 часов они и в Африке 15 часов, а получается что в формулах надо приводить этот интервал к 12-ти часам, чтобы получить по Москве правильные 15 часов. ?

    Ну тут при реализации формулы конечно нужно все предусматривать.

    Romiros
    Участник

    Не по UTC, а по тому часовому поясу, который тебе нужен. Хочешь ставь свой, а хочешь дочерней системы. Честно говоря не вижу проблемы. Просто используешь всегда ToUTC или FromUTC в драйверах, модулях или формулах. Должна быть какая-то общая величина. Представь если корабль пересекает пол мира, какое тут нафиг локальное время? У него каждый день может быть новый часовой пояс :). Тут вообще запутаешься в расчетах, если не будет привязки по единому времени на двух серверах.

    Romiros
    Участник

    Так и не надо в текущем. Есть базовая система — UTC. Хочешь видеть на своём сервере в том времени, которое на другом, поставь соответствующую настройку в ScadaWeb, она там есть. У нас так реально два филиала работают. У них +4, но закрываться должны по +3. И они просто ставят себе Московское время везде — на приборах и на серверах. Не знаю как у них не едет крыша, но видимо привыкли. Исторически 🙂

    Romiros
    Участник

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

    А вот здесь зависит от того как нужно. Например у меня один корабль с одним часовым поясом, а сервер в офисе с другим. RapidGate передает данные и события а диспетчер в офисе видит все по своему времени и ему так удобно.

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