Показано с 1 по 10 из 74

Тема: MasterOPC и чтение файла с ПЛК

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #17

    По умолчанию

    Добрый день! В продолжение темы. Есть архив с данными:
    архив.csv.txt

    Обрабатываю его скриптом:
    Код:
    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());			
    		}
    		
    	}
    
    }
    код скрипта.txt

    На выходе получаю некорректный массив:
    массив_после обработки.csv.txt

    Не могу понять в чём дело. Перепробовал массу вариантов обработки, опросов (периодический/по изменению/входов-выходов), но корректный массив с данными не могу получить. Что-то не так в коде скрипта?
    Последний раз редактировалось energvk; 16.05.2017 в 15:14.

Похожие темы

  1. Ответов: 17
    Последнее сообщение: 28.03.2025, 13:34
  2. Сохранение/чтение текстового файла
    от Boris_K в разделе Master SCADA 3
    Ответов: 7
    Последнее сообщение: 18.02.2015, 11:30
  3. ПЛК 154. На ПЛК нет файла конфигурации DEFAULT.PRG
    от Юрий Поляков в разделе ПЛК1хх
    Ответов: 12
    Последнее сообщение: 04.04.2012, 22:04
  4. Чтение файла посредством plcIO
    от Назаров Александр в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 26.10.2008, 13:21
  5. !!!чтение данных из файла на компе
    от max в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 20.10.2008, 11:10

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •