Урок 7
Межконтроллерная безопасная коммуникация Inter-SCS Safety Communication
Inter-SCS Safety Communication обеспечивает безопасное межконтроллерное управление Safety Loop (когда датчик подключен к входу одного контроллера, а исполнительное устройство – к выходу другого контроллера).
Контроллеры могут находиться в разных доменах.
Ограничения:
- Один SCS может обмениваться данными с 8 другими SCS в двух направлениях и с 16 SCS в одном направлении
- 200 – максимальное количество число данных для передачи и 200 – для приёма
Задание
Запустить два симулятора SCS на одной машине и запрограммировать передачу данных между контроллерами ПАЗ по безопасной связи.
Решение
Предпосылкой для симуляции межконтроллерной связи является интеграция Prosafe-RS и CENTUM VP (см. Урок 6).
-
Открываем проект CENTUM VP и добавляем ещё одну станцию безопасности SCS0103:
-
Открываем проект ProSafe-RS SCS0102 и добавляем программный блок передатчика данных – Producer:
-
Открываем программу и добавляем функциональный блок передатчика данных целого типа - PROD_I:
Входная переменная SDATA:
Выходная переменная P010201 (binding variable):
Формат имени выходной переменной передатчика:
Pddssxxx
P – заглавная буква P (от Producer), dd – домен передатчика, ss – номер станции передатчика, xxx – три цифры. -
Открываем редактор списка внешних связей:
Project > External Binding List
и добавляем выходную переменную передатчика:
-
Компилируем проект:
Project > Build Project/Library - Прогоняем через анализаторы: Integrity Analyzer и Cross Reference Analyzer (см. Урок 2)
- Создаём новый проект ProSafe-RS для станции SCS0103 (см. Урок 1)
-
Добавляем программный блок приёмника – Consumer:
-
Открываем программу и добавляем функциональный блок приёмника данных целого типа - CONS_I:
Входная переменная С0102001:
Формат имени входной переменной приёмника:
Cddssxxx
C – заглавная буква C (от Consumer), dd – домен передатчика, ss – номер станции передатчика, xxx – три цифры (как у передатчика)
Выходная переменная RDATA:
-
Открываем редактор списка внешних связей:
Project > External Binding List
-
Добавляем связные переменные передатчика и приёмника:
-
Компилируем проект:
Project > Build Project/Library - Прогоняем через анализаторы
-
Запускаем симулятор станции SCS0103:
- Открываем проект SCS0102 и запускаем симулятор станции SCS0102
-
В сервисном меню выбираем Inter-SCS Communication Lock Window:
-
Видим, что передача данных заблокирована:
-
В сервисном меню выбираем SCS State Management:
-
В открывшемся окне пароль не задаём:
-
В открывшемся окне нажимаем кнопку [I/O Channel Status]:
-
В открывшемся окне нажимаем кнопку [Output enabled], чтобы разблокировать передачу данных:
-
В окне Inter-SCS Communication Window видим, что передача данных выполняется:
-
Запускаем режим Debug программного блока Producer и форсируем входную переменную SDATA = 3
- Останавливаем режим Debug для программы станции SCS0102
- Открываем проект SCS0103
-
Запускаем режим Debug программного блока Consumer и видим, что выходная переменная приёмника изменила своё значение на 3:
- Самостоятельно программируем передачу данных типов BOOL и REAL с помощью функциональных блоков: PROD_B, CONS_B, PROD_R, CONS_R