Настройка резервирования — АСУ ТП: сообщество инженеров

Настройка резервирования

О чём видео

Видеоурок о настройке резервирования на контроллерах REGUL. Показано создание системы с полным резервированием, настройка линии синхронизации, загрузка проекта в оба контроллера, переключение ролей и синхронизация данных. Затем система перестраивается в схему с частичным резервированием, демонстрируются различия в подключении шин и работа защиты от двух мастеров.

Что разбирается
  1. 00:18 Создание системы резервирования на контроллерах REGUL
  2. 06:41 Настройка IP-адресов и режима линии синхронизации
  3. 09:15 Схемы полного и частичного резервирования
  4. 22:36 Загрузка проекта в контроллеры и аппаратная ошибка
  5. 32:15 Переключение управления на резервный контроллер
  6. 33:11 Синхронизация данных между контроллерами
  7. 45:40 Сценарии работы галочки синхронизации проектов
  8. 51:22 Настройка шин и адресов корзин ПЛК
  9. 55:40 Выбор режима резервирования и привязка модулей CU к шинам
  10. 62:45 Просмотр сообщений в компоненте резервирования
Оборудование и ПО
  • REGUL
  • ПЛК

Кому полезно: Инженеры АСУ ТП, занимающиеся настройкой резервированных систем на контроллерах REGUL.

Описание составлено автоматически по расшифровке речи в ролике.

Расшифровка видео

0:18 Добрый день, в сегодняшнем видеоуроке мы с вами изучим особенности построения резервированных систем на базе контроллеров. Регул, у меня здесь имеется 2 Крейта. Они у меня абсолютно идентичны, и мы сначала с вами постараемся создать систему с полным резервированием и потом перестроить ее в систему с частичным резервирование. В начале я буду работать с левым Крейтом.

0:53 Здесь у меня уже есть программа Ред, которая нам непосредственно понадобится для резервирования. К ним мы вернемся чуть позже, теперь необходимо к нашему приложению добавить. Объект резервирования, как мы видим, имеется 2 варианта объекта резервирования 1 без приставки ОС другой с приставкой ОС. Если вы создаете проект с помощью мастера, то по умолчанию. В текущей версии пакета обновления 1 7 0 2 у вас пока еще создается компонент. Обычного резервирования более современным решением является именно резервирование с приставкой ОС. Когда непосредственно программа резервирования работает под управлением операционной системы, а не в рамках рантая, поэтому я добавлю именно ее и на.

1:48 Имя оставляю по умолчанию. Добавляю. Это уникальный объект, который можно только 1 раз добавить к себе в проект. Вот он здесь появился. Следующим этапом необходимо создать задачу резервирования. На конфигурации задач нажимаем правой кнопкой добавление объекта задача. Назовем мы эту задачу, Таскред. От слова Редантенсе, то есть эта задача будет у нас предназначена для резервирования. И непосредственно в эту задачу поместим в нашу программу Ред. Теперь зайдем в эту задачу и обязательно поставим ей приоритет 1.

2:53 У нас справа возникает подсказка о том, что приоритет 1 предназначен только для задачи резервирования. Но в данном случае нам как раз именно это и нужно. То есть существует жесткое правило, что приоритет 0 может. Быть отдан только непосредственно шине. Регбасс приоритет 1 отдается задачей резервирования и только начиная с приоритета 2. Можно задавать уже произвольные приоритеты для пользовательских задач, это правило. Применимо для контроллеров 1 и 3 типа. Если же вы работаете с контроллером 2 типа, у которого процессор с АРМ архитектуры и сам по себе, по дульцу однослотовой, то для таких процессоров требуется устанавливать. Приоритет 4 для задачи резервирования и, соответственно, пользовательские задачи уже идут с 5 приоритета и дальше. Значит, мы с значит, мы с вами установили приоритет 1 тайм Аут и, точнее сказать, интервал вызова.

3:57 Нашей задачей резервирования он выставляется в зависимости от объема данных, которые мы будем резервировать по умолчанию. Сами по себе контроллеры ничего не резервируют. Они только следят за состоянием друг друга о наличии ошибок и в случае необходимости могут поменяться ролями, а все данные, которые мы хотим зарезервировать. Мы должны указывать самостоятельно, как это сделать. Мы рассмотрим далее и так, чтобы задача у нас имела запас по времени. Давайте установим тайм аут 50 Миллисекунд. Следующее, что мы с вами должны сделать это, указать специальные ай пи адреса для наших крейтов, при помощи которых они смогут работать по линиям синхронизации.

4:49 Для этого зайдем в сканер сети и. Имеются 2 Крейта. У обоих тип модуля центрального процессора р 561 дабл Ю. Это очень важно, чтобы тип полностью совпадал с точностью до буквы. Например, если 1 из контроллера будет просто 61, а другой. Контроллер, 61 Дабл Ю, мы не сможем построить систему резервирования с этими контроллерами. В данном случае у меня все хорошо, и версия прошивки также совпадает, это также важно.

5:30 Теперь мы должны решить, через какие именно интерфейсы мы будем осуществлять синхронизацию данных. Через 5 интерфейс я непосредственно подключен средой разработки к моим контроллером, как к 1, так и к другому. То есть вот 5 интерфейс непосредственно подключен к Хабу? Предлагаю задействовать 6 интерфейс для того, чтобы установить в него линию синхронизации. Я так, значит, для 1 контроллера для 6 интерфейса я выбираю режим линия синхронизации.

