Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Клиент в сервер, сервер в клиент

 Ответить Ответить
Автор
Сообщение
vimar_sys Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 08 Май 2009
Online Status: Offline
Публикации: 25
Свойства публикации Свойства публикации   Ответить, цитируя автора - vimar_sys Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Клиент в сервер, сервер в клиент
    Опубликовано: 15 Октябрь 2009 08:38
Возникла такая задача: есть компьютер-сервер на котором стоит opc-сервер, есть компьютер-клиент, который удалённо (по dcom) получает теги от этого opc сервера. Необходимо чтобы при выходе компьютера сервера из строя компьютер клиент переключался в режим сервера и соответственно получал теги локально. Может кто подскажет как это организовать?
Наверх
OPCUser Смотреть выпадающим
Новичок
Новичок


Присоединился: 15 Октябрь 2009
Категория: Kazakhstan
Online Status: Offline
Публикации: 1
Свойства публикации Свойства публикации   Ответить, цитируя автора - OPCUser Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Октябрь 2009 12:23
1 действие. Остановить OPC-клиент на компьютере-клиенте с конфигурационным файлом, настроенным на удаленный OPC-сервер.
2 действие. Запустить OPC-сервер на компьютере-клиенте
3 действие. Перезапустить OPC-клиент на компьютере-клиенте с другим конфигурационным файлом, настроенным на локальный OPC-сервер.

Эти действия могут быть осуществлены вручную или автоматически.
При автоматическом варианте - требуется сформировать событие отказа работы удаленного OPC-сервера.

А есть возможность сразу запустить OPC-сервер на компьютере-клиенте, одновременно с OPC-сервером на компьютере-сервере?


Наверх
vimar_sys Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 08 Май 2009
Online Status: Offline
Публикации: 25
Свойства публикации Свойства публикации   Ответить, цитируя автора - vimar_sys Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Октябрь 2009 13:31
Нет возвожности. Потому что два экземпляра опс станут обращатся к одному и тому же com порту, и последний из них не будет работать
Наверх
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Октябрь 2009 16:48
Первоначально опубликовано vimar_sys

Нет возвожности. Потому что два экземпляра опс станут обращатся к одному и тому же com порту, и последний из них не будет работать

Организовать гарантированно разграниченный доступ к разделяемому ресурсу с использованием COM, DCOM нет никакой возможности. Так как драйвер удаленного порта использует гораздо более надежный способ связывания всегда остается место для ситуации, когда связь с OPC уже потеряна и можно предположить что он не работает, но на самом деле он функционирует занимая разделяемый ресурс но не доступен удаленным клиентам. Например при перевыборах мастербраузера сети. Да DCOM вообще штука корявая. Необходим надежный механизм контроля доступа к разделяемому ресурсу, а также способ завершения некорректно работающего приложения. В общем огород еще тот городить придется. Я когда экспериментировал с такой ерундой (не доделал), набросал два приложения которые рулились через COM порт каждое выполнялось на своей машине и в зависимости от состояний контролируемых процессов партнера предпринимало какие нибудь действия. Думаю можно использовать в место COM порта сетевые сокеты
Наверх
vimar_sys Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 08 Май 2009
Online Status: Offline
Публикации: 25
Свойства публикации Свойства публикации   Ответить, цитируя автора - vimar_sys Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 16 Октябрь 2009 07:48
А может есть примеры на языке программирования для работы с dcom или полезные ссылки, например я мог бы с помощью своей программы на компьютере-сервере установить настройки dcom для opc и opcenum "запускать приложение на данном компьютере", а на клиенте "запускать на указанном" (там указал бы сервер), если компьютер-сервер выходит из строя - выключаю его. Перезагружаю компьютер-клиент, после загрузки например, вылетает окно "Использовать как сервер" - "Да" "Нет", если да, то программно изменяются настройки DCOM для опс и опсенум "Запускать приложение на данном компьютере" и клиент станет сервером.
Наверх
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 16 Октябрь 2009 08:06
Таких примеров у меня нет, есть примеры реализации опс, надо искать. Но могу сказать сразу, что для запуска с использованием настройки "запускать на указанном компьютере" необходима прокси заглушка а для ее создания нужен tlb файл для опс, а его я ни у кого кроме Emmersona (DeltaV) ни разу не видел.
Наверх
vimar_sys Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 08 Май 2009
Online Status: Offline
Публикации: 25
Свойства публикации Свойства публикации   Ответить, цитируя автора - vimar_sys Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 16 Октябрь 2009 08:53
Ладно, если чё получится напишу.
Наверх
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 16 Октябрь 2009 16:12
Первоначально опубликовано Dismay

Таких примеров у меня нет, есть примеры реализации опс, надо искать. Но могу сказать сразу, что для запуска с использованием настройки "запускать на указанном компьютере" необходима прокси заглушка а для ее создания нужен tlb файл для опс, а его я ни у кого кроме Emmersona (DeltaV) ни разу не видел.


Пожалуй тут я не все возможности описал, если на удаленном хосте развернуть опс сервер и в настройках DCOM указать ему хост где уже работает боевой опс то все работает (проверил только что на CoDeSys OPC). По сути локальный прокси по умолчанию будет перенацелен на удаленный класс. Хотел тиражировать класс что бы было два сервера один удаленный один локальный но пока не получилось. Если получится то переключение серверов будет выполнятся просто заменой конфига OPC клиента а не перенастройкой OPC сервера в dcom, что по моему проще
Наверх
vimar_sys Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 08 Май 2009
Online Status: Offline
Публикации: 25
Свойства публикации Свойства публикации   Ответить, цитируя автора - vimar_sys Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Октябрь 2009 08:54
Так ну вот как-то получилось...
Я установил на обоих компах следующие настройки dcom.
Для OpcEnum и для Fastwel opc на вкладке "Размещение" указал "запустить приложение на данном компьютере" и "запустить приложение на указанном компьютере". Затем решил проверить если отключать эти галочки, то в реестре должны изменяться значения. Я взял утиллиту "regshot" сканировал систему до изменения, потом убрал галочку "запустить приложение на данном компьютере", снова сканировал и увидел что значения для опс меняется с LocalServer на _LocalServer
В результате сделал два reg файла с настройками для сервера и для клиентами, которые при запуске только включают и отключают опцию "запустить приложение на данном компьютере", далее чтобы запустить эти файлы через функцию shell (vba) пришлось создать bat файл в котором прописал: "regedit/s server.reg" (ключ /s для отмены подтверждающего меню, чтобы конечному пользователю не пришлось тыкать ОК), такой же файл и для клиента. Потом создал в gen32 форму с двумя кнопками "сервер" и "клиент" на каждую прописал свой bat файл. В итоге всё получилось. Запускаю компьютер - сервер тыкаю в gen32 использовать как сервер, на удалённом как клиент всё работает. И наоборот. Самое примечательное что регистрация компонентов происходит одинаково при установке программ код приложения не меняется и переписывать содержимое reg файлов нет необходимости. На всякий случай вот пример reg и bat файлов
B5424_Settings.rar
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz