saprin8

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

Просмотр 15 сообщений - с 1 по 15 (из 206 всего)
  • Автор
    Сообщения
  • saprin8
    Участник

    Получается так, надо сохранять куда-то значение предыдущее. вот так считал для подсчета расхода с вкт приборов.

    public double Diff_mass(int Value, int OldValue)
    {
    double difference;
    if (Val(Value) == Val(OldValue))
    {
    difference = 0;
    }
    else if (Val(Value) != Val(OldValue))
    {
    difference = Val(Value) - Val(OldValue);
    SetFata(OldValue, Val(Value), 1);
    }
    else
    {
    difference = 0;
    }
    return difference;
    }

    Можно использовать Month/DayStarted.

    • Этот ответ был изменен 1 месяц, 3 недели назад от saprin8.
    saprin8
    Участник

    Или можно сделать на каждой мнемосхеме динамический рисунок, который не виден в нормальном состоянии и если авария, то виден.

    saprin8
    Участник

    Чтобы не создавать доп канал можно в свой же канал во входную формулу поставить Val(), ну а в выходную уже SetVal или как Михаил выше написал SetData. Соответственно если отправлять нужно разные числа в канал, то вместо определенного числа нужно ставить в формулу Cmd. Тогда окно всплывающее (Ну и на схеме поставить значение в дин.текст «Отправить команду»)

    saprin8
    Участник

    100+-

    в ответ на: Управляемые Отчёты — опрос #38034
    saprin8
    Участник

    Да и pdf кмк не особо нужен, excel за глаза хватит. А так стандарт — выбор параметров ячеек, их количество, выбор границ для подкрашивания фона ячейки, возможно постройка диаграммы.

    saprin8
    Участник

    У нас принцип полного описания переменных, ибо сегодня один работает и понимает, а завтра пришел другой и уже сокращения не вдупляет. Особенно если взять какую-нибудь водоподготовку или гальванику, где подрядчик переменные длинные сделал (как бы не против) и описания к ним тоже не короткие выходят даже после переделки. Так-то можно вообще заменить на Состояние автомата QF1, но тогда гудеть будут программисты, которые занимаются заведением переменных на сервер, где должна быть сортировка на аварии/рабочие состояния/предупреждения/сервисы и т.д., а они не технические инженеры понимать все это

    • Этот ответ был изменен 3 месяца, 1 неделя назад от saprin8.
    в ответ на: Оптимизация работы #38025
    saprin8
    Участник

    Для опроса ВКТ-7 6 линий связи в коммуникаторе и норм, никаких нагрузок. Но как по мне лучше отдельный OPC сервер иметь, с которого скада будет забирать данные. Kepserver какой-нибудь или MasterOPC (у второго под ру сегмент заточены протоколы). У меня 69 линий связи, в некоторых по 3000+ тегов и все летает.

    в ответ на: Отображение на весь экран #38023
    saprin8
    Участник

    нет, на базовом работает все норм

    в ответ на: Отображение на весь экран #38009
    saprin8
    Участник

    Развернул, все тоже самое. В проекте особо ничего не менял в вебе. Размер окна всплывающего, расположение иконок работы с экраном (изменение масштаба), цвета, сместил текст названия всплывающего окна. Ну и в JS вроде поменял появление иконок работы с экраном при условии разрешения экрана больше всплывающего окне

    в ответ на: Отображение на весь экран #37984
    saprin8
    Участник

    Переход на любую мнемосхему приводит к выходу из полноэкранного режима. Вэб 6.1.2.1

    в ответ на: Отображение на весь экран #37958
    saprin8
    Участник

    Нет, в демке полноэкранный режим работает

    saprin8
    Участник

    Вообще триггер добавить на мнемосхему было бы удобно. TON или TOF, который всплывающее окно выдавал бы или другое событие.

    saprin8
    Участник

    Код подсчета новых аварий, соответственно для клика и для нового количества аварий нужны пустые каналы

    public double NewAlarms(int alarmsPre, int alarmsPost, int click)
    {
    double status = 0;
    double AlarmsCount = Val(alarmsPost) - Val(alarmsPre);
    if (click == 1)
    {
    status = 0;
    }
    else
    {
    if (AlarmsCount > 0 )
    {
    status = AlarmsCount;
    }
    else if (AlarmsCount <= 0)
    {
    status = 0;
    }
    }
    return status;
    }

    Анимация лампочки

    public double Animation(int alarmsPre, int alarmsPost, int click)
                {
    
                    double status = 0;
    
                    if (Val(alarmsPre) < Val(alarmsPost) & Val(click) == 0)
                    {
                        status = 1;
                    }
                    else if (Val(alarmsPre) != Val(alarmsPost) & Val(click) == 1)
                    {
                        status = 0;
                        SetVal(click, 0);
                        SetVal(alarmsPre, Val(alarmsPost));
                    }
                    if (Val(alarmsPre) > Val(alarmsPost))
    {
    status = 0;
    SetVal(alarmsPre, Val(alarmsPost));
    }
                    return status;
    
                }

    Массив подсчета аварий, где каждый канал это массив подсчета аварий в корпусе

    public double Alarms_count_All()
    {
    double status = 0;
    double [] alarms =
    {
    Val(4384),
    Val(1511),
    Val(9190),
    Val(9191),
    Val(9192),
    Val(9193),
    Val(9194),
    Val(9195),
    Val(9196),
    Val(9197),
    Val(9198),
    Val(19201),
    Val(20603),
    Val(25908),
    Val(7727),
    Val(37758),
    Val(37209),
    Val(38314),
    Val(38960),
    Val(39826),
    Val(40107)
    };
    Array.ForEach(alarms, i => status += i);
    return status;
    }

    Код наличия аварий (ищет в массиве 1)

    public double Water_Alarm_K153()
    {
    int status = 0;
    double[] alarms =
    {
    Val(2268),
    Val(2355),
    Val(2434),
    Val(2534),
    Val(2601),
    Val(2669),
    Val(2736),
    Val(2804)
    };
    bool Exist = Array.IndexOf(alarms, 1) != -1;
    if (Exist)
    {
    status = 1;
    }
    else
    {
    status = 0;
    }
    return status;
    }
    saprin8
    Участник

    Также звук уведомления об аварии можно в цикл поставить (то есть количество новых аварий > 0 включаем, выключаем, включаем и т.д. канал с маской событий звука по изменению, пока не заквитируется авария. Будет постоянно пикать, правда журнал заполнять тоже будет, да и если журнал закрыт, то звука нет

    saprin8
    Участник

    У меня сразу главный экран открывается, это вроде же настроить можно. Плюс диспетчерская служба всегда мониторить скаду должна, что подразумевает работу 24/7 с открытым браузером на главном экране. Да и выпадающее меню слева нажать и выйти на главный экран дело 2х секунд если не меньше. А новые аварии определить уведомлением (звук), сделать счетчик новых аварий, код могу скинуть

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