6:06 Здесь я должен выбрать роль для моего контроллера. 1 Контроллер у меня будет иметь роль ЦПУ, а на канале, 1 что это означает. Мы видим, что автоматически подставился Ай Пи адрес 98 1. Вот серым цветом он здесь указан. Если я выберу линию, точнее, канал, 2 то подсеть уже будет не 98, а 99. Возвращаюсь обратно на цифру, а канал 1 то есть смысл. Следующий канал отвечает за саму подсеть, то есть 98 или 99 то есть канал. 1 Это 98 Подсеть и 2 канал, 99 а вот роль ЦПУ непосредственно. А и б отвечает за последний байт айпи адреса, то есть, а это единичка б. Это соответственно двоечка, поэтому на 1 контроллере я выставлю роль ЦПУ, а на канале 1 записываю значения.

7:16 И для полка 2 также на 6 порту я выберу режим линии синхронизации на том же самом 1 канале, но уже роль Б. Вот мы видим, поставился Айпи, адрес 98 2 записали. Данные подсети 98 и 99 вы не можете использовать для каких либо своих произвольных целей. То есть они специально предназначены только для режима? Резервирования теперь, после того как мы поменяли режим работы сетевой карты, то есть именно перевели из статического режима в линию синхронизации. Ну либо обратно нам требуется произвести полную перезагрузку наших контроллеров. То есть обычное изменение статического айпи адреса с 1 на другой? Может происходить без перезагрузки, а вот именно смены режима сетевой карты требует перезагрузки, поэтому я перезагружу оба контроллера по питанию.

8:23 После того как контроллер загрузится, данные сетевые интерфейсы перейдут в специальный защищенный режим, и, например, они даже будут не видны в сканере сети. То есть через них мы уже подключиться к контроллеру не сможем? Теперь нам необходимо непосредственно подключить сетевой кабель для организации линии резервирования. Я подключаю его в 6 интерфейс. Который мы с вами только что настроили? Очень важно, что подключение осуществляется именно прямым кабелем без какого либо промежуточного сетевого.

9:03 Оборудования, потому что она может вносить дополнительные задержки и тем самым нарушать работу синхронизации. Если мы работаем с Реальным объектом то рекомендуется использовать всегда 2 линии синхронизации, то есть 1 сетевой интерфейс. Мы настраиваем как канал, 1 а 2 сетевой интерфейс, допустим, в данном случае 4 я. Я бы настроил в качестве канала, 2 но сейчас для.

9:38 Тестового урока нас это в общем то не особо заботит. Дело в том, что при полном резервировании в случае обрыва линии синхронизации у нас каждый модуль ЦПУ не сможет получить. Информацию о соседе и таким образом перейдет в режим автономного и будет выдавать управляющие сигналы на свои модули вывода. И это может привести к нежелательным последствиям. Поэтому для повышения надежности в режиме резервирования необходимо всегда использовать сразу 2 линии. Поэтому в случае, если 1 у нас по каким то причинам выйдет из строя 2. Позволит осуществлять резервирование по прежнему. Теперь давайте рассмотрим, какие у нас бывают схемы резервирования. Для этого я открою официальную документацию по резервированию. На странице 9 и здесь мы наблюдаем схему полного резервирования как раз непосредственно ту, которую мы с вами строим. В реальности здесь мы видим, у нас есть 2 зеркальные. Половины левая и правая, они полностью друг друга. Повторяю, по количеству корзин по составу модулей и по другим параметрам. Единственное, чем они связаны друг с другом, это вот. Как раз 2 линии синхронизации, про которую я только что говорил. При этом каждый модуль ЦУ в каждой из половин опрашивает свои модули ввода вывода по шине регулбас шины также. Как мы видим, никак друг с другом не пересекаются. При этом для схемы с полного резервирования не имеет значения, по какой именно шине вы опрашиваете модули по 1 или по 2 в.

11:29 В данном случае, как мы видим, на схеме у нас используется 1 шина Ригубас как на левой половине, так и на правой, то. Также важно, что в схеме с полным резервированием выставляются попарно одинаковые адреса для наших крейтов, то есть в данном случае. Допустим, вот этот если у нас будет иметь адрес, 0 то и этот также должен иметь адрес 0 этот адрес, 1 это также адрес 1 и так далее.

12:00 Далее мы видим пример схемы частичного резервирования, здесь уже у нас оба модуля целу, установлены в 1 крейте. Это не является обязательным условием, то есть мы их можем, как в общем крейте размещать, так и в разных. Это совершенно не принципиально, главное здесь, что каждый из модули ЦУ работает по своей шине. Регбасс 1 по 1 другой, соответственно, по 2 и для того, чтобы избежать каких либо возможных проблем с синхронизацией.

