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

Тема: MasterOPC Server : запуск внешней программы.

  1. #1

    По умолчанию MasterOPC Server : запуск внешней программы.

    Здравствуйте, у меня вопрос по MasterOPC Universal Modbus Server.
    Наши интеграторы обратились в отдел АСУ за помощью : они давно работают с MasterSCADA и хотят подключить к ней теплосчетчики модели ТЭМ-104 производства Республика Беларусь. Проблема в том, что эти приборы очень простые и не умеют работать по modbus или какому-то другому распространенному протоколу. Для связи с ПК используется RS-232 и свой протокол обмена. В комплекте с прибором идет своя программа для получения данных с прибора.
    Т.е. через MasterOPC Universal Modbus Server просто так взять показания не получится. Для внутренних нужд предприятия в свое время мы разработали программу на Delphi, которая снимает показания с прибора, также как это делает программа от производителя. Поэтому для интеграции теплосчетчика и MasterOPC мы планировали следующую схему
    1) при начале опроса MasterOPC с помощью встроенного скриптового языка запускает нашу программу.
    2) наша программа снимает показания и записывает их во временный текстовый файл.
    3) MasterOPC считывает показания и заносит их в нужные тэги, а затем удаляет временный файл.
    4) MasterSCADA «видит» тэги и показывает то что надо на монитор
    При этом com-порт MasterOPC вообще не использует. С ним работает только наша программа.
    Проблема возникла на шаге 1. Насколько я понял, единственный способ запустить внешнее приложение в MasterOPC это функция os.execute(command). Проблема в том, что при запуске видно черное окно консоли. И это очень неудобно, потому что оно может загораживать нужную информацию. Я понимаю, что это особенность Lua, которая используется в качестве скриптового языка и фактически, когда я вызываю
    Код:
    os.execute(command)
    в систему приходит
    Код:
    cmd /C command
    и поэтому от окошка консоли никак не избавиться.
    Собственно вопрос: можно ли как-то запускать внешнее приложение в скрытом режиме? Или может быть можно использовать COM-объекты в MasterOPC? Мы бы тогда просто написали com-wrapper для приложения и проблема была бы исчерпана.
    Вариант переписать программу с Delphi на Lua пока не рассматривается из-за сильной громоздкости протокола.
    Я пробовал подключить к MasterOPC модули для Lua - LuaCOM и WinApi, но они у меня даже не захотели нормально подключаться. Может я что-то дела не так или использовал не ту версию.

  2. #2

    По умолчанию

    А протокол известен? Не удобнее ли поддержать протокол непосредственно в ОРС сервере?
    У нас есть специальная документация где описывается как реализовывать собственные протоколы. Никаких дополнительных библиотек при этом использовать не потребуется - есть специальные встроенные функции.
    Напишите нам на support - мы вышлем вам эту документацию. Несколько наших клиентов уже успешно поддержали собственные протоколы, при этом не имея глубоких знаний программирования.
    Спасибо.

  3. #3

    По умолчанию

    Да. Известен, иначе как бы мы его реализовали на delphi.
    У нас тут уже вечер, так что развернуто его описать смогу только завтра. В двух словах: данные считываются прямо из памяти, т.е.
    1) формируем пакет-запрос, а именно - тип комманды, откуда и сколько памяти нужно считать, хитрорасчитанная контрольная сумма.
    2) в результате получаем ответ - тоже пакет, из него надо вычленить служебные данные и сам кусок памяти прибора. Затем проверяем контрольную сумму и если все ок, то опять переходим к пункту 1, чтобы считать очередной кусок памяти.
    За раз память считать нельзя, потому что размер максимальный размер пакета равен 256 байтам.
    Считать только нужный байт тоже не получится, потому что память считывается только по смещениям кратным определенной величине - я уже не помню сколько - завтра надо глянуть в исходники.
    После того как память считали, из неё хитрой битовой арифметикой и таблица смещения вычленяем нужные данные.
    Ну а кроме этого, нужно реализовать работу с GSM модемом.

    Переделывать все это на Lua, когда есть апробированное решение на delphi пока не хочется.

  4. #4

    По умолчанию

    Цитата Сообщение от dimaby Посмотреть сообщение
    Переделывать все это на Lua, когда есть апробированное решение на delphi пока не хочется.
    Это вариант:
    Цитата Сообщение от dimaby Посмотреть сообщение
    1) при начале опроса MasterOPC с помощью встроенного скриптового языка запускает нашу программу.
    2) наша программа снимает показания и записывает их во временный текстовый файл.
    3) MasterOPC считывает показания и заносит их в нужные тэги, а затем удаляет временный файл.
    4) MasterSCADA «видит» тэги и показывает то что надо на монитор
    При этом com-порт MasterOPC вообще не использует. С ним работает только наша программа.
    Скорее всего будет сложнее в реализации, и менее надежным.
    Вам стоит сначала рассмотреть вариант поддержки протокола в ОРС.
    Спасибо.

  5. #5

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Скорее всего будет сложнее в реализации, и менее надежным.
    Вам стоит сначала рассмотреть вариант поддержки протокола в ОРС.
    Не совсем понимаю, каким образом его поддерживать? Написать полностью свой opc-сервер или можно как-то интегрироваться с MasterOPC. Но я пока не представляю как осуществлять последнее.

  6. #6

    По умолчанию

    В нашем ОРС сервере, есть специальные функции для работы с последовательным портом. Используя их, можно легко поддержать собственный протокол.
    То есть вы используете наш Modbus OPC Server, реализуете на скриптах свой протокол и используете в дальнейших проектах.
    Напишите нам письмо на support - мы дадим вам документацию.
    Спасибо.

  7. #7

    По умолчанию

    Ok, а какой e-mail у суппорта, потому что ни в about ни выше я его не вижу.

  8. #8

    По умолчанию

    support (собака) insat.ru
    Спасибо.

  9. #9

    По умолчанию

    Спасибо. Попробуем.

Похожие темы

  1. Modbus Universal MasterOPC Server в режиме slave
    от smk1635 в разделе Master SCADA 3
    Ответов: 25
    Последнее сообщение: 31.01.2023, 23:49
  2. Автозапуск OPC-сервера (MasterOPC Universal Modbus Server)
    от Слава1 в разделе Master SCADA 3
    Ответов: 11
    Последнее сообщение: 05.02.2013, 17:44
  3. Modbus Universal MasterOPC Server период опроса
    от hawk в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 23.10.2012, 21:09
  4. Подключение ПЛК-100 к MasterOPC Universal Modbus Server
    от Слава1 в разделе Master SCADA 3
    Ответов: 14
    Последнее сообщение: 08.06.2012, 00:34
  5. Modbus Universal MasterOPC Server и ПЛК мастер
    от smk1635 в разделе Master SCADA 3
    Ответов: 7
    Последнее сообщение: 13.09.2011, 22:22

Ваши права

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