PDA

Просмотр полной версии : Документация по скриптам C#



dzukp
28.05.2018, 16:52
Можно ли где-нибудь почерпнуть информацию по скриптам C# в виде документации? Необходимо добыть архивную информацию по значениям в нескольких объектах.

Есть несколько объектов, назовем их Объект_1, Объект_2, .. Объект_25. В каждом есть значение, назовем его "Значение". Это значение пишется в Архив. Как мне достать в одном скрипте архивы полей Значение всех объектов. Достать значения из архива, наверное, так:



var elem = object.GetPin("Значение").TreePinHlp;
var k=elem.DataArchiveItem;
DateTime EndTime=Конец.Value.ToUniversalTime();
DateTime StartTime=Начало.Value.ToUniversalTime();
var mas=k.Read(StartTime, EndTime, false);


А как получить Объект_1, Объект_2, как организовать навигацию по объектам не понятно.

SCADAMaster
28.05.2018, 17:07
Посмотрите здесь:
https://insat.ru/blog/?category=9

dzukp
29.05.2018, 16:13
А есть пример как сформировать отчет в скрипте? Алгоритм примерно такой: пройдусь по всем значениям из архива, найду критические значения (с этим примерно понятно). Эти значения необходимо поместить в табличку и показать на экране (как это реализовать пока не понятно).

SCADAMaster
29.05.2018, 17:06
Количество критических значений заранее известно?
То есть таблица статичная или динамическая?

dzukp
31.05.2018, 10:29
[QUOTE=SCADAMaster;279655]Количество критических значений заранее известно?
То есть таблица статичная или динамическая?[/QU

Есть ёмкость с жидкостью и аналоговым датчиком уровня, из нее периодически отливают. Когда все сольют также порционно доливают.

Пока в планах динамическая таблица такого вида:

____________________________
время | объем | изменение |
____________________________

SCADAMaster
31.05.2018, 11:04
Ну это можно отчет построить.

dzukp
31.05.2018, 11:29
Ну как построить? В таблицу не каждое значение объема, только момент начала каждого слива (или набора) жидкости.
Пример:
В емкости 0л.
Подождали.
В емкости залили до 50л.
Подождали.
В емкости залили до 100л.
Подождали.
и т.д.

Дальше решили построить отчет, пробежались по архиву нашли точки когда объем не менялся, записали в таблицу.

время | объем | разность
7:00 | 50 | 50
12:00 | 100 | 50
16:00 | 140 | 40

Я не понял как такое можно построить только редактором отчетов.

SCADAMaster
31.05.2018, 11:40
В дереве объектов добавляете скрипт. Добавляете в него нужные выходы.
Пишете нужную вам логику, и записываете значения объема и разности, с одинаковой меткой времени, как описано здесь:
https://insat.ru/blog/fb-skript-c-i-ego-ispolzovanie-v-masterscada-generatsiya-arkhiva/
SetValue("Выход", new PinValue(Value,Time));
А выходы уже тащите в отчет

dzukp
21.06.2018, 14:35
Подзабил немного, сейчас решил вернуться.

Получается, чтобы сделать отчет я должен скриптом добавить в архив нужные значения, потом построить отчет по этому архиву. Дальше нужно удалить из архива сгенерированые данные, а это сделать нельзя так как архив файловый. Я правильно понял вашу мысль?

SCADAMaster
21.06.2018, 14:47
А зачем удалять? Пусть себе лежат.
Просто сохраняйте значения с новыми метками времени.

dzukp
21.06.2018, 15:01
Еще отчет построить с другими датами которые пересекаются с датами из предыдущего отчета. Получиться что на один слив из бочки 2 записи. Нужно будет как то отделять старый отчет от нового.

Можно, наверное, поставить время хранения архива 2 мин. чтобы он сам удалился через 2 мин. после генерации. Так сработает?

SCADAMaster
21.06.2018, 15:14
Ну вы можете сохранить значения на выходе скрипта с текущей меткой времени. То есть метка времени значений в архиве - будет взято от текущего времени, а сам доступ к архиву можете брать за любой интервал времени.