У нас имеется проект в котором обмен данными осуществляется через ОРС сервер. В проекте имеется основной и резервный узел. При запуске на двух компьютерах ОРС сервер загружается на компьютере с МРВ в режиме "Работа". Мы хотим осуществить горячее резервирование МРВ. Подскажите каким образом запустить ОРС сервер на компьютере в режиме "Резерв" при переводе его в режим "Работа". Необходимо ли использовать каналы подтип СИСТЕМНЫЙ, дополнение СЕТЬ, DDE и ВВОД, ВЫВОД , если да, то опишите, пожалуйста, подробно как это сделать.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Для управления функциями обмена по OPC в режиме SLAVE необходимо ввести СИСТЕМНЫЕ каналы ВВОД-ВЫВОД, которые осуществляют управление обменом с различными устройствами и контроль заблокированных функций узлов, находящихся в состоянии резерв. Биты канала показывают отключение следующих функций (при типе канала INPUT): · 4 – запрет чтения по каналам OPC; · 5 – запрет записи по каналам OPC; · 12 – запрет изменения значений по OPC и от графических консолей; · 13 – запрет выдачи данных по OPC и графическим консолям; Значения перечисленных битов определяют следующие состояния обмена: · 0 – разрешить; · 1 – запретить.
При переводе узла в состояние резерв данный канал принимает значение 0хffff. Это означает установку в 1 всех его битов и отключение всех перечисленных функций.
При необходимости изменить набор отключаемых функций надо использовать такой же канал, но установить для него тип OUTPUT, установить требуемое начальное значение и установить флаг "Отработать". При необходимости значением этого канала можно менять набор исполняемых функций в реальном времени.
Posted by Sergey_K (Участник № / Member № 136) on :
Все равно не получается. Не могли бы Вы описать какую последовательность действий необходимо выполнить, чтобы загрузить ОРС сервер на резервном МРВ. Желательно, если возможно, выслать примерчик на адрес Ligor@newmail.ru.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Я отправил Вам пример.
Posted by Sergey_K (Участник № / Member № 136) on :
Обмен данными между основным и резервным МРВ осуществляется, за исключением канала Input. На резервном МРВ в канале типа Input в реальном значении ничего нет, в отличие от выходного, где выводитя требуемое значение. Возможно ли эти данные вывести в реальном значении? Принудительно поменять значение канала IN_OUT_O с C0 на F0 или любое другое не удается. Также не понятно как запустить ОРС сервер на резервном МРВ.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Чтобы синхронизированное значение в атрибуте ВЫХОД попало в атрибут РЕАЛЬНОЕ, надо произвести ОТКЛЮЧЕНИЕ этого канала от источника (это указано в документации). В том примере, который я Вам послал, значение канала ВВОД_ВЫВОД (out) МЕНЯЕТСЯ В РЕАЛЬНОМ ВРЕМЕНИ БЕЗ ПРОБЛЕМ. Я сам проверял это перед тем как отправить его Вам. OPC-сервер вызывается МРВ независимо от собственного статуса. И подписка на обмен осуществляется тоже. Только запись полученных от OPC-сервера значений в каналы МРВ осуществляется в соответствии со статусом.
Posted by Sergey_K (Участник № / Member № 136) on :
Проблема со значением в атрибуте РЕАЛЬНОЕ для канала типа Input (подтип ОРС, дополнение ОРС) осталась. OPC-сервер резервным МРВ вызвать не удается. Не могли бы Вы выслать маленький проектик для Double Force МРВ (Pro) с демонстрацией данных функций.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Уважаемый Сергей! Для вызова OPC-сервера вторым узлом (независимо от того, является ли он МАСТЕРОМ или нет), нужно скопировать файл конфигурирования OPC-обмена с именем его базы. По второму вопросу ("реальное значение") требуется некоторая работа по локализации проблемы. Я постараюсь выслать Вам проект в понедельник.
Posted by Sergey_K (Участник № / Member № 136) on :
К сожалению мы не получили от вас проект в понедельник, который нам очень необходим. Если у Вас возникли какие-то затруднения, не могли бы Вы сообщить о них нам.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Я прошу прощения, у нас серьезные затруднения с почтой. Я повторно отправил проект сегодня.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Уважаемый Sergey_K! Я отправил Вам почтой рабочую версию сервера математической обработки, в котором восстановлена функция резервирования OPC-обмена.
Posted by SCB (Участник № / Member № 412) on :
При создании резервного узла его имя образуется из имени резервируемого узла, но при этом к нему добавляются символы (2) а не (1). Что я мог сделать неправильно? Может в каких-то файлах нужно что-то удалить, или это не принципиально?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Имя узла непринципиально. Но вот причиной создания резервного узла с именно такой модификацией имени может быть уже совершенная ранее подобная операция. Т.е., у Вас, возможно, уже есть резервный узел (но имеет измененное Вами имя). Если это так, то лишний узел надо убрать.
Posted by SCB (Участник № / Member № 412) on :
1. При запуске проекта с резервируемым узлом под Профайлером, на узле со статусом 2 и на узле со статусом 3 системный канал ВВОД-ВЫВОД имеет одинаковое значение - с0 ,хотя судя по документации ,на резервном узле он д.б. ffff ? 2. При завершении работы основного узла статус резерва должен меняться автоматически, или его нужно переключать каким-то образом самому ? У нас он остается = 3.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. В связи с перспективным расширением некоторых функций резервирования изменен код, по умолчанию засылаемый в канал ВВОД_ВЫВОД в SLAVE - c0 вместо ffff. 2. Статус узла устанавливается автоматически только при его загрузке. Изменение статуса в процессе работы должно программироваться пользователем.
Posted by Sergey_K (Участник № / Member № 136) on :
Не могли бы Вы подсказать как поступать в данной ситуации? В проекте имеется основной и резервный узел. Основной узел запускаем первым - у него присваивается Status=2, резервному узлу после запуска присваивается Status=3. Обмен между МРВ осуществляется без проблем. При обрыве сети связь пропадает и не восстанавливается после восстановления сети. Status у обеих МРВ не изменяется(т.е. у основного =2, у резервного =3).
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Проверьте - восстанавливается ли обмен по сети после ее восстановления вообще, например доступ к удаленному ПК на файловом уровне.
Posted by Sergey_K (Участник № / Member № 136) on :
Обмен между компьютерами после восстановления сети восстанавливается через несколько секунд.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
На реальных проектах в промышленной эксплуатации связь восстанавливается успешно. Искать надо на уровне сетевой ОС, физической сетевой среды, работы адаптеров и протоколов. Возможно, какие-либо настройки или аппаратные средства затягивают процесс восстановления. Мы попробуем тоже поискать по документации. Если найдем возможные рекомендации, сообщим.
Posted by Sergey_K (Участник № / Member № 136) on :
Не могли бы Вы выслать проверенный проект, где восстанавливается связь между узлами после восстановления сети.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Никаких особенностей в проектах нет. Тот проект с резервированными узлами с обменом с OPC-серверами, который я Вам посылал, вполне обеспечивает восстановление обмена между МРВ после восстановления потеряной связи.
Posted by Sergey_K (Участник № / Member № 136) on :
В проект, что Вы выслали ранее мы добавили несколько каналов: - подтип Диагностика дополнение Сеть; - подтип Диагностика дополнение Код сети; - подтип Диагностика дополнение NCB(прием); - подтип Диагностика дополнение NCB(отсылка); Когда связь между основным и резервным МРВ установлена (судим по каналу: подтип Диагностика дополнение Дубль)во всех добавленных нами каналах значение - 0. При обрыве сети в этих каналах устанавливаются следущие значения: - подтип Диагностика дополнение Сеть - 4; - подтип Диагностика дополнение Код сети - 35; - подтип Диагностика дополнение NCB(прием) - 3; - подтип Диагностика дополнение NCB(отсылка) - 0; При восстановлении сети в этих каналах устанавливаются следующие значения и связи между узлами попрежнему нет: - подтип Диагностика дополнение Сеть - 4; - подтип Диагностика дополнение Код сети - 19; - подтип Диагностика дополнение NCB(прием) - 1; - подтип Диагностика дополнение NCB(отсылка) - 0; Не могли бы Вы подсказать рекомендуемые настройки сети, в том числе протокола TCP/IP.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Канал КОД_СЕТИ выдает код ошибки, возвращенный сетевой ОС для протокола NetBIOS. У Вас он, видимо, в 10-м виде. Из MSDN мы выписали расшифровку: This error is typically due to configuration problem, rather than a line problem. The following list summarizes all the Code=x extended error codes currently reported:
#define NRC_GOODRET 0x00 Good return - also returned when ASYNCH request accepted #define NRC_BUFLEN 0x01 Illegal buffer length #define NRC_ILLCMD 0x03 Illegal command #define NRC_CMDTMO 0x05 Command timed out #define NRC_INCOMP 0x06 Message incomplete, issue another command #define NRC_BADDR 0x07 Illegal buffer address #define NRC_SNUMOUT 0x08 Session number out of range #define NRC_NORES 0x09 No resource available #define NRC_SCLOSED 0x0a Session closed #define NRC_CMDCAN 0x0b Command canceled #define NRC_DUPNAME 0x0d Duplicate name #define NRC_NAMTFUL 0x0e Name table full #define NRC_ACTSES 0x0f No deletions, name has active sessions #define NRC_LOCTFUL 0x11 Local session table full #define NRC_REMTFUL 0x12 Remote session table full #define NRC_ILLNN 0x13 Illegal name number #define NRC_NOCALL 0x14 No callname #define NRC_NOWILD 0x15 Cannot put * in NCB_NAME #define NRC_INUSE 0x16 Name in use on remote adapter #define NRC_NAMERR 0x17 Name deleted #define NRC_SABORT 0x18 Session ended abnormally #define NRC_NAMCONF 0x19 Name conflict detected #define NRC_IFBUSY 0x21 Interface busy, IRET before retrying #define NRC_TOOMANY 0x22 Too many commands outstanding, retry later #define NRC_BRIDGE 0x23 ncb_lana_num field invalid #define NRC_CANOCCR 0x24 Command completed while cancel occurring #define NRC_CANCEL 0x26 Command not valid to cancel #define NRC_DUPENV 0x30 Name defined by anther local process #define NRC_ENVNOTDEF 0x34 Environment undefined. RESET required #define NRC_OSRESNOTAV 0x35 Required OS resources exhausted #define NRC_MAXAPPS 0x36 Max number of applications exceeded #define NRC_NOSAPS 0x37 No saps available for NetBIOS #define NRC_NORESOURCES 0x38 Requested resources are not available #define NRC_INVADDRESS 0x39 Invalid NCB address or length > segment #define NRC_INVDDID 0x3B Invalid NCB DDID #define NRC_LOCKFAIL 0x3C Lock of user area failed #define NRC_OPENERR 0x3f NetBIOS not loaded #define NRC_SYSTEM 0x40 System error #define NRC_PENDING 0xff Asynchronous command is not yet finished
Ошибка 4 в канале Диагностика_Сеть означает "ошибку чтения". Во всех диагностических каналах остается последний код ошибки. Даже при восстановлении коммуникации эти каналы надо сбрасывать в установленном порядке. Никаких специальных сетевых настроек, кроме штатных (по умолчанию) при инсталляции ОС, мы не производим.
Posted by Сафронов (Участник № / Member № 408) on :
Возможно ли резервирование операторских станций с помощью Double Force МРВ, связанных с одним контроллером МФК фирмы Текон через ОРС сервер ? Тестирование с помощью профайлера, входящего в базовую версию дало отрицательный результат. Обе операторские станции считали себя ведущими (значение 2 в канале подтипа СИСТЕМНЫЙ с дополнением СТАТУС) и взаимодействовали с ОРС сервером.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Резервирование в Вашем случае возможно, только для проверки Вам обязательно необходим монитор Double Force МРВ. На Профайлере инструментальной системы проверить резервирование в штатном варианте нельзя. Надо дополнительно программировать функции определения статуса "партнера", управления собственным статусом и процедурами обмена информацией.