Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Функции (формулы) для Rapid SCADA
- В этой теме 149 ответов, 17 участников, последнее обновление 7 месяцев, 3 недели назад сделано
Oleg.
-
АвторСообщения
-
19.09.2024 в 14:14 #34806
manjey73УчастникВходная формула
Val(); Stat()
Выходная формула
Val() > 0? SetData(CnlNum, 0, 0) : SetData(CnlNum, 1, 1)Проверил на Расчетном канале.
Посылать можно любое значение, то есть повесить на кнопку с настройкой Отправить команду сразу20.09.2024 в 13:05 #34816
MikhailМодераторВходную формулу можно оставить пустой, скорее всего.
27.11.2024 в 11:35 #35874ilcha
УчастникЗдравствуйте , нужна помощь. Подключил счётчик воды через дискретный модуль, от счётчика воды сигналы получаю в RS(6.2). Из готовых скриптов взял:
Счётчик импульсов указанного канала.
Входная формула CountPulse(101) на канале 112
Входная формула SetVal(113,Val(112)) результат с канала 112 записываю на канал 113
Выходная формула SetData() на канале 114 для внесения актуальных показаний счётчика воды.
Пытался складывать на отдельном канале результаты SetData() + CountPulse(101) , но не получал актуальные данные счётчика т.к. на канале импульсов уже накрутилось N-ое кол-во срабатываний.
Какие есть задумки : 1. либо обнулять счётчик импульсов при достижение на нем кол-ва 100 (100 срабатываний это 1 куб воды). 2 либо обнулять количество счётчика импульсов по кнопке перед внесением актуальных данных.
Подскажите как еще это можно реализовать ? С формулами и примерами , спасибо.27.11.2024 в 11:51 #35875
MikhailМодераторДобрый день!
Сделайте, пожалуйста, скриншоты свойств каналов, чтобы были видны номера каналов и формулы этих каналов.27.11.2024 в 12:00 #35881
manjey73УчастникВообще никак. Скорость обмена у вас не позволит считать кубометры в принципе.
Тем более при использовании обычного дискретного входа. Или у вас он в режиме счетчика именно?27.11.2024 в 13:14 #35884
a80808УчастникСтавить счетчик с внутренней памятью импульсов и считывать каждую минуту (например) количество импульсов с привязкой ко времени. Дальше уже просто.
—
Либо по другому — считать время включения насоса. Но надо четко знать его производительность.
Делал такое для насосов фильтрата для ГРЭС27.11.2024 в 16:17 #35887ilcha
УчастникУ меня уже смонтирован счётчик на котором уже накручено какое-то количество кубов. Недавно подключил его в модулю который считывает дискретные входы. Каждое включение дискретного входа значит , что 100 литров пролилось. Это бывает не так часто. На канале 101 я вижу вкл когда пролилось 100 литров, после висит откл. На 112 канал повесил готовый скрипт из RS CountPulse(101), который считывает количество включений.
Мне нужно , чтобы я внес актуальные данные счётчика который смонтирован физически и мне не прибавлялось то , что уже накрутилось на 112 канале. Можно ли при достижении на канале 100 включений сбрасывать его в 0 и зациклить этот процесс ? Или сбрасывать уже накрученное количество включений по кнопке в 0 и чтобы заново начинался отсчёт?-
Ответ изменён 11 месяцев, 2 недели назад пользователем
ilcha. Причина: пытаюсь залить фото
28.11.2024 в 12:33 #35895
MikhailМодераторСсылка не открывается.
28.11.2024 в 19:11 #35902ilcha
Участникhttps://cloud.mail.ru/public/NRph/Gz1twSoNL
А вот так ?-
Ответ изменён 11 месяцев, 1 неделя назад пользователем
Mikhail.
28.11.2024 в 23:03 #35903
manjey73УчастникСама формула есть?
Вообще, формула может выполнятся раз 10 в секунду, по этому с подобными расчетами все сложно.
29.11.2024 в 13:37 #35905
MikhailМодераторИспользовать SetVal(113,…) в канале 113 — некорректно. Просто напишите Val(112)
15.12.2024 в 11:34 #36183sakhalin_Cat
УчастникЗдравствуйте.
Господа, помогите модифицировать формулу в канале. Суть в чём: Формула рабочая полностью, но вылез небольшой косяк: В стандартном режиме работы когда вся система запустилась и статична у реле может быть два состояния это 401=true и 402=False, формула их нормально отрабатывает и меняет состояние при подаче команды в канал управления 1 или 0, 401 или 402. В статичной работающей системе всё прекрасно…
Проблемы начинаются если оборудование (железо\реле) обнаруживает ошибку или при перезапуске системы инициализируется, в этом случае вместо кода состояния 401 или 402 реле может иметь любой другой код, например 251 = иниц успешна, 41 = ошибка оборудования, 139 = обрыв связи итд итп.
Соответственно команда поданная в канал не работает если код там не 401 и не 402.
Необходимо чтобы при любом состоянии канала кроме поданная команда работала нормально.
Формула которая используется сейчас: Val(30602) == 401 ? (int)2 : (int)115.12.2024 в 17:42 #36184
manjey73УчастникЕсли входной формулы нет и в канал приходит число. То входная формула может быть для варианта перечисления
public double GetValueSvet() { switch ((int)CnlVal) { case 401: return 1; // Включено case 402: return 0; // Выключено case 251: return 2; // Инициализация Ок case 41: return 3; // Ошибка оборуд. case 139: return 4; // Обрыв связи default: return 0; } }В Вспомогательных таблицах — Форматы добавить перечисление по аналогии
Выключено; Включено; Инициализация Ок; Ошибка оборуд.; Обрыв связиВ выходной формуле ничего, А вот в Формате Команды выбрать Off-On
16.12.2024 в 12:40 #36188
manjey73Участникpublic double GetValueSvet(double val) { switch ((int)val) { case 401: return 1; // Включено case 402: return 0; // Выключено case 251: return 2; // Инициализация Ок case 41: return 3; // Ошибка оборуд. case 139: return 4; // Обрыв связи default: return 0; } }и вызов для входного канала GetValueSvet(Cnl)
Для какого-то расчетного канала например GetValueSvet(Val(105)) — канал в симуляторе для теста.20.03.2025 в 08:27 #37362
OlegУчастникФормула записи значения канала по изменению в лог:
public double Write_log(int N) { double ret = 0; DateTime moment = DateTime.Now; if (Val() != Val(N)) { System.IO.File.AppendAllText(@"E:\SCADA_logs\SCADA_log_channel_"+Convert.ToString(N)+".txt", ( Convert.ToString(moment) + "\t" + Convert.ToString(Val(N)) + "\r\n" ) ); ret = Val(N); } else { ret = Val(); } return ret; }-
Ответ изменён 7 месяцев, 3 недели назад пользователем
Mikhail.
-
Ответ изменён 11 месяцев, 2 недели назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.