Подскажите, где читать и смотреть. Хочу в отчет вывести все аварийные сообщения за последний сутки. Сообщения именно типа "Авария". Не могу найти в примерах и хелпе как выводить архив сообщений.
Вид для печати
Подскажите, где читать и смотреть. Хочу в отчет вывести все аварийные сообщения за последний сутки. Сообщения именно типа "Авария". Не могу найти в примерах и хелпе как выводить архив сообщений.
Редактор отчетов работает только с архивом данных, и не работает с архивом сообщений.
Как вариант - можно с помощью скрипта отслеживать появление событий и записывать их на выходы скрипта. А уже эти выходы скрипта использовать в редакторе отчетов.
В приложении проект с несколькими различными скриптами для работы с архивом сообщений, вам нужен пример "Отслеживание сообщений категорий и источников".
Подробнее также описано здесь:
http://blog.insat.ru/2016/08/c-masterscada_13.html
Это я понимаю. А есть ли свойство в API типа "Имя родительского объекта" или надо разбирать весь путь, полученный по FullName, и выдирать оттуда предпоследний элемент?
HostFB.TreeItemHlp.ParentObject.Name
Но вообще лучшее решение - сделать Команды которые будут содержать имена объектов. С помощью скрипта в режиме разработке по команде DoAction перебирать все объекты вниз, искать значения и писать в них имя родительского объекта.
sing System;
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using System.Linq;
using MasterSCADALib;
using MasterSCADA.Common;
using MGDesign.MasterSCADA;
using MGDesign.Hosts;
using MGDesign.Items;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
public partial class ФБ : ScriptBase
{
string NewName; // новое имя из имени объекта
//чтобы выполнить скрипт - нажмите кнопку DoAction
public override void DoAction()
{
var elem = (ITreeItemHlp)HostFB.TreeItemHlp.Project.ObjectTre eRootItem; // устанавливаем местоположение скрипта как в корневом объекте
elem.NavigateChilds(delegate(ITreeObjectHlp item)
{
if (item.ObjectType != EObjectType.otFolder) //проверка что переменная это объект
return true; //если не объект - переход к следующему объекту
//создание переменной команды "Имя_Объекта"
var name=(ITreePinHlp)HostFB.TreeItemHlp.Project.Item( item.FullName+".Имя_Объекта");
if (name==null) return true; //если такой команды нет - переход к следующему объекту
string StrName=name.ParentObject.Name; //определяем имя объекта
name.ConstValue=StrName; //записываем в константу
name.ApplyChange(""); //применяем
return true;
}, TreeItemMask.Object, (NavigateItemsFlags)0);
}
}
Скрипт сделан усечением из другого - может быть с ошибками, но принцип мы думаем ясен.
Спасибо. Вот рабочий вариант Скрипта.
using System;
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using MasterSCADALib;
using MasterSCADA.Common;
public partial class ФБ : ScriptBase
{
string NewName; // новое имя из имени объекта
//чтобы выполнить скрипт - нажмите кнопку DoAction
public override void DoAction()
{
var elem = (ITreeItemHlp)HostFB.TreeItemHlp.Project.ObjectTre eRootItem; // устанавливаем местоположение скрипта как в корневом объекте
elem.NavigateChilds(delegate(ITreeObjectHlp item)
{
if (item.ObjectType != EObjectType.otFolder) //проверка что переменная это объект
return true; //если не объект - переход к следующему объекту
//создание переменной команды "Имя_Объекта"
var name=(ITreePinHlp)HostFB.TreeItemHlp.Project.Item( item.FullName+".Имя_Объекта");
if (name==null) return true; //если такой команды нет - переход к следующему объекту
string StrName=name.ParentObject.Name; //определяем имя объекта
name.ConstValue=StrName; //записываем в константу
name.ApplyChange(""); //применяем
return true;
}, TreeItemMask.Object, (NavigateItemsFlags)0);
}
}
ScadaMaster, подскажите пожалуйста, когда будет решена проблема с WORD_TO_INT?
Мы сообщим когда разберемся с проблемой.
Подскажите вот такую вещь, пожалуйста. Доделываю проект, внешних переменных немного - 250. Объектов 1500, фб2100 штук. Ввод аналоговых параметров работает хорошо. Тренды рисуются, даже отчет аварийных сообщений приделал. Но никак не могу добиться быстродействия на дискретных сигналах. Кнопки жмутся по 2-3 секунды, сигналы управления еле уходят в плк. Настройки опроса такие: опрос ОРС сервера 50мс, галка период. опрос объектов снята. Передача данных ОРС серверу по изменению входов.
В настройке самого ОРС сервера опрос каждые 100мс.
ПЛК - S7-1200, OPC сервер ваш, от Инсат.
Добавлял и контрол Кнопка из палитры "Управление". Тупит моя скада, тупит.
Рад любому совету, в каком направлении двигаться.