12:35 Требуется, чтобы именно ЦПУ, а работал по 1 шине и ЦПУ Б, то есть у которого айпи адрес резервирования заканчивается на двойку, работал соответственно по 2 шине. В этой схеме мы видим, что у нас уже имеется 2 параллельных кольца соответственно синее кольцо. Это 1 Шина и Зеленое Кольцо, это 2 шины, они друг с другом опять же не пересекаются. И таким образом каждый модуль Су является монопольным мастером. На своей шине если по каким то причинам, и вы вдруг случайно перекрестно соедините 2 шины, то у вас проблемы появятся сразу на обоих модулях центрального процессора. Поэтому перекрещивать шины в такой схеме категорически запрещается. Да и можно еще сказать, что модули ввода вывода в этой схеме являются общими соответственно. Если какой либо модуль полностью выходит из строя, то он перестает быть доступным как для 1 процессора, так и для 2 можно сразу поговорить о. Преимуществах того или иного вида резервирования в полном резервировании у нас достигается максимальная надежность. То есть выход любого компонента из строя приводит к тому, что управление передается на соседнюю половину и соответственно.

14:00 Без каких либо аппаратных ошибок исправная половина продолжает управлять нашей системой. Если же проблема происходит в схеме с частичным резервированием, то здесь уже играет роль, с каким именно модулем. Произошла проблема, если проблема с модулем ЦУ, то управление передается соседнему модули Цу. Если же с модулем водовода соответственно эту проблему мы уже никак не исправим, существует схемы и с комбинированным.

14:35 Резервированием, когда часть корзин подключается по схеме полного резервирования. В данном случае мы видим верхние корзины, у нас полностью идентичны и. И другие корзины подключаются по схеме с частичным резервированием и в комплексе. Это у нас получается схема с комбинированным резервированием. Вот в данном случае в крейты с модулями центрального процессора, мы дополнительно установили еще пару. Модулей ввода вывода, которые могут играть, например, какую то особенно важную роль в нашей системе. В схеме с частичным резервированием намного проще подключить внешние датчики, потому что не требуется организовывать какие либо дополнительные. Схемы арбитража датчики в единственном экземпляре подключаются непосредственно на каналы модулей ввода в схеме с полным резервированием. Так как сигнал с 1 датчика должен приходить сразу на 2 разных канала, соответственно, в 2 разных модулях. Необходимо организовывать дополнительные промежуточные схемы арбитража, это несколько усложняет схему подключения. И так мы с вами сейчас строим схему с полным резервированием, поэтому на каждом крейте у меня выставлен одинаковый адрес 0 вот.

15:58 Вот можно обратить внимание, что на этом модуле ст выставлен адрес 0 и здесь также выставлен адрес 0. Теперь вернемся к проекту. Рассмотрим нашу программу Ред. В ней у нас имеется переменная редкаунтер, которая увеличивается на единицу в каждом цикле. Мы ее постараемся засинхронизировать, потому что она нам потребуется. Для построения синусоиды через блок ФБ Синус Икс, который мы с вами рассматривали в прошлых уроках. У меня имеется экземпляр функционального блока Синус Икс 2.

16:59 Вот он здесь определен. И в качестве входного параметра мы как раз будем в него помещать. Наш редкаутер и за счет того, что переменные роткаутер синхронизированы. У нас синусоиды на каждом контроллере будут работать в 1 фазе и потом в ходе. Эксперимента мы как раз рассмотрим переключение управления между контроллерами и посмотрим, как это повлияет на нашу трассировку с синусоидой. Мы запрашиваем текущую роль конкретного полка, делается это следующим образом.

17:37 То есть мы из компонента Реданте ОС? Забираем текущую роль, и если она является активной или актив Стэнделом, то есть это роли, которые осуществляет управление на модуле вывода, то в этом случае переменная ЦПУ. Актив примет значение 1 во всех остальных случаях, когда соответственно модуль центрального процессора только принимает данные, но не осуществляет управление у нас ЦПУ. Эктив будет равен 0 и данную переменную, мы с вами привяжем на 4 дискрет. Ну, точнее, это по счету получается 5 дискреда, потому что счет у нас начинается с 0 и к этому. Дискрету у нас подключена светодиодная индикация. Таким образом, сразу наглядно мы сможем видеть, какой именно центральный процессор сейчас является активным, а какой нет.

18:41 Данная реализация у нас будет работать исключительно в схеме с полным резервированием, потому что в схеме с частичным резервированием у нас уже будут 2 разных модуля вывода. И нам бы пришлось эту логику несколько. Изменить далее давайте перейдем непосредственно к компоненту Редантенсе, о с который мы с вами уже добавили здесь. На 4 закладке необходимо указать задачу, которая у нас будет использоваться для синхронизации.

19:13 Чтобы задача появилась в списке выполним компиляцию. Для того чтобы здесь в списке появилась моя новая задача, Ред Таск. Я полностью закрыл компонент редантности ОС и открыл его заново. После этого мы видим в списке задача есть, выбираем ее и снова нажимаем на компиляцию.

19:39 Компиляция прошла успешно, без ошибок, и теперь мы должны галочками пометить те переменные, которые мы непосредственно хотим использовать для синхронизации в. В программе Ред это у нас будет переменная редкаунтер и. И также у нас есть еще ред Дживель, который мы добавили с вами. Вот здесь вот в нем имеется структура, к я добавлю переменную из из моей структуры Дживаэль Ред. Видим, что объем данных резервирования у нас увеличился, то есть здесь всегда показывается суммарный объем данных, которые подлежат синхронизации.

