Добрый день! В продолжение темы. Есть архив с данными:
Вложение 31172
Обрабатываю его скриптом:
Вложение 31174Код:using System;
using InSAT.OPC;
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using System.Linq;
using MasterSCADALib;
using System.Collections.Generic;
using MasterSCADA.Common.Events;
using MasterSCADA.Hlp.Pins;
using MasterSCADA.Hlp.Events;
using MasterSCADA.Hlp.Archive;
using MasterSCADA.Archive.Events;
public partial class ФБ : ScriptBase
{
DateTime startArchT = new DateTime(); // переменная начала считывания архива
//string name="Событие";
public override void Execute() //алгоритм выполнения записывается в теле процедуры Execute()
{
//Получаем архивные данные
string events=HostFB.TreeItemHlp.FullName+".Входы."+"Вход"; //путь до входа скрипта
var elem = (ITreePinHlp)HostFB.TreeItemHlp.Project.Item(events);
PinDataArchiveHlp k=elem.DataArchiveItem; //переменная из архива
//if (startArchT==null) //если время не определено, начинаем считывание сначала архива
//{
//startArchT=k.FirstItemTime;
//}
var startArch=k.FirstItemTime; //начало считывания архива
var endArch=k.LastItemTime; //конец считывания архива
var eventsArr=k.Read(startArch, endArch, true); //записываем считанные данные из архива в массив
//startArchT=k.LastItemTime; //присваиваем время начала архива по последней считанной записи
Параметр1=eventsArr.Count();
//Int16? eventsVal=null; //код аварии
//НомерСобытия=Convert.ToInt16(eventsArr[Convert.ToByte(eventsArr.Count())].Value); //получаем код аварии
//ВремяСобытия=Convert.ToString(eventsArr[Convert.ToByte(eventsArr.Count())].Time.ToLocalTime());
for (int i=0;i<eventsArr.Count();i++)
{
DateTime? TStart=null; //время начала
Int16? eventsVal=null; //код аварии
eventsVal=Convert.ToInt16(eventsArr[i].Value); //получаем код аварии
//Параметр1=Convert.ToInt16(eventsArr[i].Value);
НомерСобытия=eventsVal;
ВремяСобытия=Convert.ToString(eventsArr[i].Time.ToLocalTime());
}
}
}
На выходе получаю некорректный массив:
Вложение 31173
Не могу понять в чём дело. Перепробовал массу вариантов обработки, опросов (периодический/по изменению/входов-выходов), но корректный массив с данными не могу получить. Что-то не так в коде скрипта?