Страница 331 из 765 ПерваяПервая ... 231281321329330331332333341381431 ... ПоследняяПоследняя
Показано с 3,301 по 3,310 из 7649

Тема: Вопросы начинающего

  1. #3301
    Пользователь
    Регистрация
    05.11.2011
    Адрес
    Томск
    Сообщений
    192

    По умолчанию

    Подскажите, где читать и смотреть. Хочу в отчет вывести все аварийные сообщения за последний сутки. Сообщения именно типа "Авария". Не могу найти в примерах и хелпе как выводить архив сообщений.

  2. #3302

    По умолчанию

    Редактор отчетов работает только с архивом данных, и не работает с архивом сообщений.
    Как вариант - можно с помощью скрипта отслеживать появление событий и записывать их на выходы скрипта. А уже эти выходы скрипта использовать в редакторе отчетов.
    В приложении проект с несколькими различными скриптами для работы с архивом сообщений, вам нужен пример "Отслеживание сообщений категорий и источников".
    Подробнее также описано здесь:
    http://blog.insat.ru/2016/08/c-masterscada_13.html
    Вложения Вложения
    Спасибо.

  3. #3303

    По умолчанию

    Это я понимаю. А есть ли свойство в API типа "Имя родительского объекта" или надо разбирать весь путь, полученный по FullName, и выдирать оттуда предпоследний элемент?
    Последний раз редактировалось Vini74; 13.09.2016 в 11:40.

  4. #3304

    По умолчанию

    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);
    }
    }

    Скрипт сделан усечением из другого - может быть с ошибками, но принцип мы думаем ясен.
    Спасибо.

  5. #3305

    По умолчанию

    Спасибо. Вот рабочий вариант Скрипта.

    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);
    }
    }

  6. #3306
    Пользователь
    Регистрация
    05.11.2011
    Адрес
    Томск
    Сообщений
    192

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Редактор отчетов работает только с архивом данных, и не работает с архивом сообщений.
    Как вариант - можно с помощью скрипта отслеживать появление событий и записывать их на выходы скрипта. А уже эти выходы скрипта использовать в редакторе отчетов.
    В приложении проект с несколькими различными скриптами для работы с архивом сообщений, вам нужен пример "Отслеживание сообщений категорий и источников".
    Подробнее также описано здесь:
    http://blog.insat.ru/2016/08/c-masterscada_13.html
    Т.е. это в отчете будут фиксироваться только единичные моменты формирования сообщений? Немного не понял предложенный подход.
    Если у меня 400 аварийных сообщений, мне надо 400 ФБ C#? И как их в одну таблицу сводить...

  7. #3307

    По умолчанию

    Цитата Сообщение от Amko Посмотреть сообщение
    Т.е. это в отчете будут фиксироваться только единичные моменты формирования сообщений? Немного не понял предложенный подход.
    На выходы скрипта можно записывать что угодно - начало возникновения сообщения, его окончание и т.д.

    Цитата Сообщение от Amko Посмотреть сообщение
    Если у меня 400 аварийных сообщений, мне надо 400 ФБ C#? И как их в одну таблицу сводить...
    Нет, ФБ будет один - он будет собирать данные со всего проекта.
    Спасибо.

  8. #3308

    По умолчанию

    ScadaMaster, подскажите пожалуйста, когда будет решена проблема с WORD_TO_INT?

  9. #3309

    По умолчанию

    Мы сообщим когда разберемся с проблемой.
    Спасибо.

  10. #3310
    Пользователь
    Регистрация
    05.11.2011
    Адрес
    Томск
    Сообщений
    192

    По умолчанию

    Подскажите вот такую вещь, пожалуйста. Доделываю проект, внешних переменных немного - 250. Объектов 1500, фб2100 штук. Ввод аналоговых параметров работает хорошо. Тренды рисуются, даже отчет аварийных сообщений приделал. Но никак не могу добиться быстродействия на дискретных сигналах. Кнопки жмутся по 2-3 секунды, сигналы управления еле уходят в плк. Настройки опроса такие: опрос ОРС сервера 50мс, галка период. опрос объектов снята. Передача данных ОРС серверу по изменению входов.
    В настройке самого ОРС сервера опрос каждые 100мс.
    ПЛК - S7-1200, OPC сервер ваш, от Инсат.

    Добавлял и контрол Кнопка из палитры "Управление". Тупит моя скада, тупит.
    Рад любому совету, в каком направлении двигаться.
    Последний раз редактировалось Amko; 15.09.2016 в 05:31.

Страница 331 из 765 ПерваяПервая ... 231281321329330331332333341381431 ... ПоследняяПоследняя

Похожие темы

  1. вопросы начинающего
    от Flomaster в разделе ПЛК1хх
    Ответов: 25
    Последнее сообщение: 11.03.2015, 20:50
  2. Ethernet - вопрос начинающего.
    от Продамщебень)) в разделе Сетевые технологии
    Ответов: 8
    Последнее сообщение: 20.06.2013, 16:35
  3. вопросы начинающего
    от Chifa в разделе Сетевые технологии
    Ответов: 1
    Последнее сообщение: 30.07.2010, 14:32
  4. вопрос начинающего
    от gladkiynikita в разделе Master SCADA 3
    Ответов: 1
    Последнее сообщение: 22.03.2010, 05:43
  5. Вопросы
    от Мурат в разделе Эксплуатация
    Ответов: 6
    Последнее сообщение: 27.01.2007, 03:24

Ваши права

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