27.07.2024
IT

Настройка DCOM для OPC на Windows 7

Поразбиравшись какое-то время как правильно настроить передачу OPC-тегов по сети Ethernet я понял, что подобная настройка не совсем сложная, но слегка мудреная для тех, кто не связывался с настройкой Windows. Решил преподнести данный материал в своем блоге.

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

Общий план работ

Чтобы настройка не была головной болью, нужно соблюдать определенную последовательность действий.

  1. Введение — вода всякая 🙂
  2. Проверка OPC локально — OPC-клиент на сервере должен без проблем получать данные с локального OPC-сервера.
  3. Отключение брандмауэра — по-началу это упрощает настройку, пока еще нет четкого понимания что нужно разрешать.
  4. Настройка пользователей — связка логин/пароль должна быть одинаковой на обоих компьютерах.
  5. Настройка DCOM — общие настройки, обеспечивающие работоспособность DCOM на компьютерах.
  6. Настройка OpcEnum для работы через DCOM — служба, которая отображает OPC-сервера компьютера на котором она запущена.
  7. Настройка целевого OPC-сервера для работы через DCOM — в моем случае это CoDeSysOPCDA
  8. Включение брандмауэра и создание правил — с отключенным брандмауэром жить не комфортно! Здесь же и проверим как данные летают

 

Введение

У меня есть отдельные требования для настройки:

  • доступ к OPC-серверу будет осуществляться по логину и паролю
  • доступ будет осуществляться только к тому OPC-серверу, который мы укажем

Вариант где все для всех разрешено описывать не буду.

Что мы имеем:

  • Условный сервер (так и будем его далее называть) – этот компьютер связывается с контроллером. В моем случае это виртуальная машина с Windows 7 Professional SP1 с последними обновлениями и CoDeSys 3.4. Виртуалка имеет имя W7-DCOM-1.
  • В качестве контроллера выступает софтовый PLC от CoDeSys.
  • Условный клиент – компьютер с OPC DA клиентом — в моем случае это еще одна виртуалка с Windows 7 Professional SP1 с последними обновлениями, в качестве OPC-клиента я выбрал продукт от kassl.de. Виртуалка имеет имя W7-DCOM-2.
  • Обе виртуалки находятся в рабочей группе, домен отсутствует, связь между ними есть.

 

Проверка OPC локально

Для проверки я запустил OPC-клиент, подключился к предварительно настроенному OPC-серверу на сервере. После того как есть 100%-ая уверенность в работоспособности OPC-сервера локально можно приступать к настройке DCOM.

 

Отключение брандмауэра

Наша цель — настроить OPC через DCOM, а по-началу брандмауэр может в этом помешать. Поэтому сперва с отключенной защитой мы настраиваем наше ПО и убеждаемся, что все настроено и работает, а в конце подключаем защиту. Так проще искать ошибки в процессе.

 

Настройка пользователей

На обоих компьютерах должны быть пользователи с одинаковыми логинами и паролями, причем пароль должен быть не пустым. В домене можно использовать одну учетную запись. Для теста я выбрал логин opc и пароль opc — конечно же, не рекомендую использовать такую простую связку в продакшне 🙂

Итак, переходим к настройке пользователей. Текстовую последовательность я снабдил скриншотами, которые помогут проще ориентироваться в тексте. Конечно же, опытный пользователь может создать/настроить юзера так как ему будет угодно, тем не менее я предлагаю такой вариант.

  1. Запускаем компонент управления учетными записями пользователей control userpasswords2.
  2. В окне нажимаем кнопку Добавить для добавления нового пользователя в систему.
  3. В следующем окне задаем логин opc (поле Пользователь), и имя с описанием по желанию и жмем кнопку Далее.
  4. Задаем пароль opc и подтверждение, жмем Далее.
  5. Далее выбираем группу Администратор (или другую, которая позволит запускать OPC-сервер) и жмем кнопку Готово.
  6. Пользователь создан и появляется в списке Пользователи этого компьютера«. Для включения автологина, нужно выделить юзера в этом списке и снять галку Требовать ввод имени пользователя и пароля. Решать вам, нужен автологин или нет.Затем нужно сделать две вещи. Добавить юзера в группу Пользователи DCOM (таким образом всю настройку мы сможем выполнять для группы, а не для конкретного пользователя — это может быть полезно в будущем при смене пароля для opc или изменении пользователя) и настроить запрет смены пароля юзером (это на всякий случай). Для этого переходим на вкладку Дополнительно. В секции Дополнительное управление пользователями нажимаем кнопки Дополнительно (уж простите Майкрософт за тавтологию …).
  7. В появившемся окне слева выбираем Группы и дабл-клик на группу Пользователи DCOM.
  8. В открывшемся окне есть кнопка Добавить, которая запускает диалог добавление юзера в группу.
  9. В поле для ввода пишем логин opc и жмем кнопку OK, если все хорошо, то окно закроется …
  10. … а в следующем окне в списке Члены группы появится наш opc. Теперь можно закрыть окно.
  11. Далее слева выбираем пункт Пользователи и дважды кликнем на нашего opc, в появившемся окне ставим галки Запретить смену пароля пользователем и Срок действия не ограничен, подтверждаем кнопкой OK и закрываем окно настройки пользователей и групп.
  12. Также подтверждаем настройки кнопкой OK в оставшемся окне. Но окно не закроется, а выскочит просьба ввести логин и пароль пользователя для автологина. Введем данные нашего юзера и подтвердим кнопкой OK.

