Клиент в сервер, сервер в клиент |
Ответить |
Автор | |
Новичок Присоединился: 08 Май 2009 Online Status: Offline Публикации: 25 |
Опубликовано: 15 Октябрь 2009 08:38 |
Возникла такая задача: есть компьютер-сервер на котором стоит opc-сервер, есть компьютер-клиент, который удалённо (по dcom) получает теги от этого opc сервера. Необходимо чтобы при выходе компьютера сервера из строя компьютер клиент переключался в режим сервера и соответственно получал теги локально. Может кто подскажет как это организовать?
|
|
Новичок Присоединился: 15 Октябрь 2009 Категория: Kazakhstan Online Status: Offline Публикации: 1 |
|
1 действие. Остановить OPC-клиент на компьютере-клиенте с конфигурационным файлом, настроенным на удаленный OPC-сервер.
2 действие. Запустить OPC-сервер на компьютере-клиенте 3 действие. Перезапустить OPC-клиент на компьютере-клиенте с другим конфигурационным файлом, настроенным на локальный OPC-сервер. Эти действия могут быть осуществлены вручную или автоматически. При автоматическом варианте - требуется сформировать событие отказа работы удаленного OPC-сервера. А есть возможность сразу запустить OPC-сервер на компьютере-клиенте, одновременно с OPC-сервером на компьютере-сервере? |
|
Новичок Присоединился: 08 Май 2009 Online Status: Offline Публикации: 25 |
|
Нет возвожности. Потому что два экземпляра опс станут обращатся к одному и тому же com порту, и последний из них не будет работать
|
|
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
|
Организовать гарантированно разграниченный доступ к разделяемому ресурсу с использованием COM, DCOM нет никакой возможности. Так как драйвер удаленного порта использует гораздо более надежный способ связывания всегда остается место для ситуации, когда связь с OPC уже потеряна и можно предположить что он не работает, но на самом деле он функционирует занимая разделяемый ресурс но не доступен удаленным клиентам. Например при перевыборах мастербраузера сети. Да DCOM вообще штука корявая. Необходим надежный механизм контроля доступа к разделяемому ресурсу, а также способ завершения некорректно работающего приложения. В общем огород еще тот городить придется. Я когда экспериментировал с такой ерундой (не доделал), набросал два приложения которые рулились через COM порт каждое выполнялось на своей машине и в зависимости от состояний контролируемых процессов партнера предпринимало какие нибудь действия. Думаю можно использовать в место COM порта сетевые сокеты |
|
Новичок Присоединился: 08 Май 2009 Online Status: Offline Публикации: 25 |
|
А может есть примеры на языке программирования для работы с dcom или полезные ссылки, например я мог бы с помощью своей программы на компьютере-сервере установить настройки dcom для opc и opcenum "запускать приложение на данном компьютере", а на клиенте "запускать на указанном" (там указал бы сервер), если компьютер-сервер выходит из строя - выключаю его. Перезагружаю компьютер-клиент, после загрузки например, вылетает окно "Использовать как сервер" - "Да" "Нет", если да, то программно изменяются настройки DCOM для опс и опсенум "Запускать приложение на данном компьютере" и клиент станет сервером.
|
|
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
|
Таких примеров у меня нет, есть примеры реализации опс, надо искать. Но могу сказать сразу, что для запуска с использованием настройки "запускать на указанном компьютере" необходима прокси заглушка а для ее создания нужен tlb файл для опс, а его я ни у кого кроме Emmersona (DeltaV) ни разу не видел.
|
|
Новичок Присоединился: 08 Май 2009 Online Status: Offline Публикации: 25 |
|
Ладно, если чё получится напишу.
|
|
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
|
Пожалуй тут я не все возможности описал, если на удаленном хосте развернуть опс сервер и в настройках DCOM указать ему хост где уже работает боевой опс то все работает (проверил только что на CoDeSys OPC). По сути локальный прокси по умолчанию будет перенацелен на удаленный класс. Хотел тиражировать класс что бы было два сервера один удаленный один локальный но пока не получилось. Если получится то переключение серверов будет выполнятся просто заменой конфига OPC клиента а не перенастройкой OPC сервера в dcom, что по моему проще |
|
Новичок Присоединился: 08 Май 2009 Online Status: Offline Публикации: 25 |
|
Так ну вот как-то получилось...
Я установил на обоих компах следующие настройки 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 |
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |