Здравствуйте, у меня вопрос по 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, но они у меня даже не захотели нормально подключаться. Может я что-то дела не так или использовал не ту версию.