20:33 Как я уже говорил ранее, в зависимости от этого объема у нас меняется итоговое время, которое требуется потратить в каждом цикле на синхронизацию, давайте. Вернемся к документу, здесь имеется таблица, в которой указано ориентировочное время, которое требуется для синхронизации данных в зависимости от объема.

20:55 Мы видим, что это время отличается для ЦПУ 1 3 типа и для ЦПУ 2 типа. То есть для 2 типа требуется больше времени, так как процессор там более медленный? Поэтому для 1 типа. При максимальном возможном объеме в 500 килобайт нам потребуется 220 миллиардекунд на каждый цикл для обмена данными для модулей ЦП 2 типа Максимальный объем данных, которые мы можем. Засинхронизировать это всего лишь 100 килобайт, и при этом нам уже потребуется 90 миллиардекунд. При этом следует учитывать такой важный момент, что время синхронизации должно быть не более 75.% От общего времени цикла то есть, если, допустим, нам требуется 100 миллиардекунд на синхронизацию данных, то общее время цикла задачи резервирования должно быть где то 125 или больше. Миллисекунд, и так мы с вами добавили 2 переменных. Обязательным условием является, чтобы хотя бы 1 переменная была выбрана. В данном случае у нас будет синхронизироваться примерно 6 килобайт.

22:11 Теперь Должны убедиться, что Адреса Крейтов. Соответствуют тому значению, которое указано в проекте, у меня указан 0 на кретах. Мы с вами убедились, также указан 0 режим резервирования, указывается полная также на обеих корзинах. И теперь мы можем с вами уже непосредственно сконфилировать наш проект и загрузить его сначала в 1 контроллер, а потом и в другой сохраняемся. И загружаем в контроллер. Сейчас я подключен к левому контроллеру, который у нас называется ПЛЦ 1.

23:14 Данное сообщение говорит о том, что в компоненте резервирования мы не указали ссылку на ПКБ, это не является проблемой, мы это можем сделать позже. Итак, приложение в наш. 1 Контроллер загружена, мы видим, что имеется аппаратная ошибка, потому что в данном случае конфигурация указана в проекте. У меня несколько отличается от реальной в реальных крайтах, у меня присутствует также еще отдельный модуль. Сеч, 0 2 давайте его добавим.

24:07 Он находится в самом низу. И снова компилируем. Так и теперь все хорошо. Давайте закроем лишние окна. И вернемся к нашему компоненту резервирования. На левом контроллере у нас уже приложение запущено, теперь давайте загрузим. Это же самое приложение на правый контроллер в дальнейшем, когда. Мы будем вносить изменения в наш проект, нам будет достаточно установить галочку автосинхронизации проектов и после загрузки изменений в 1. Контроллер, он этот проект автоматически будет копироваться и на 2 контроллер. Но в данном случае, когда мы только начинаем настраивать. Резервирование удобнее все таки вручную загрузить проект сначала в 1, а потом уже в другой. После этого желательно перезагрузить оба контроллера.

25:27 И так я сейчас. Отключаюсь от контроллера. И подключаюсь к правому. Захожу в Таргет. Сканирую сеть выбираю правую.

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

27:06 2 Контроллер готов. Все синхронизация прошла успешно. Теперь мы можем наблюдать что. Левый контроллер, который у нас называется ПЛЦ 1. Он имеет. Индикатор РДД, который в данный момент непрерывно горит зеленым цветом. Это говорит о том, что контроллер находится в режиме эптив. На правом контроллере соответствующий индикатор РДД медленно мигает с частотой 1 герц. Это говорит о том, что контроллер находится в режиме стенд Бай или резервный. Также мы видим, что На левом контроллере у нас горит индикатор МБ 1 и.

28:02 Это говорит, что к о том, что контроль работает по 1 шине Ригу Бас и правый контроллер МБ. Горит соответственно, это свидетельство о том, что мы используем 2 шину. Повторюсь, что в схеме с полным резервированием для нас это сейчас не принципиально, теперь давайте попробуем. Перевести управление с 1 контроллера на другой. Кстати, еще можно обратить внимание на индикаторы б на всех модулях его до вывода левой половины и правой с той стороны, где у нас активный контроллер. Индикатор бы 1 горит зеленым цветом, то есть модули. Как выдают свои данные, так и получают управляющие сигналы со стороны ведущего контроллера, а на правой стороне. У нас индикаторы б 2 горят желтым цветом. Это говорит о том, что модули только отдают свои данные, но управляющие сигналы они не получают.

29:07 Давайте вернемся к компоненту резервирования, укажем путь к ПКБ, то есть к ПЛК, а мы сейчас уже подключены. Причем сейчас у нас здесь выбран именно контроллер с двоечкой, чтобы нам не запутаться, давайте от него отключимся и.

29:29 Обратно подключимся на ПЛК, а? Чтобы он левый контроллер, у нас был слева в компоненте резервирован. Все теперь мы подключены средой разработки непосредственно в 1 контроллер. Возвращаемся в резервирование, вот здесь указано ПЛЦ, 1 теперь указываем путь ко 2 контроллеру, это у нас по. 2 Нажимаем кнопочку обновить. И мы видим, что нижние поля у нас. Закрасились зеленым фоном, это говорит о том, что приложения, которые сейчас загружены в оба контроллера, идентичны друг другу. Если приложения отличаются, то соответственно цвет заливки будет красный.