Внимание! Эти действия необходимо провести как на сервере, так и на клиенте.

 

Настройка DCOM

В данном разделе нужно настроить свойства DCOM по умолчанию на сервере, чтобы «все работало». Приступим.

  1. Запустим окно настройки DCOM командой dcomcnfg .
  2. Откроется окно Службы компонентов, в котором нужно будет раскрыть список Службы компонентов, а затем и список Компьютеры, где мы увидим еще один вложенный список Мой компьютер, на который нужно нажать правой кнопкой мыши и выбрать пункт меню Свойства.
  3. В появившемся окне свойств выбираем вкладку Свойства по умолчанию и устанавливаем следующие настройки:
    1. Галка Разрешить использование DCOM на этом компьютере — без нее DCOM работать не будет.
    2. В Уровень проверки подлинности по умолчанию выбираем Подключиться.
    3. В Уровень олицетворения по умолчанию выбираем Определить.
  4. После жмем кнопку OK. Система может предупредить о том, что будут изменены свойства DCOM — соглашайтесь. Окно Службы компонентов не закрывайте, оно нам еще понадобится.

Те же настройки необходимо провести и на клиенте за исключением пунктов 3.2 и 3.3 — они не повлияют на работу, но и не повредят. Самое главное, чтобы DCOM был разрешен.

 

Настройка OpcEnum для работы через DCOM

Служба OpcEnum отвечает за отображение OPC-серверов. Если ее настроить некорректно, то при браузинге серверов, вы не увидите ничего, кроме ошибок. Эту службу нужно настроить на сервере.

  1. В окне Служба компонентов должно уже быть открыто дерево до Настройка DCOM. Нужно выбрать этот элемент в левой части окна, и после этого в правой найти OpcEnum, кликнуть на него правой кнопкой мышки и выбрать пункт меню Свойства.
  2. Откроется окно свойств, и во вкладке Общие в списке Уровень проверки подлинности выбрать Подключиться.
  3. Во вкладке Размещение должен быть выбран пункт Запустить приложение на данном компьютере. Остальные галки должны быть сняты.
  4. Далее переходим к вкладке безопасность, где будем раздавать права на удаленный запуск, доступ и изменение настроек OpcEnum. Во всех трех случаях выбираем пункт Настроить, т.е. у нас должны быть активны три кнопки Изменить.
  5. Начнем с Разрешение на запуск и активацию. Нам нужно добавить нашу группу с необходимыми разрешениями, поэтому кликаем на кнопку Добавить.
  6. Вписываем (или ищем) Пользователи DCOM, жмем OK — группа должна добавиться.
  7. Итак, группа в списке, теперь надо проставить галки под словом Разрешить. (На скриншоте) Я поставил все галки, но для того чтобы служба работала по сети нам нужно лишь Удаленный запуск и Удаленная активация. После проставления галок жмем OK и открываем следующее окно — Права доступа.
  8. Точно так же добавляем нашу группу и разрешаем ей все, либо только Удаленный доступ, жмем OK и открываем окошко Разрешение на изменение настроек.
  9. В этом окне точно так же добавляем группу и разрешаем ей Полный доступ и Read — они ставятся одновременно и снимаются так же. Жмем OK и переходим ко вкладке Удостоверение окна свойств OpcEnum.
  10. Для службы OpcEnum возможно два варианта запуска:
    1. Системная учетная запись (только службы) — OPC-сервер будет запущен под системной учетной записью независимо от входа в систему. Данный вариант нам подходит и его советуют как более предпочтительный.
    2. Указанный пользователь — при данной настройке OPC-сервер будет  запущен от имени указанного нами пользователя в одном экземпляре, в независимости от того под какой учетной записью совершен вход. Этот вариант нравится мне больше, т.к. я люблю определенность, ведь в данном случае я сам указываю пользователя.
  11. Определившись нажимаем OK и переходим к перезапуску службы OpcEnum. Это можно сделать из того же окна: слева выбираем Службы (локальные), справа в  списке ищем OpcEnum, выбираем и перезапускаем нажатием на появившуюся ссылку.
  12. Дожидаемся перезапуска службы и переходим к клиенту.
  13. На клиенте запускаем OPC-клиент и пытаемся искать OPC-сервера, используя IP-адрес нашего сервера. Как видно на скриншоте — OPC-сервер найден.
  14. Но при попытке достучаться до тэгов прилетает отказ. Этого следовало ожидать, ведь мы еще не настраивали наш CoDeSysOPCDA.

 

