Стартовая страница › Форумы › Понять, как работает ПО › Формулы › Границы, ноль, пусковой ток
- В этой теме 11 ответов, 4 участника, последнее обновление 1 год, 3 месяца назад сделано
manjey73.
-
АвторСообщения
-
21.03.2025 в 13:46 #37434
manjey73Участник1. нет возможности задать границы в % от значения. Или есть и я не нашел?
2. Есть нижняя и верхние границы, при этом 0 = Норма, а пусковой ток надо игнорировать. Канал при этом делится на 10 (Cnl/10)Как тут формулу делать. чтобы при 0 не учитывалась граница, то есть статус оставлять норма. И как-то проглотить пусковой ток, так как тоже нормальное явление при включении и не должно влиять на статус по границе
21.03.2025 в 14:29 #37435
a80808УчастникМожет расчетный канал на сглаживание? Или птичка «Усреднение»?
21.03.2025 в 17:35 #37438
manjey73УчастникЧто даст усреднение?
Ток линии скажем 5А +/- 25% это норма
0 тоже норма, так как может выключаться.
А пусковой выше 5+25%22.03.2025 в 10:16 #37439Romiros
УчастникГенерировать статус через МАУ с задержкой, наверное. А какие границы стоят?
22.03.2025 в 10:44 #37440
manjey73УчастникТолько хардкор — бесплатная версия 🙂
границы разные, в зависимости от номинального тока при работе нужно -25% +25%
(почему и удивился, что нет такой возможности, задать границу в процентах и номинал)22.03.2025 в 10:58 #37441
manjey73УчастникЕсли ячейку границы изменить на текстовую, то
1. дробное значение можно вводить и как 5.3 и как 5,3
2. а так же можно вводить 5.3: 10% (то есть номинал минус 10% в случае ячейки Нижняя граница. в общем символ % тут необязателен, просто наличие второго числа
3. и можно добавить цвет 5.3: 10: orange — например так.например если ввод в нижней такой 5.3: #0f0 значит это просто нижняя граница и ее статус цвета зеленый, а если такой в верхней 5.3: 20: red — то 5.3 тут номинал, граница выше на 20% и поменять статус на красный.
24.03.2025 в 09:15 #37456
manjey73УчастникПришлось отказаться от штатных границ для такой процедуры и написать скрипт
// контроль статуса датчиков обогрева - min, max диапазон контроля тока // val - значение канала, PT - время реации в тиках 1s = 1000 тиков public CnlData CtlStatus(double val, double min, double max, double PT) { double Q = 0; CnlData cdata; if (CnlStat > 0) { if (val == 0) { cdata = NewData(val, 1); TonQ(0, PT, Q); } else { if (val < min) { cdata = NewData(val, 12); TonQ(0, PT, Q); } else if (val > max) { if (TonQ(1, PT, Q) > 0) { cdata = NewData(val, 14); } // Можно применить 1 или Stat() или 14 но как информацию = 101 статус (созданный) else { cdata = NewData(val, 101); } } else { cdata = NewData(val, 13); TonQ(0, PT, Q); } }} else {return CnlData; } return cdata; }Формула Таймера для применения внутри других формул. Пришлось кое-что подправить
// Таймер с задержкой включения TON для внутренних скриптов public double TonQ(double IN, double PT, double Q) { var ut = new UtilTimer() {et = 0L, flag = false, q = false}; long ET = 0L; long _pt = Convert.ToInt64(PT); bool q = Q > 0; bool _in = IN > 0; if (!TonTimer.ContainsKey(CnlNum)) { TonTimer.Add(CnlNum, ut); } if (!_in) { TonTimer[CnlNum].q = false; TonTimer[CnlNum].flag = false; TonTimer[CnlNum].et = 0L; } else { if (!TonTimer[CnlNum].flag) { TonTimer[CnlNum].flag = true; TonTimer[CnlNum].et = Ticks(); } else { if (!q) ET = Ticks() - TonTimer[CnlNum].et; } if (ET >= _pt) q = true; TonTimer[CnlNum].q = q; } q = TonTimer[CnlNum].q; return Convert.ToDouble(q); }для работы таймера все так же требуются допы для всех таймеров
// Таймеры МЭК и другие public static long Ticks() { DateTime now = DateTime.Now; long time = now.Ticks/10000; return time; } protected class UtilTimer { public long et; public bool flag; public bool q; } protected Dictionary<int, UtilTimer> TonTimer = new Dictionary<int, UtilTimer>();Ну и тут создан номер статуса 101 для показа пускового тока
Задержка задается в тиках. 1с = 1000 тиков, соответственно 30с это 30000 тиковCtlStatus(Cnl, 5.2, 8.62, 30000)пример входной формулы на контроль тока.з.ы. не хватает возможности формул в самих границах конечно. типа как реагировать при том или ином статусе с указанием задержек.
24.03.2025 в 09:16 #37457
manjey73УчастникИзвиняюсь, тут 1000 это не тики а миллисекунды.
24.03.2025 в 10:46 #37463
MikhailМодератор1. нет возможности задать границы в % от значения. Или есть и я не нашел?
Штатные границы задаются в виде абсолютного значения.
2. Есть нижняя и верхние границы, при этом 0 = Норма, а пусковой ток надо игнорировать. Канал при этом делится на 10 (Cnl/10)
Если нужно игнорировать пусковой ток, то понадобится своя формула, которая будет определять статус канала.
24.03.2025 в 11:57 #37469
manjey73Участникну вот я там и использовал таймер, отображаю значение канала как есть, просто меняю статусы на те, которые требуются.
Потом на 14-й статус (Превышение) будет формула с таймером, если держится какое-то время то алярм-алярм.
Задача проигнорировать пусковые токи и временные превышения. Чисто мое предположение, кабель саморегулирующийся, и сперва идет более высокий ток, больше номинала ккое-то время после пуска.24.03.2025 в 12:14 #37471
a80808УчастникА вам это нужно для оповещения или и для отображения тоже? А то в МАУ задаете задержку и все…
25.03.2025 в 13:50 #37485
manjey73УчастникДля отображения. И выше писал — «Только хардкор — бесплатная версия» 🙂
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.