30:39 Теперь мы можем перейти на 3 закладку. Теперь я постараюсь переключить роль ведущего на другой контроллер. Сейчас у меня ведущий левый, соответственно, я ему даю команду переключиться на ведомы. И мы видим, что действительно перешло управление на правый контроллер, теперь здесь индикаторы Б. Отвечающие за шины Регугубас на всех модулях позеленел, а здесь, соответственно, он стал желтым и РДД. Здесь мигает 1 раз в секунду, а здесь горит непрерывно.

31:23 Теперь давайте попробуем разорвать нашу единственную линию синхронизации и посмотрим, что при этом произойдет. Теперь оба контроллера перешли в активный режим. Для нас это, конечно, нежелательная ситуация именно для этого мы и рекомендуем использовать всегда именно 2 линии синхронизации. Вот ну давайте посмотрим, что сейчас получилось. Шины горят зеленым цветом на обоих корзинах. При этом индикаторы РДД у нас погашены, потому что каждая корзина находится в режиме эктив Стэнделон. Это отдельный режим, он отличается от режима актив, в котором РДД горел непрерывно.

32:12 И Управление, как я уже сказал, осуществляется сразу. В модуле ввода вывода и с правой стороны, с левой. Теперь мы возвращаем нашу линию синхронизации и независимо от того, какой именно из модулей ЦУ был активным до разрыва. Вот в данный момент приоритет будет отдан именно ЦПУ, а в качестве ЦПУ, а у нас настроен левый контроллер. Давайте убедимся, что управление перейдет именно на него.

32:48 Требуется некоторое время для восстановления синхронизации. И мы видим, что активность с правой половины у нас ушла и ведущую роль на себя взял. ЦПУ, а? Теперь давайте посмотрим. На временную диаграмму, в какой именно последовательности происходит синхронизация данных между контроллерами? В начале на каждом контроллере запускается функция чтения сигналов с входных модулей, вот она называется. При этом существует некоторое время рассинхронизации между контроллерами. Если оно достигает порогового, то запускается процедура, которая старается выровнять циклы исполнения задачи синхронизации на обоих контроллерах.

33:52 После этого происходит непосредственно синхронизация данных, при этом есть 2 вида синхронизации, это передача данных только с активного. Контроллера на резервный, то есть, соответственно, данные на резервом замещаются теми, которые прилетели с активного и есть возможность.

34:17 Встречно передавать данные на оба контроллера. То есть это у нас все происходит вот здесь, в блоке синхронизации, и после этого выполняется пользовательский код в рамках той самой задачи? Синхронизации на обоих контроллерах и после него уже осуществляется запись выходов. Таким образом, на наших контроллерах синхронизируется между. собой только непосредственно те задачи, которые мы указали в компоненте, резервированы. Давайте еще раз к нему вернемся, сейчас у нас синхронизируется. Только непосредственно задачи Таскред между 2 контроллерами все остальные задачи между контроллерами полностью рассинхронизированы.

35:05 Если нам потребуется добавить переменную, которая должна передавать свое значение сразу в обе стороны, тогда нам необходимо будет создать в нашей программе копию существующей переменной с дополнительным постриксом Рве. То есть, например, если бы я захотел?

35:29 Добавить такую копию к переменной редкаунтер. То я бы добавил в свой проект переменную такого же типа двор, но и она бы называлась редкаунтер подчеркивание рве. Также можно для интересующей переменной просто зайти вот в это поле. Так мы должны отключиться обязательно от контроллера не только выйти. Выйти из режима онлайна, но также отключить и все сервисы, которые сейчас связаны с контроллером. В частности, сервиса, обновления данных в компоненте Ридандонсе нажимаю кнопочку.

36:15 Пропала зеленая подсветка на таргет устройстве. Это говорит о том, что все сервисы отключены теперь. Я бы мог для переменной выбрать ее зеркальную копию из ранее созданных переменных. Если я не хочу пользоваться постриг сам рве, про который я только что говорил. Для синхронизации мы можем использовать в общем то почти любые переменные в нашем проекте. За исключением указатели, указатели в любом виде синхронизировать запрещается. Потому что на разных модулях ЦУ они могут указывать на разные объекты, размещенные в памяти. Теперь давайте проведем эксперимент по переключению управления на.

37:06 Модули АО для этого у меня создана трассировка. В конфигурации добавлены 2 переменные, а и 7, и они, а и 8. Переменные привязаны к соответствующим ходам на модуле АИ. На 7 канал и на 8 канал соответственно. Здесь у меня. Подключен кабель со стороны правого контроллера. С 8 выхода модуля АО Сигнал приходит в модуль АИ. На 8 канал с локального модуля Аон Эль 8. Также с 8 канала сигнал приходит уже на 7 канал модуля АИ таким образом мы. Модуль, а и левой корзины получает управляющие сигналы сразу с 2 разных крейтов. И сейчас мы посмотрим в эксперименте.

