По-моему сам выключал
По-моему сам выключал
Ещё небольшой вопрос: показания архива считываются и значения на тренде есть. Но задумка такая, в плк у меня биты упаковываются в WORD. Соответственно, я хочу полученный архив распаковать на биты, битам присвоить соответствующее событие,которое сохранялось бы в журнале. Например, АВАРИЯ1, АВАРИЯ2 и т.п. и чтобы время соответствовало времени в архивном файле.
Но пока не получается. Не подскажите направление?)
Задача не очень простая. Сначала вам нужно извлечь из архива данные и обработать их, затем на основе этих данных сформировать сообщения.
Эту задачу можно решить только через ФБ "Скрипт C#". Вот тут есть пример скрипта получающего значения:
http://www.owen.ru/forum/showthread....l=1#post137117
Примеры генерации сообщений из скрипта есть в этой теме:
http://www.owen.ru/forum/showthread.php?t=17504
Спасибо.
Понял, попробую разобраться, спасибо.
Н-да, тёмный лес для меня
Не пойму, как указать время
Код:var startTime= //время начала считывания архива var endTime= //время конца считывания архива
Ну в вашем случае StartTime - это последнее значение которое вы считывали (сохраните его между перезапусками в отдельной переменной), а endTime - время последней архивной записи переменной (LastItemTime).
Спасибо.
Добрый день! Снова засел таки за решение желаемой задачи. Вроде дело сдвинулось с мертвой точки. Прописал скрипт:
Ошибок компиляции нет.Код:using System; using MasterSCADA.Script.FB; using MasterSCADA.Hlp; using MasterSCADA.Hlp.Archive; using FB; using System.Linq; public partial class ФБ : ScriptBase { public override void Execute() { string name=HostFB.TreeItemHlp.FullName+".Входы."+"Вход"; var elem = (ITreePinHlp)HostFB.TreeItemHlp.Project.Item(name) ; PinDataArchiveHlp k=elem.DataArchiveItem; var startTime=k.FirstItemTime; //время начала считывания архива var endTime=k.LastItemTime; //время конца считывания архива var mas=k.Read(startTime, endTime, true); //читаем архив //mas - коллекция значений Значение=Convert.ToDouble(mas[0].Value); //получаем значение нулевого элемента коллекции Время=mas[0].Time.ToLocalTime(); //получаем время нулевого элемента коллекции } }
Запускаю проект в режим исполнения, на входе скрипта вижу архивные значения:
avar_jur.JPG
При этом на выходах "Значение" и "Время" пусто.
avar_jur_1.JPG
Так и должно быть или я как то неправильно применяю скрипт?
На входах неопределенное значение - возможно скрипт просто ни разу не выполнился. Попробуйте включить периодический опрос или прописать код в методе Start.
Спасибо.
Удалил архив данных, перезапустил, заработало.
Массив данных формируется, на выходах "Значение" и "Время" получаю значения первого элемента массива. Теперь не знаю куда двигаться дальше. В задумке распаковка значений в биты и формирование на их основании сообщений.
P.S.
Как лучше это сделать?Ну в вашем случае StartTime - это последнее значение которое вы считывали (сохраните его между перезапусками в отдельной переменной)