Режим резервирования и восстановления (Failover) в ISaGRAF 6.1
В ISaGRAF 6.1 реализована поддержка режима резервирования и восстановления после отказа (Failover). Восстановление после отказа – это режим работы, при котором функции системы управления принимает на себя вторичная система управления в том случае, когда главная система становится недоступной из-за отказа оборудования или при запланированном простое. Использование этой функции повышает отказоустойчивость системы управления. Функция восстановления после отказа в ISaGRAF 6.1 дает воз¬можность пользователям модифицировать систему управления и менять условия, при которых контроллер получает или теряет управление. В режиме Failover среда ISaGRAF 6.1 реализует следующие ключевые возможности: безударный переход на резервную машину, работа с любым типом POU (SFC, FBD, LD, ST, 61499), автоматическая загрузка проекта (одновременно на первичную и вторичную станцию), ав¬томатическое переключение из Workbench на нужную станцию в режиме отладки, автоматическое переклю¬чение OPC-серверов. В данный момент не реализована поддержка хранимых (retain) переменных.
Рассмотрим реализацию режима Failover в ядре исполнительной системы ISaGRAF. После загрузки приложения на активный контроллер автоматически выполняется его передача на резервный контроллер. Оба контроллера начинают параллельно выполнять одно и то же приложение. Входные переменные пере¬даются из основного контроллера в резервный контроллер перед каждым циклом выполнения. В конце каждого цикла выполняется проверка по вычисленной контрольной сумме, чтобы гарантировать це¬лостность данных и результатов. В случае расхождения на резервный контроллер передается вся область данных активного (основного) контроллера. При сбое на активном контроллере резервный контроллер становится активным (основным) и начинает управлять процессом. Для связи между основным и резервным контролером по умолчанию используется сеть TCP/IP, но могут быть использованы и другие сети (последовательный канал, UDP, оптоволокно). Допускается настройка условия, при котором происходит смена основного контроллера. Конфигурирование Failover состоит из установки следующих параметров: IP-адрес, номер порта и значения тайм-аутов.

Результаты тестирования режима Failover компанией ISaGRAF Inc.
Условия тестирования: 85 тыс. переменных пользователя, 4 тыс. входных переменных, объем TIC-кода равен 247k, размер буферов связи 64k, основной контроллер работает под управлением ОС Windows 7, резервный под управлением VMware ОС Windows XP. Результаты тестирования: время цикла 1 мс с отключенным режимом Failover, время цикла 13 мс с включенным режимом Failover и полной синхронизацией данных (88102 байта в 2 фреймах), время цикла 6 мс с включенным режимом Failover и частичной синхронизацией данных (4127 байт в одном фрейме).
Результаты тестирования режима Failover на контроллерах LinPAC (ICP DAS) специалистами компании «ФИОРД»
Исходные данные:
1. Контроллер LP-5131 (ICP DAS) – 1 шт.
2. Контроллер LP-8441 (ICP DAS) – 1 шт.
3. Исполнительная система ISaGRAF5++ ACE Target
4. Среда разработки проектов ISaGRAF Workbench v. 6.1.
Для проверки опции резервирования в среде разработки приложений ISaGRAF Workbench v 6.1 был создан проект и программа, где переменная-счётчик на каждом цикле (200мс) инкрементируется, включен режим Failover и значения таймаутов выставлены по умолчанию.
Загрузка проекта осуществлялась на первичный контроллер (“Primary Device”), после чего встроенный механизм Failover передавал код проекта на вторичный контроллер (“Secondary Device”) автоматически. Каждый из контроллеров находился в одном из трех состояний: Running (активный), Standby (резервный), Error (ошибка). Но в каждый момент времени один и только один из них находился в состоянии Running (активный).
Моделирование ситуаций.
Ситуация 1.
Остановка вторичного контроллера, его статус меняется с Standby на Error. Перезапуск вторичного контроллера – его статус снова Standby. Вывод: При работающем первичном контроллере вторичный контроллер восстанавливает свой статус после перезагрузки.
Ситуация 2:
Остановка первичного контроллера: статус первичного контроллера Running меняется на Error; статус вторичного контроллера Standby меняется на Running. Перезапуск первичного контроллера приводит к тому, что статус первичного контроллера меняется с Error на Standby, первичный контроллер становится резервным.
Вывод: После выхода из строя первичного контроллера вторичный контроллер становится активным контроллером. После восстановления или перезагрузки первичного контроллера, вторичный контроллер остается активным до момента его остановки или выхода из строя.
Ситуация 3:
Разрыв физической связи(Ethernet) между контроллерами без остановки контроллеров. Статус первичного контроллера из Running переходит в Error, статус вторичного контроллера переходит из Standby в Running.
После восстановления связи между контроллерами статус вторичного контроллера из Running переходит в Standby, а статус первичного контроллера из Error переходит в Running. Вывод: При обрыве связи активным становится вторичный контроллер, но после её восстановления первичный контроллер снова становится активным, а вторичный контроллер возвращается в режим резервного.
NB. На данный момент нельзя использовать в проекте одновременно прерывания и Failover.