38:34 Как будет происходить переключение? Переходим в режим онлайн. Загружаем трассировку. И мы видим, что сейчас. Синий график, который соответствует нашей переменной, а и 7 то есть локальный активен, а зеленый находится в 0. Теперь мы должны создать некую неисправность на данной корзине, чтобы права взяла на себя управление, например, я создал. Создам неисправность на модуле Д и 32. Мы видим, что управление перешло на правую корзину. И давайте посмотрим, что у нас случилось в момент смены ролей.

40:06 В этот момент произошла аппаратная ошибка, управление перешло на. Правый модуль ЦУ и, соответственно, мы видим безударный переход. Продолжение управления именно правым контроллером. Фазы наших синусоид не сместились благодаря тому, что мы засинхронизировали переменную кантор, которая непосредственно является аргументом для нашего Симуса. Переверну на место. Модуль деи аппаратная ошибка у нас исчезла. Как мы видим индикатор, а шеф у нас погас, но при этом управление осталось именно на правом крейте, потому? Что в данный момент не случилось никакого события, которое могло бы явиться основанием для обратной передачи роли, то есть в таком режиме у нас.

41:09 Полномочия правой и левой корзины полностью одинаковы. Управление будет передаваться только в случае, если на правой корзине возникнет какая то. Неисправность, а на левой соответственно в этот момент неисправности не будет. Контроллеры при этом не оценивают степень неисправности либо их количество, то. Есть, если, например, у нас на 1 крейте вышло. Из строя 3 модуля ввода вывода, она другом вышел из строя. Только 1 модуль эта ситуация опять же считается. Абсолютно равнозначной, то есть для нас влияет только в принципе, есть у нас аппаратная ошибка, либо же ее нет. Перейдем обратно к настройкам Редандинсе ОС.

41:53 На 1 закладке, как мы помним, устанавливается путь к каждому полка и по фону подсветки. Мы определяем идентичные у нас проекты на контроллерах или нет на 2 закладке мониторинг. Давайте посмотрим на статистику синхронизации. Мы видим сверху, отображается общий объем данных, которые мы синхронизируем. Он, естественно, у нас совпадает между контроллерами. Здесь можно отметить еще такой важный момент, если мы. Хотим изменить наш проект и добавить какие то переменные к области синхронизации, то могут возникнуть затруднения при при осуществлении.

42:51 Горячей замены, если у нас. Происходит реальная эксплуатация, какого то объекта 1 контроллер находится в роли ведущего другой соответственно в роли ведомого, и мы хотим в ведомого прогрузить изменения. В проект то нам необходимо соблюдать такое важное условие как совпадение объема синхронизируемых данных между старым проектом и новым, если мы хотим осуществить именно. Вот такой безударный переход, если объем синхронизируемых данных на новом контроллере будет отличаться от того, что было в предыдущем проекте, тогда данные у нас не. Синхронизируются, и нам придется значение каким то образом через режим онлайн, либо еще каким то образом вручную переносить на обновленный контроллер, поэтому очень удобно.

43:46 Закладывать некий резерв по объему данных на будущее, то есть, например, если мы синхронизируем 10 килобайт, можно заложить дополнительные пару. Килобайт в структуру, например, которую мы используем в области синхронизации, и эти 2 КБ они будут передавать некую бесполезную информацию и таким. образом, когда нам потребуется добавить реально полезные переменные в область синхронизации, мы просто из вот этой дополнительной области. Бесполезных данных часть займем уже полезными данными. Но в целом объем данных, которые синхронизируются, не изменится, вот и таким образом мы сможем.

44:29 Включить контроллер с новым приложением за счет синхронизации он получит значение старого контроллера. Дальше мы передаем на него управление и можем соответственно уже переходить к обновлению оставшегося контроллера, что мы здесь видим еще.

44:50 Мы видим наличие связи по каналу 1, так как мы сейчас используем только 1 линию синхронизации. 2 Линия у нас не используется. Мы видим, что счетчик ошибок синхронизации у нас остановлен, то есть сейчас проблем никаких не происходит в плане синхронизации, а счетчик успешных синхронизации у нас постоянно возрастает на обоих контроллерах.

45:28 Можно также посмотреть дополнительную информацию, сейчас мы на этом останавливаться не будем. Перейдем на 3 закладку, здесь у нас имеется галочка синхронизации проектов. Давайте более подробно рассмотрим, каким именно образом мы можем использовать данную галочку. Рассмотрим 3 сценария, 1 сценарий у нас Галочка не нажата. Причем можете обратить внимание, что Галочка отключается и включается сразу на 2 контроллерах одновременно.

46:08 Если она отключена, мы загружаем изменения на 1 из контроллеров во 2, соответственно, остается старый проект, и пока мы их не перезагрузили у нас проекты. Остаются разными, но если мы в какой то момент все таки перезагрузим 1 из наших контроллеров, то при старте он обнаружит по линии синхронизации. Наличие соседа и в любом случае начнет закачивать проект с него, то есть даже несмотря на то, что Галочка у нас отключена, все равно в случае именно. Полной перезагрузки какого либо контроллера при наличии линии синхронизации, он все равно будет получать проект соседа, поэтому единственный вариант.

46:56 Нам полностью гарантировать, что процесса перезаливки приложения не произойдет, это разорвать обе линии синхронизации физически. Следующий сценарий, если Галочка у нас нажата, тогда загрузив приложение в 1 из контроллеров. Автоматически соседний обнаружит эти изменения, начнет перекачку проекта себе. Перезапустится и встанет в режим ведомо, то есть здесь никаких ручных перезагрузок. Контроллера не потребуется, то есть нам достаточно просто загрузить его в 1 из контроллеров.

