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

Тема: API-документация для написания C#-скриптов в MasterSCADA 4D

  1. #1

    Question API-документация для написания C#-скриптов в MasterSCADA 4D

    Доброго времени суток!
    Подскажите пожалуйста, где можно найти документацию на API для работы через так называемые "С# скрипт" для программного редактирования проекта?
    Работаю с демонстрационной версией программы (версия: 1.2.18.28252(MPLCD_1_2_20220908.1)), брал с сайта insat.
    В директории программы, в папке \API\Doc только документация на портирование среды на новый тип контроллера. В папке \API\Examples\Projects пусто. В папке \API\SCADAProjects примеры проектов для нового контроллера, протокола и ФБ на C++.
    Отдельно отмечу, что мне нужна документация для разработки именно скрипта C# для MasterSCADA 4D, а не программы C# или ФБ C#.
    В методических материалах пусто, в экспресс-обучении скрипты не затронуты.

  2. #2
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,662

    По умолчанию

    Microsoft MSDN в вашем полном распоряжении.

    В документации должно быть описано как создавать сам скрипт, все остальное выше

  3. #3

    По умолчанию

    Честно говоря, не совсем понял, почему на сайте Microsoft должна располагаться документация сторонней компании InSAT / MPS Soft.
    Вопрос не в том "как вообще написать свой скрипт?", а в том "как написанный скрипт может взаимодействовать с программой MasterSCADA 4D для редактирования проекта?".
    По сути, меня интересует документация на содержимое следующих библиотек:
    • InSAT.Framework.Core.dll
    • InSAT.Framework.Script.dll
    • InSAT.Framework.MasterSCADA.dll
    • MasterSCADA.Common.dll
    • MasterSCADA.Scheme.dll
    • MasterSCADA.View.dll

  4. #4
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,662

    По умолчанию

    Я понял, вам больше нужны методы, которые создала компания Insat, тут вопрос, насколько закрыты библиотеки, но как минимум все public свойства открыты, грузите их в VS и смотрите что там и как.
    Фактически от компании нужны данные как правильно создавать скрипт, чтобы система его приняла, дальше VS + MSDN. Такой подход вроде не только у MS4D но и у других, независимо от языка при чем...

  5. #5

    По умолчанию

    Верно, указанные выше библиотеки "открываются" в VS, однако это не всегда добавляет ясности.
    Например, для добавления нового узла в дерево проекта MasterSCADA (в редакторе - область слева, ПКМ >> Добавить >> [Тип элемента]) используется объект класса InSAT.Framework.Core.Services.Item.ItemsManagement .ItemsManagementService, в котором есть перегруженные метод: InsertAutoChild, InsertChild и InsertChildDef. Есть вариант перегрузки, при котором все 3 метода принимают только 1 параметр: объект класса InSAT.Framework.Core.DataModel.Types.ItemType. Вопрос в том, при каких обстоятельствах какой метод нужно применять? Методом тыка выяснилось, что при редактировании объектов HMI метод InsertAutoChild не создает нового узла, однако этот же метод прекрасно работает для не-HMI объектов (т.е. по сути, данный метод не работает при программном редактировании мнемосхем).
    Это просто как пример, не все поля/методы/свойства/перечисления библиотеки InSAT / MPS Soft интуитивно понятны (т.е. не очевидны их рамки применимости).
    Поэтому меня и интересует наличие источника информации по указанному мною API. Просто, может я где-то проглядел и не заметил обучалки/развернутой справки/секретного форума.
    Пока вырисовывается ситуация, что нужно просто обращаться в поддержку.

  6. #6

    По умолчанию

    Цитата Сообщение от Azeront Посмотреть сообщение
    Верно, указанные выше библиотеки "открываются" в VS, однако это не всегда добавляет ясности.
    Например, для добавления нового узла в дерево проекта MasterSCADA (в редакторе - область слева, ПКМ >> Добавить >> [Тип элемента]) используется объект класса InSAT.Framework.Core.Services.Item.ItemsManagement .ItemsManagementService, в котором есть перегруженные метод: InsertAutoChild, InsertChild и InsertChildDef. Есть вариант перегрузки, при котором все 3 метода принимают только 1 параметр: объект класса InSAT.Framework.Core.DataModel.Types.ItemType. Вопрос в том, при каких обстоятельствах какой метод нужно применять? Методом тыка выяснилось, что при редактировании объектов HMI метод InsertAutoChild не создает нового узла, однако этот же метод прекрасно работает для не-HMI объектов (т.е. по сути, данный метод не работает при программном редактировании мнемосхем).
    Это просто как пример, не все поля/методы/свойства/перечисления библиотеки InSAT / MPS Soft интуитивно понятны (т.е. не очевидны их рамки применимости).
    Поэтому меня и интересует наличие источника информации по указанному мною API. Просто, может я где-то проглядел и не заметил обучалки/развернутой справки/секретного форума.
    Пока вырисовывается ситуация, что нужно просто обращаться в поддержку.
    Документации в открытом доступе по этой теме нет. Техподдержка может выслать документацию, где описана вся объектная модель, но там все достаточно сжато и разобраться тяжело. Сейчас идет работа над курсом, где будут в доступной форме описано, как реализовать самые популярные действия: автоматическое связывание переменных, добавление экземпляров в проект, редактирование программ и мнемосхем.

  7. #7

    По умолчанию

    Цитата Сообщение от Maria Momotova Посмотреть сообщение
    Документации в открытом доступе по этой теме нет. Техподдержка может выслать документацию, где описана вся объектная модель, но там все достаточно сжато и разобраться тяжело. Сейчас идет работа над курсом, где будут в доступной форме описано, как реализовать самые популярные действия: автоматическое связывание переменных, добавление экземпляров в проект, редактирование программ и мнемосхем.
    Стоит подобная задача, в поддержке так же просто дали ссылку на папку....



    Как скоро появится ориентировочно?

  8. #8

    По умолчанию

    Цитата Сообщение от BorschovAN Посмотреть сообщение
    Стоит подобная задача, в поддержке так же просто дали ссылку на папку....



    Как скоро появится ориентировочно?
    В 2023 году. Точнее не могу сказать.

  9. #9

    По умолчанию

    Будет ли (или есть) возможность создать/вызвать некую winform (именно свою) c элементами интерфейса, произвести операции в ней с чем то (например с БД)?

  10. #10

    По умолчанию

    Цитата Сообщение от BorschovAN Посмотреть сообщение
    Будет ли (или есть) возможность создать/вызвать некую winform (именно свою) c элементами интерфейса...
    Такая возможность есть и сейчас.
    1. Создаете проект в VS, тип проекта - Библиотека классов. В самом проекте создаете нужную вам форму. Собираете проект и получаете .dll-файл.
    2. В MasterSCADA создаете скрипт, в окне редактирования скрипта, справа внизу выбираете вкладку "Ссылки на dll", на которой справа вверху кнопка "Добавить" (в виде плюса"). Нажимаете и выбираете .dll-файл с вашей библиотекой формы. Это действие скопирует ваш .dll-файл в каталог текущего проекта MasterSCADA (каталог \<Имя проекта>\dll_dt\).
    3. Пропишите само название вашей .dll-ки во вкладке "Ссылки на dll". Также во вкладке "Пространства имен" пропишите использование вашего namespace'a.
    4. В скрипте вызовите объект вашей формы:
    Код:
    public override void DoAction()
    {
      MyForm form = new MyForm();
      form.Show();
    }
    Пробовал вышеописанный метод для WPF, получилось.

    Не отходя от кассы, задам вопросы, которые появились при проведении вышеописанных манипуляций (не к автору вышеуказанного сообщения, а к разработчикам MasterSCADA).
    Вопрос #1: При использовании собственной DLL в MasterSCADA, эта DLL ищется либо в папке текущего проекта (каталог \<Имя проекта>\dll_dt\), либо в папке с самой СКАДой (каталог \MPSSoft\MasterSCADA 4D 1.2\bin\), однако это не всегда удобно, т.к. сам скрипт, использующий кастомную DLL, может находится в пользовательской библиотеке (каталог \Users\Public\Documents\MasterSCADA4D1.2\Libraries \<Имя библиотеки>\). Можно ли заставить MasterSCADA искать DLL-ки в пользовательской библиотеке, не трогая environment variables ОС?
    Вопрос #2: Для запуска собственной формы из скрипта MasterSCADA, использовалась пользовательская библиотека классов WPF, собранная для .NET Core 3.1. Однако если собрать эту же библиотеку для .NET 5.0 или выше, то при компиляции скрипта вываливалась ошибка о несовместимости версий. Есть ли какие-нибудь конкретные требования/ограничения на подключаемые собственные DLL-ки?

    Цитата Сообщение от BorschovAN Посмотреть сообщение
    ... произвести операции в ней с чем то (например с БД)?
    Не очень понял вопроса, с БД можно работать и без MasterSCADA?
    Если имеется ввиду взаимодействие собственной формы с проектом MasterSCADA (именно с проектом, на этапе его создания/редактирования, т.к. скрипты не предназначены для работы в run-time!, а для иного есть ФБ), то есть два варианта:
    Вариант 1: Часть логики будет в самой кастомной форме, а часть - в скрипте. Взаимодействие между логиками через поля и события кастомной формы.
    Вариант 2: Вся логика в кастомной форме, в нее же передаются данные о проекте - ссылка на экземпляр класса InSAT.Framework.Script.UI.Services.ScriptBase.
    НО! Это все теория, на практике не проверял .

Похожие темы

  1. Документация MasterSCADA и MasterOPC
    от SCADAMaster в разделе Master SCADA 4D
    Ответов: 46
    Последнее сообщение: 07.03.2024, 03:49
  2. Ответов: 23
    Последнее сообщение: 03.11.2019, 23:43
  3. Программы для написания эл.схем
    от pasha250383 в разделе Трёп (Курилка)
    Ответов: 13
    Последнее сообщение: 19.07.2014, 20:25
  4. Ответов: 2
    Последнее сообщение: 25.02.2011, 11:59
  5. Ответов: 0
    Последнее сообщение: 21.02.2011, 14:46

Ваши права

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