PDA

Просмотр полной версии : Multi-Protocol MasterOPC Server + туннелирование



Terminat
07.05.2020, 20:07
Запустил Multi-Protocol MasterOPC Server (32 тэга) с плагином opcdaclient с целью туннелирования в обход DCOM. Везде ОС Windows 10.

После настройки запустил через Автозагрузку как приложение: просто сделал ярлык с параметром NO, а не ссылку на .bat или .cmd. Туннелирует выше всяких похвал, весьма впечатлён! :) Но возникла такая проблема: при выходе из ОС OPC-сервер требует участия пользователя, ибо он запущен runtime. Операторов пугает запрос от ОС: либо завершить работу ОС принудительно, либо отменить выход и ответить на запрос OPC-сервера. Есть ли возможность обойти запрос OPC-сервера на выход из runtime?

Запуск OPC-сервера как сервиса у меня не прошел, поведение было такое-же, как и то, из за чего пришлось обходить DCOM (в моем случае выходит ситуация 'кто первый встал, того и тапки' - первый запущенный компьютер получает доступ, второй нет: BadCommFailure). Деталей по запуску как сервиса точно пока сообщить не могу. Ранее несколько раз работал по DCOM в Windows 7 и XP без особых проблем, т.е. опыт настройки есть. Но основной вопрос - абзацем выше.

SCADAMaster
07.05.2020, 20:52
Посмотрим что можно сделать. Либо по NO не будет требоваться подтверждение, либо сделаем настройку.

Terminat
10.05.2020, 19:07
Примем любой вариант, ибо сроки сдачи проекта уже наступили на пятки: тянули в битве с DCOM в Windows 10 до последнего инженера. :)

melky
10.05.2020, 20:10
У меня тоже ОРС работает только с тем, кто первый встал. Что Инсат (универсал, проверял на счетчике Меркурий), что Овен.

Настроить DCOM не смог от слова никак. Пользователя локального нет, только доменный. И программы, подключаясь к ОРС такое ощущение создают копии пользователей, не знаю как еще выразиться. В общем что-то в пользователях разное, что ОРС не нравится.

SCADAMaster
11.05.2020, 10:47
Примем любой вариант, ибо сроки сдачи проекта уже наступили на пятки: тянули в битве с DCOM в Windows 10 до последнего инженера. :)
Ну пока то вы можете использовать режим с запуском NO. Просто при остановке подтверждайте выход.

SCADAMaster
12.05.2020, 14:16
Выложим на следующей неделе.

Terminat
12.05.2020, 20:59
У меня тоже ОРС работает только с тем, кто первый встал. Что Инсат (универсал, проверял на счетчике Меркурий), что Овен.

Настроить DCOM не смог от слова никак. Пользователя локального нет, только доменный. И программы, подключаясь к ОРС такое ощущение создают копии пользователей, не знаю как еще выразиться. В общем что-то в пользователях разное, что ОРС не нравится.

Я подозреваю вот что: клиенты (местный и удаленный) дерутся за принципиально нерасшариваемый ресурс, последовательный порт. Нельзя открыть один порт двум желающими. Хотя никаких предпосылок по названиям настроек тут не видно. Кто запускает? Текущий пользователь. Где запускает? На данном компьютере, и т. д про 'запуск' и 'подключение'. Но, похоже, запускаются два экземпляра сервера, и второй получает отлуп при попытке занять COM-порт. Так что 'туннелирование' - это выход.
Я только подозреваю, но не утверждаю.

melky
12.05.2020, 22:08
Terminat прибор опрашивается ОРС, прибору дела нет. что у ОРС хотят получать данные двое или трое... И проблема на одном ПК с доменным пользователем, две разные Scada пытаются получить данные у ОРС, но только получает их только та, которая подключилась первой, у второй по нулям. Останавливаешь, запускаешь Scada в другой последовательности и все до наоборот, вторая начинает получать данные, а первая получает отлуп...

Другие ОРС пока не проверял... и ПК без доменного пользователя нет под рукой, чтобы проверить, действительно доменный пользователь виноват или нет...

SCADAMaster
12.05.2020, 23:28
Если скады пускаются под разными пользователями, и способ запуска в DCOM стоит "запускающий пользователь" то будет такое поведение.

melky
13.05.2020, 12:30
Еще раз. ПК ОДИН, пользователь на нем ОДИН, но доменный, локального нет.

MasterScada4D от какого пользователя запускается ? система или этот чертовый доменный ?
Как вообще посмотреть в Windows10 кто конкретно подключился к OPC при запуске MasterScada ?

SCADAMaster
13.05.2020, 12:56
Как вообще посмотреть в Windows10 кто конкретно подключился к OPC при запуске MasterScada ?
В диспетчере задач видно под каким пользователем запущен процесс.

Terminat
13.05.2020, 22:00
SCADAMaster, Вот я и подозреваю, что в Win10 пользователи с разных компьютеров, в остальном абсолютно идентичные, это разные пользователи. Работал в данном случае в workgroup, не в домене. Способ запуска проверенный: Текущий пользователь.

melky, Сразу скажу: у меня MasterSCADA 3 и 'боевой' OPC-сервер НЕ от InSAT, но тут скорее всего не в OPC-сервере дело. А вот поведение по DCOM - похоже. Ты исключил из рассмотрения последовательный COM-порт, используемый для опроса: его нельзя открыть дважды. Именно поэтому мои тестовые клиенты получали отлуп с резюме BadCommFailure - мои пояснения абзацем выше. Запуск (поправка: от имени одного пользователя) одновременно нескольких OPC-клиентов с одного компьютера, того, где OPC-сервер, никогда проблем не вызывало, потому про 'ПК ОДИН, пользователь на нем ОДИН' я не совсем понял. Наверное лучше будет отскочить в личные сообщения за деталями, если захочешь.

В любом случае туннелирование - это выход.

melky
13.05.2020, 22:07
Ну я постараюсь в ближайшее время проверить от кого же происходит запуск OPC при запуске MasterScada, потом буду думать...

з.ы. мне почему то казалось, что кто-то запускает OPC, начинается опрос (не важно какой линии связи, которая настроена в OPC), а второй (если тот же пользователь по DCOM) просто подключается к уже запущенному OPC и тянет с него данные. Непосредственно порт открывает то OPC сервер а не Scada...

Сейчас не помню, но когда ковырял OPC Овен, то вроде как запускался второй экземпляр OPC и вот тут то как раз COM порт закрыт и идите нафик... Возможно и тут та же ситуация.

SCADAMaster
14.05.2020, 09:14
з.ы. мне почему то казалось, что кто-то запускает OPC, начинается опрос (не важно какой линии связи, которая настроена в OPC), а второй (если тот же пользователь по DCOM) просто подключается к уже запущенному OPC и тянет с него данные. Непосредственно порт открывает то OPC сервер а не Scada...

Это зависит от настроек DCOM.
Второй клиент может пытаться запустить второй экземпляр сервера, что и будет приводить к таким проблемам.
По MS4 лучше сделать вопрос в соответствующей ветке форума.