Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Увеличение вх канала каждую секунду
- В этой теме 13 ответов, 4 участника, последнее обновление 1 год, 5 месяцев назад сделано Mikhail.
-
АвторСообщения
-
27.10.2022 в 11:40 #25712fergus2022Участник
Добрый день. Есть вх канал «Переменная1». Ее нужно увеличивать на 2 каждую секунду.
Формула получается типа:
val1=val1+2
А как сделать, чтобы формула отрабатывалась каждую секунду ?27.10.2022 в 12:27 #25713manjey73УчастникПодозреваю, что никак, только через проверку времени, но это будет больше секунды точно, так как будет зависеть от цикла прохождения сервером всех каналов. И чем каналов больше, тем больше будет цикл.
Впрочем как и любой ПЛК вам не даст такой точности.27.10.2022 в 12:31 #25714fergus2022УчастникНа данный момент 66 входных каналов включая виртуальные. Задача в том, чтобы высчитывать накопленный расход по часовому. (переменная1=переменная1+(часовой расход/3600). При расчете получается верное значение для каждой секунды, но судя по большим числам в таблице, каждую секунду формула выполняется несколько раз, а не 1.
- Этот ответ был изменен 1 год, 5 месяцев назад от fergus2022.
27.10.2022 в 12:48 #25716fergus2022УчастникНеужели в этой скаде нельзя это реализовать ?
27.10.2022 в 12:59 #25717JurasskParkУчастникЭм… Неправильный подход.
Начнём с того, что считать расход часовой таким способом нельзя — нужно использовать трапецию.
А во вторых я бы брал всё текущие тренды с начала и по конец часа — и после этого сделал бы подсчёт. Который записывал уже как часовое значение.27.10.2022 в 13:04 #25718JurasskParkУчастникНакопленный расход по часовому — это что такое? Расход за 1 час в м3?
Вы его получили с вычислителя. Вы хотите из него получить среднее мгновенное значение?27.10.2022 в 13:04 #25719fergus2022УчастникНе часовой расход считать, а накопленный.
Есть часовой расход в рабочих условиях.
Есть формула для вычисления часового расхода в нормальных условиях.
Есть формула для вычисления накопленного расхода с применением в ней значения часового расхода в нормальных условиях.
Значение накопленного расхода за час, должно быть равно значению переменной «Часовой расход».- Этот ответ был изменен 1 год, 5 месяцев назад от fergus2022.
27.10.2022 в 13:08 #25721fergus2022УчастникНакопленный_Расход=Накопленный_Расход+(Часовой_Расход/3600)
Соотв. формула должна срабатывать 1 раз в секунду
27.10.2022 в 15:41 #25724MikhailМодераторДобрый день!
как сделать, чтобы формула отрабатывалась каждую секунду ?
В 6-й версии добавлена функция EverySec
В 5-й версии нужно самостоятельно реализовать что-то похожее:
— Завести справочник, в котором хранится время вычисления для каждого канала. Если канал только один, то справочник не нужен, а достаточно обычной переменной.
— При вычислении формулы проверять, прошла ли секунда с предыдущего вычисления27.10.2022 в 15:42 #25725MikhailМодераторpublic DateTime CalcTime = DateTime.MinValue; public double MyFunc() { DateTime utcNow = DateTime.UtcNow; if ((utcNow - CalcTime).TotalSeconds >= 1) { CalcTime = utcNow; return Val() + 2; } return Val(); }
Формулу не проверял.
28.10.2022 в 06:37 #25728fergus2022УчастникС данной формулой получилось следующее.
Имеем изначально Часовой расход = 0.490 м3.
Накопленный расход=Накопленный+(0.490/3600)Получаем, что накопленный расход каждую секунду увеличивается на 0.00027. Соотв. при проверке умножением на 3600, получаем за час 0.972. А должно быть 0.490
28.10.2022 в 07:11 #25729fergus2022УчастникКароче получилось примерно 0.504, впринципе подходит. А эту формулу можно два раза использовать для двух накопленных расходов ? Вроде формулы одинаковые, но когда с двумя запускаю, получаю:
2022-10-28 03:56:09 <ubuntu><root><ERR> Error compiling the source code of the formulas: Line 609, column 17: error CS0102: The type <code>Scada.Server.Engine.CalcEngine' already contains a definition for</code>CalcTime' See the file /opt/scada/ScadaServer/Log/CalcEngine.cs with the source code 2022-10-28 03:56:09 <ubuntu><root><ERR> Normal program execution is impossible 2022-10-28 04:06:32 <ubuntu><root><ACT> ScadaServerService is stopped
28.10.2022 в 07:17 #25730fergus2022УчастникТ.е у меня в таблице формул две этих формулы с разными переменными (Расход1 и Расход2 и тп.)
28.10.2022 в 17:14 #25733MikhailМодераторЕсли нужно продублировать формулу, то новой формуле нужно дать другое имя.
Либо усложнить существующую формулу, сделав её общей для любого количества каналов. -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.