PDA

Просмотр полной версии : Вычисление интервала



Dmitrijb
12.08.2020, 14:32
Добрый день, подскажите каким способом можно вычислить дату-время начала и конца когда переменная приняла определенное значение и когда изменилась на другое.
Необходимо эти дату-время использовать в отчете, для суммирования другой переменной в этом интервале.

SCADAMaster
12.08.2020, 14:43
Нужно это сделать в дереве объектов?
Единственный вариант - скриптом. Пример тут:
https://insat.ru/blog/fb-skript-c-i-ego-ispolzovanie-v-masterscada-obrabotka-arkhivov/

Dmitrijb
12.08.2020, 14:48
Спасибо буду пробовать.

Dmitrijb
13.08.2020, 14:45
Еще вопрос, где можно почитать про методы и их параметры и аргументы ,используемые в написании скриптов.

SCADAMaster
13.08.2020, 15:14
Самые основные способы применения - описаны в статьях блога.
В целом по работе с C# - смотрите в интернете.
Если нужны будут какие то взаимодействия со скадой в блоге не описанные - спрашивайте.

Dmitrijb
13.08.2020, 15:40
есть пара вопросов
1 Как обратиться ко всему архиву переменной, не задавая временного интервала (архив ограничен объемом или на 1год)
2 условие выборки метки времени начала когда переменная приняла значение и времени когда сменила значение

SCADAMaster
13.08.2020, 16:01
1. k.FirstItemTime и k.LastItemTime
2. Вам нужно пройти по архиву и определить нужное вам изменение

Dmitrijb
14.08.2020, 10:16
Добрый день, подскажите в коде, как мне объявить переменную Val вместо константы 643 чтобы бралось значение с еще одного входа скрипта,который будет задаваться


var elem = HostFB.InputGroup.GetPin("Вход").TreePinHlp;
var k=elem.DataArchiveItem;


var mas=k.Read(k.FirstItemTime, k.LastItemTime, false);
double? Val=643;
DateTime? TimeStamp1=null;
DateTime? TimeStamp2=null;
foreach (var element in mas)
{
if (Val.HasValue==false || Convert.ToDouble(element.Value)==Val.Value)
{
Val=Convert.ToDouble(element.Value);
TimeStamp1=element.Time.ToLocalTime();

SCADAMaster
14.08.2020, 10:25
Сделайте вход, дайте ему и это имя и указывайте.