Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: MasterScada и СОМ-сервер.

  1. #1

    По умолчанию MasterScada и СОМ-сервер.

    Добрый день.
    Возможно ли получить данные с СОМ-сервера запущенного на одной машине с MasterScadой?
    Если да, то как это сделать?
    Из инструментов имеется dll библиотека функций для работы с данным сервером, скомпилированная для TraceMode.

  2. #2

    По умолчанию

    Откуда конкретно нужно получить данные?
    Можно попробовать использовать для этой задачи ФБ "Скрипт C#".
    Спасибо.

  3. #3

    По умолчанию

    Такое ощущение, что СОМ-сервер самописный.
    Вот описание:
    Сервер БД СиУ ОД реализован на основе технологии COM (Component Object Model) (CLSID: 36972D4B 3A1F 4346 8BD9 5F2B252E54D4, LocalServer: DataLinkDriver.exe, ProgID: Data Link Driver) и предоставляет следующие программные интерфейсы:
     IDataLink (IID: 1EB93CD5 248A 41B4 9D15 E388CB39020B)
    Предоставляет данные объектов диспетчеризации; обеспечивает отправку команд диспетчера объектам диспетчеризации, предоставляет информацию о состоянии связи с объектами диспетчеризации и т.д.)
     IDebugWindow (IID: 98D266B4 4032 4986 A6E0 4CF20F1F38EB)
    Обеспечивает управление окном вывода отладочной информации сервера БД СиУ ОД.
     IFunctions (IID: 4313B408 5A5D 4A18 B79F 4A4C720EFAAB)
    Обеспечивает преобразование данных, которое сложно или невозможно выполнить средствами SCADA-системы.
    Все функции сервера БД СиУ ОД доступны SCADA-системе посредством использования динамически-линкуемой библиотеки «DataLinkDriverProxy.dll», которая предоставляет доступ к интерфейсам сервера БД СиУ ОД посредством экспортируемых функций.


    Он постоянно работает на машине и принимает данные с объекта.
    Разработчик достает данные из него TraceModой посредством C# с помощью данной библиотеки функций.

    Я попробовал подключить данную библиотеку в скрипте и напоролся на ошибку:
    Безымянный.JPG

  4. #4

    По умолчанию

    Вы уверены что данная библиотека написана на C#?
    Спасибо.

  5. #5

    По умолчанию

    судя по названию функций в ней - да.
     unsigned char Initialize
     unsigned char DataLink_GetServerConnectionStatus
     unsigned char DataLink_GetBackupConnectionStatus
    ...
     void DebugWindow_Show
     void DebugWindow_Hide
    ...

    и т.п. в принципе могу её прислать.

  6. #6

    По умолчанию

    Скорее всего это все же не Net библиотека - пришлите ее нам или проверьте сами через Visual Studio
    Но даже если она не .Net то можно сделать для нее оболочку. Примеры есть:
    http://msdn.microsoft.com/ru-ru/library/c3fd4a20.aspx
    Спасибо.

  7. #7

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Вы уверены что данная библиотека написана на C#?
    скорее всего библиотека написана на Visual С++ 9.0.
    библиотеку выслал.
    Последний раз редактировалось Kostic77; 19.09.2013 в 12:24. Причина: дополнение

  8. #8

    По умолчанию

    Да, программа написана не .Net.
    Вам нужно будет написать оболочку (dll библиотеку) в Visual Studio для обращения к этой библиотеке. А из скрипта уже будете обращаться к этой dll.
    Либо напишите ФБ. Документация прилагается к MasterSCADA
    Спасибо.

  9. #9

    По умолчанию

    Добрый день.
    Опробован способ импорта функций библиотеки.

    using System;
    using MasterSCADA.Script.FB;
    using MasterSCADA.Hlp;
    using FB;
    using System.Linq;
    using System.IO;

    using System.ComponentModel;
    using System.Runtime.InteropServices;
    using System.Security;
    using System.Security.Permissions;


    public partial class ФБ : ScriptBase
    {
    [DllImport(@"c:\DataLinkDriver\DataLinkProxy", SetLastError = true,
    EntryPoint = "DebugWindow_Show", CharSet = CharSet.Unicode)]
    private static extern void DebugWindow_Show();

    [DllImport(@"c:\DataLinkDriver\DataLinkProxy", SetLastError = true,
    EntryPoint = "DebugWindow_Hide", CharSet = CharSet.Unicode)]
    private static extern void DebugWindow_Hide();

    public override void Execute()
    {
    if (Параметр1 == true) {
    DebugWindow_Show();
    Параметр2 = true; }
    else {
    DebugWindow_Hide();
    Параметр2 = false;}
    }
    }


    Компиляция прошла успешно. Но при вызове импортированной функции ничего не происходит и прерывается выполнение кода скрипта...
    т.е. при изменении Параметра1 не происходит изменение Параметра2...
    если убрать вызовы импортированных функций в комментарии, то всё нормально - Параметр2 изменяется согласно Параметру1.

    Что я делаю не так?

  10. #10

    По умолчанию

    Попробуйте вызывать DebugWindow_Show() и DebugWindow_Hide() в BeginInvoke.
    Пример такой:
    RTManager.Instance.ThreadHolder.BeginInvoke(new ThreadStart(delegate
    {
    //ваш код
    }));

    В секцию using добавьте:
    using System.Threading;
    Спасибо.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. АС3. Скорость в СОМ порту.
    от VicSh в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 24.07.2013, 10:08
  2. Ответов: 4
    Последнее сообщение: 23.04.2012, 13:56
  3. ПЛК порты СОМ
    от igorsp в разделе Помощь Разработчикам
    Ответов: 1
    Последнее сообщение: 20.11.2008, 20:54
  4. ОВЕН ПЛК100+СОМ
    от uvwxyz в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 04.10.2007, 13:31

Ваши права

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