47:36 Но речь идет здесь только именно о полной загрузки приложения. Если же мы производим онлайн изменения, тогда наличие этой галочки все равно не повлияет. На копирование проекта на соседний контроллер в любом случае изменения останутся только в том, куда мы непосредственно произвели загрузку, а на соседний. Контроллер, нам необходимо будет загрузить проект уже при помощи кнопочки загрузить проект на другой контроллер. С галочкой мы разобрались, теперь давайте. Поговорим еще о вот этих полях, особенно на практике, бывает полезно использование данного параметра. Задержка передачи управления по аппаратной ошибке.

48:24 Каким образом осуществляется передача управления? Если мы зайдем в шину. Регал бас ос, то в редакторе параметров шины мы видим такие параметры, как тайм аут мастера и таймаут модуля таймаут мастера, это соответственно глазами модуля. Происходит мониторинг того, что постоянно идут какие то опросы со стороны модули Цу по шине. И если эти опросы прекращаются, то модуль начинает вот этот отчет данного таймаута. Если таймаут превышается, то модуль принимает решение, что.

49:12 Шина неисправна и выставляют флаг аппаратной ошибки. Другой тайм аут тайм аут модуля, это соответственно, наоборот, уже глазами мастера, то есть модуля Цву. Идет мониторинг того, что с каждого модуля ввода вывода, поступает информация регулярно. И если какой либо модуль перестал передавать. Информацию то отчитывается данный тайм Аут и принимается решение о том, что произошла аппаратная ошибка в случае, если 1 из модулей. Центрального процессора по своей шине обнаружил аппаратную ошибку, а соседний модуль соответственно по своей шине такой ошибки не. Обнаружил, тогда переходит, происходит сразу же передача управления, то есть активным становится тот, у кого ошибок нет, но возвращаемся.

50:03 К нашему тайм Ауту здесь мы можем выставить дополнительную задержку, которая будет активироваться после истечения тайм Ауто мастера или тайм Ауто модуля соответственно, то есть передача. Управления будет происходить не сразу, а через некоторую задержку, и только по истечении уже данного тайм Аута произойдет фактическая передача управления, теперь давайте перейдем к.

50:30 К рассмотрению схемы с частичным резервированием. Для этого мне потребуется соединить обе корзины по шине данных и по 1, и по 2 я отключу контроллеры.

50:57 И соединю их по шинам. 1 Шину. Я, соответственно, соединяю с 1. Во 2 корзине. И 2. Со 2. На практике, конечно же, рекомендуется организовать полное кольцо. То есть мне бы в данном случае понадобились еще 2 кабеля для того, чтобы соединить выходной модуль? Ст 1 корзины с входным модулем ст другой корзины. Но для данного эксперимента нам будет достаточно и этих линий. Теперь обязательно уже обращаем внимание на то, что.

51:52 Шины у нас указаны разные, то есть на полка, 1 который работает у нас в роли плц, а у нас выставлена шина номер 1. На ПЛК 2 у нас выставлена шина номер 2. Таким образом, каждый модуль ЦУ является монопольным мастером на своей шине. Теперь в конфигурацию нашего проекта мы должны будем добавить уже 2 корзину. То, что она сейчас у нас сейчас, у нас является полной копией 1 корзины, это всего лишь частный. Случай мы могли бы ее сделать совершенно другой, и теперь нам необходимо выставить и уникальный адрес. Здесь мы оставляем адрес, 0 соответственно, здесь мы выставляем адрес 1.

52:48 Адрес 1 Включаем. И пока контроллер загружается, давайте внесем необходимые изменения в проект. Я могу поступить 2 способами, могу просто скопировать всю корзину целиком вместе с полным составом модулей. А могу добавить вручную, так как ко многим модулем у меня уже выполнены привязки для того, чтобы мне потом не пришлось их удалять. Я лучше создам новую корзину вручную и. Правой кнопкой на шине добавить устройство. Добавляем 500 край. Модули ст добавились автоматически, теперь мы видим, что во 2 корзине у нас имеется также модуль ЦУ, добавляем его вручную и.

53:54 Уже непосредственно к данному крайту. Будем процессором. Теперь Модули ввода вывода вывода.

54:54 Проверяем. АО Ды ДАО и пустая да конфигурация соответствует реально. Теперь заходим в каждый Крейд, убеждаемся, что адрес Крейта соответствует реальности для левого корыта. У нас остался также адресной и для правого. Крайта у нас подставился по порядку адрес. 1 Он опять же совпадает с тем, который мы только что выставили на входном модуле ст. Теперь для каждой корзины мы должны выбрать режим резервирования частично.

55:40 И последний шаг для модули Цу мы должны явным образом указать, какая именно шина будет использоваться конкретным модулем ЦУ. То есть в левой корзине модуль ЦУ у нас используют шину номер 1, выбираем МБ 1? Правый. Используют шину, 2 выбрали. Сохраняемся. И можем загрузить. Наше приложение в 1 из контроллеров. Давайте убедимся, что у нас выставлены галочки в компоненте резервирования. Галочки установлены и как раз проверим работу автоматической синхронизации проектов.

