Дата время (BCD)

Просмотр 14 сообщений - с 46 по 59 (из 59 всего)
  • Автор
    Сообщения
  • #23288
    VylegzhaninD
    Участник

    божественно!
    А как часовой пояс задать?
    Смещение UtC?

    #23289
    a80808
    Участник

    Формула возвращает время в UTC, т.е. со смещением = 0. Смещение добавляет Web станция. Т.е. время будет правильно отображаться в зависимости от часового пояса сервера.

    #23290
    VylegzhaninD
    Участник

    наверное всё таки нет…
    отклонение от времени сервера

    #23295
    VylegzhaninD
    Участник

    Уж не знаю на сколько это корректно, но установку часового пояса я решил так

    DateTime UTCdata = new DateTime(yyyy, mm, dd, hh + 5, min, 0);

    @a80808 нижайший поклон.

    формула работает, спасибо!

    #23297
    a80808
    Участник

    Доброе утро! У вас +5, Урал? Дело в том, что формула «затачивалась» под версию 6, у нее несколько по другому отображаются даты чем в пятой. В «моем» коде на предыдущей странице «закоментируйте» последнюю строку и раскоментируйте предпоследнюю. Надо было в комментах написать, что для 6 а что для 5 🙂

    #23298
    a80808
    Участник

    По поводу корректности — оно корректно, но «привязано» к определенному часовому поясу. Оно конечно можно поковыряться с методами DateTime…

    #23299
    a80808
    Участник

    @mikhail, а есть способ как узнать версию SCADA для формул? Чтобы сразу делать инвариантно для пятой и шестой?

    #23300
    VylegzhaninD
    Участник

    Приветствую @a80808!
    Да, Урал, Екатеринбург.
    Версия RapidScada стоит 5.5.2.2

    Разве предпоследняя строка в коде закомментирована?
    Если это не «//» то я тогда вообще не понял о чем речь и что тогда имеется ввиду закомментировать/раскомментировать

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

    а есть способ как узнать версию SCADA для формул? Чтобы сразу делать инвариантно для пятой и шестой?

    Если только самому завести константу в формулах. Но лучше не усложнять.

    #23311
    a80808
    Участник

    Немного не то. Я предполагал. что можно послать запрос к SCADA (формула) и получить номер версии. И тогда:

    if (Version == 5)
    {
    …код;
    }
    elsif (Version == 6)
    …другой код;
    }

    тогда уж проще писать версию в имени функции
    BCD_GetDate_v6
    BCD_GetDate_v5

    #23312
    a80808
    Участник

    @vylegzhanind, похоже я немного запутался в своих версиях. 🙂
    Ниже код с комментариями. Там я и лишние переменные убрал 🙂

    public double BCD_GetDate(int bcd_dm, int bcd_yy, int bcd_hm)
    {

    int dd;
    int mm;
    int yyyy;
    int hh;
    int min;
    ushort x;
    int d1;
    int d2;
    int y1;
    int y2;

    x = (ushort) Val(bcd_yy);

    //BCD_YEAR
    d1 = (x >> 12) & 0x0F;
    d2 = (x >> 8) & 0x0F;
    y1 = d1 * 10 + d2;

    d1 = (x >> 4) & 0x0F;
    d2 = x & 0x0F;
    y2 = d1 * 10 + d2;

    yyyy = y1 *100 + y2;

    x = (ushort)Val(bcd_dm);

    //BCD_DAY
    d1 = (x >> 12) & 0x0F;
    d2 = (x >> 8) & 0x0F;
    dd = d1 * 10 + d2;

    //BCD_MONTH
    d1 = (x >> 4) & 0x0F;
    d2 = x & 0x0F;
    mm = d1 * 10 + d2;

    x = (ushort)Val(bcd_hm);

    //BCD_HOUR
    d1 = (x >> 12) & 0x0F;
    d2 = (x >> 8) & 0x0F;
    hh = (d1 * 10 + d2);

    //BCD_MIN
    d1 = (x >> 4) & 0x0F;
    d2 = x & 0x0F;
    min = d1 * 10 + d2;

    DateTime UTCdata = new DateTime(yyyy, mm, dd, hh, min, 0);

    //Rapid SCADA v.5.x
    //return EncodeDate(UTCdata);

    //Rapid SCADA v.6.x
    return EncodeDate(TimeZoneInfo.ConvertTimeToUtc(UTCdata));

    }

    P.S. Урал, Екатеринбург.
    Ext. ПАО «Энел Россия», Среднеуральск, Рефта…

    #23313
    a80808
    Участник

    Да, еще.
    Версия RapidScada стоит 5.5.2.2
    Соберитесь с духом и переходите хотя бы на 5.8.4. Потом будет тяжелее…

    Вот здесь обсуждение и рекомендации…

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

    5.5.2.2 — это версия приложения Администратор, скорее всего.
    Чтобы определить версию Rapid SCADA лучше посмотреть в журналах версию Сервера и по ней проверить версию всего пакета.

    #23341
    VylegzhaninD
    Участник

    Да, посмотрел внимательней версия стоит — 5.8.3 (17.05.2021)

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