Настройка целевого OPC-сервера для работы через DCOM

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

  1. В Настройка DCOM ищем необходимый OPC-сервер (в данном случае — CoDeSysOPCDA), тыкаем правой кнопкой мыши и выбираем свойства.
  2. На вкладке Общие выбираем Уровень проверки подлинности Подключиться.
  3. На вкладке Размещение должен быть выбран только пункт Запустить приложение на данном компьютере.
  4. На вкладке Безопасность группе Пользователи DCOM даем права на удаленный запуск, доступ и изменение настроек как и в случае с OpcEnum (ниже будут скриншоты).
  5. На вкладке Удостоверение у нас есть 4 варианта:
    1. Текущий пользователь — в этом случае OPC-сервер будет запускаться от имени вошедшего в систему пользователя. Можно использовать данный вариант, но необходимо на сервере авторизовываться под учетной записью opc, что может быть не всегда удобно. Но тем не менее можно выбрать этот вариант при условии, что сервер всегда будет запущен под учеткой opc.
    2. Запускающий пользователь — при авторизации пользователя будет запущен экземпляр OPC-сервера. Если к серверу будет подключено два клиента, то будет запущено два OPC-сервера. В одном случае это будет отжирать ресурсы, в другом — все кроме первого клиенты не будут видеть данных.
    3. Указанный пользователь — как и в случае с OpcEnum этот вариант предпочтительный потому, что при такой настройке будет запущен один экземпляр под необходимой учетной записью. Я выбираю этот вариант и ввожу логин и пароль предварительно созданного пользователя.
    4. Системная учетная запись (только службы) — для CoDeSysOPCDA этот вариант недоступен, поэтому не рассматриваем.
  6. После выбора одного из вариантов и нажатия на кнопку OK, нужно перезапустить OPC-сервер, если он запущен. В случае с CoDeSysOPCDA я вырубаю процесс сервера.
  7. Теперь переходим к компьютеру, на котором запущен OPC-клиент и пытаемся искать OPC-сервак на удаленном сервере. Стоит заметить, что мы должны увидеть список OPC-серверов без каких-либо проблем, как и в предыдущем разделе.
  8. Но после манипуляций описанных в этом разделе мы должны иметь возможность создать группу в клиенте, увидеть теги и их значения. Что мы и видим на последнем скриншоте, в галерее ниже.

 

Включение брандмауэра и создание правил

Конечно же, нельзя забывать об отключенной в самом начале защите. Но если включить фаервол без предварительно созданных правил, то клиент не сможет достучаться до сервера. Я рассматриваю брандмауэр Windows, т.к. он идет по умолчанию и есть у всех, кто настраивает DCOM. Опытный пользователь без труда настроит другое ПО по аналогии. Подробно текстом описывать не буду (скриншоты смотрите ниже), но вот необходимые правила:

  1. Разрешение на доступ извне для службы OpcEnum.
  2. Разрешение на доступ извне по 135-му TCP-порту.
  3. Разрешение на доступ извне для CoDeSysOCPDA.

Рекомендую следующую последовательность действий:

  1. Включить брандмауэр.
  2. Убедиться, что данные не проходят.
  3. Создать правила.
  4. Убедиться, что данные проходят.

Вот и все. Как видите, ничего сложного в пробросе OPC-тегов через DCOM нет. Самое главное, чтобы были необходимые права на выполнение всех манипуляций. Для настройки OPC-сервер в Windows XP воспользуйтесь этой статьей.

6 комментариев к «Настройка DCOM для OPC на Windows 7»

    1. Вечер добрый. IP удаленного сервера я взял в настройках сервера, т.к. этот сервер находится в моем ведении. Как в случае с виртуальным сервером (как в статье), так и в случае с реальными серверами непосредственно на рабочем месте.

  1. здравствуйте. что делать, если в списке «настройка DCOM» нет ни OPCEnum, ни CoDeSysOPCDA?

  2. Винда 7-ка не дает слишком простой пароль пользователя установить, так что как вы пароль орс установили — непонятно

    1. Павел, длина пароля зависит от политик безопасности. Можно пароль даже из одного символа ввести.

Добавить комментарий