56:47 То есть сейчас я загружаю проект именно в ПЛК 1? Мы видим проект, у нас загрузил сам. Переводим контроллер в состоянии старт. Он взял на себя активную роль при этом 2 полка. Мы видим индикатор РАН, у него погас, потому что он начал загружать в себя приложение из 1 контроллера и сейчас также дождемся. Когда проект полностью загрузится, на данный момент мы уже можем наблюдать то, что со стороны 1 контроллера происходит успешная работа как с локальными модулями, расположенными в этой же корзине, так и с модулями из. Соседней корзины это мы наблюдаем при помощи индикаторов, б 1 которые у нас горят зеленым цветом на всех модуля холода вывода. То есть управление сейчас всеми этими модулями осуществляется при помощи данного модуля ЦУ за?

58:02 За счет Подключения между корзинами по его 1 шине. Загрузка проекта непосредственно зависит от размера самого проекта и занимает примерно от полутора 2 минут до нескольких минут. В случае, если проект у вас достаточно большой. В некоторых случаях бывает быстрее и проще произвести ручную загрузку приложения. Сначала в 1 контроллер, потом отключиться от него. И провести загрузку во 2 контроллер, но при помощи автозагрузки это, конечно же, делать удобнее. И теперь, как мы можем видеть загрузка? Во 2 модуль ЦУ у нас прошла успешно, он перешел в режим стенбай. Об этом говорит индикатор РДД, который мигает раз в секунду, и шина б 2 загорелась желтым цветом, как в 1 корзине, так и во 2. То есть теперь модули целую крест накрест опрашивают у нас обе корзины?

59:12 Давайте попробуем создать аппаратную ошибку. Сейчас у нас активно является левая корзина, которая полка, а она работает по 1 шине, поэтому я разорву именно 1 шину. Разорвал. Мгновенно перешло управление на. ЦПУ Б, соответственно, 2 Шина в 2 загорелась зеленым цветом сразу на обоих корзинах. Модуль Цу с левой стороны видит модули, находящиеся в его корзине, поэтому на них индикация бы 1 горит желтым цветом. А до этих модулей у него связи нет, соответственно, здесь индикатора бы 1 загорелись красным цветом. Возвращаю шину на место.

1:00:16 И аппаратная ошибка пропала, мы видим, что опрос снова происходит сразу по обеим шинам. При этом передачи управления у нас не произошло активной. По прежнему остается ЦПУ Б, еще можно ответить такую полезную функцию, как защита от 2 мастеров. Она может использоваться только когда есть, хотя. бы 1 общий модуль ввода вывода для обоих спу, в чем заключается эта функция? Сейчас у нас имеется единственная линия синхронизации, и мы помним. Что в случае с полным резервером при разрыве всех линий синхронизации? Оба модуля ЦУ переходили в активный режим, разорвем линию синхронизации.

1:01:05 И мы видим, что Шина 1 у нас осталась зеленая 2. Желтая, то есть 1 модуль, у нас является активным. Давайте посмотрим непосредственно роли по наших контроллеров вот здесь. Левый контроллер находится в режиме автономный, а правый контроллер находится в режиме ошибка соединения. То есть таким образом, что они обменялись информацией о том, что какова ситуация с их общими модулями ввода вывода, то есть это возможно благодаря тому. Что тот процессор, которому необходимо принять решение, стоит ли переходить в активную роль или нет? Он может обратиться к общим модулям водовода и, условно говоря, задать им вопрос. А есть ли у вас сейчас взаимодействие с модулем центрального процессора по? соседней шине, и если модули ввода вывода, сообщают, что да, действительно, по соседней шине обмен идет. И Шина является активной, тогда, соответственно, данный модуль ЦУ, который задавал эти вопросы. Он активность на себя брать не будет и будет продолжать наблюдать. За ситуацией, если же все таки модули ввода вывода, потеряют опрос по соседней шине. Только тогда он уже перейдет непосредственно в активный режим. Таким образом, даже при отсутствии линии синхронизации мы можем исключить возникновение 2 активных мастеров.

1:02:45 И давайте рассмотрим еще последнюю закладку в компоненте Риданденсе ос. Это закладка сообщения здесь при нажатой кнопочке обновления. Мы можем видеть, что одновременно поступает информация из журнала как с 1 контроллера. Так и со 2 мы можем включить отфильтровку по конкретному компоненту по умолчанию уже включена отфильтровка по компоненту рядами ос. То есть мы видим только его сообщение, и очень удобно мы можем отслеживать, что происходит. На обоих контроллерах в момент каких то неполадок на линиях синхронизации. Итак, на этом мы заканчиваем сегодняшний видеоурок в нем. Мы рассмотрели базовые принципы, которые нам необходимы для настройки резервирования. На контроллерах регул дополнительную информацию. Вы можете почерпнуть самостоятельно из нашей официальной документации, с которой мы также сегодня познакомились на этом на сегодня. Все спасибо за внимание, до свидания.

Расшифровка сделана автоматически (Yandex SpeechKit) и может содержать ошибки в терминах.

Оставьте комментарий

Войти

Зарегистрироваться

Сбросить пароль

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

Прокрутить вверх