Межконтроллерная безопасная коммуникация Inter-SCS Safety Communication

Пошаговый самоучитель ProSafe-RS

 


Содержание самоучителя


Урок 7
Межконтроллерная безопасная коммуникация Inter-SCS Safety Communication

Inter-SCS Safety Communication обеспечивает безопасное межконтроллерное управление Safety Loop (когда датчик подключен к входу одного контроллера, а исполнительное устройство – к выходу другого контроллера).

Контроллеры могут находиться в разных доменах.

Рис. Связывание

Ограничения:

  • Один SCS может обмениваться данными с 8 другими SCS в двух направлениях и с 16 SCS в одном направлении
  • 200 – максимальное количество число данных для передачи и 200 – для приёма

Задание

Запустить два симулятора SCS на одной машине и запрограммировать передачу данных между контроллерами ПАЗ по безопасной связи.

Решение

Предпосылкой для симуляции межконтроллерной связи является интеграция Prosafe-RS и CENTUM VP (см. Урок 6).

  1. Открываем проект CENTUM VP и добавляем ещё одну станцию безопасности SCS0103:

    Рис. Новая станция безопасности

  2. Открываем проект ProSafe-RS SCS0102 и добавляем программный блок передатчика данных – Producer:

    Рис. POU Producer

  3. Открываем программу и добавляем функциональный блок передатчика данных целого типа - PROD_I:

    Рис. PROD_I
    Входная переменная SDATA:
    Рис. SDATA
    Выходная переменная P010201 (binding variable):
    Рис. P010201
    Формат имени выходной переменной передатчика:
    Pddssxxx
    P – заглавная буква P (от Producer), dd – домен передатчика, ss – номер станции передатчика, xxx – три цифры.



















  4. Открываем редактор списка внешних связей:
    Project > External Binding List

    Рис. External Binding List
    и добавляем выходную переменную передатчика:
    Рис. Producer Binding List

  5. Компилируем проект:
    Project > Build Project/Library

  6. Прогоняем через анализаторы: Integrity Analyzer и Cross Reference Analyzer (см. Урок 2)

  7. Создаём новый проект ProSafe-RS для станции SCS0103 (см. Урок 1)

  8. Добавляем программный блок приёмника – Consumer:

    Рис. Consumer

  9. Открываем программу и добавляем функциональный блок приёмника данных целого типа - CONS_I:

    Рис. CONS_I
    Входная переменная С0102001:
    Рис. С0102001
    Формат имени входной переменной приёмника:
    Cddssxxx
    C – заглавная буква C (от Consumer), dd – домен передатчика, ss – номер станции передатчика, xxx – три цифры (как у передатчика)

    Выходная переменная RDATA:
    Рис. RDATA



















  10. Открываем редактор списка внешних связей:
    Project > External Binding List

    Рис. SCS0103 External Binding List

  11. Добавляем связные переменные передатчика и приёмника:

    Рис. SCS0103 Consumer Binding List

  12. Компилируем проект:
    Project > Build Project/Library

  13. Прогоняем через анализаторы

  14. Запускаем симулятор станции SCS0103:

    Рис. SCS0103 Test Function

  15. Открываем проект SCS0102 и запускаем симулятор станции SCS0102

  16. В сервисном меню выбираем Inter-SCS Communication Lock Window:

    Рис. Inter-SCS Communication Lock Window

  17. Видим, что передача данных заблокирована:

    Рис. Sending Lock

  18. В сервисном меню выбираем SCS State Management:

    Рис. SCS State Management

  19. В открывшемся окне пароль не задаём:

    Рис. Input Maintenance Support Password

  20. В открывшемся окне нажимаем кнопку [I/O Channel Status]:

    Рис. I/O Channel Status

  21. В открывшемся окне нажимаем кнопку [Output enabled], чтобы разблокировать передачу данных:

    Рис. Output enabled



















  22. В окне Inter-SCS Communication Window видим, что передача данных выполняется:

    Рис. Sending Unlock

  23. Запускаем режим Debug программного блока Producer и форсируем входную переменную SDATA = 3

    Рис. Debug Producer

  24. Останавливаем режим Debug для программы станции SCS0102

  25. Открываем проект SCS0103

  26. Запускаем режим Debug программного блока Consumer и видим, что выходная переменная приёмника изменила своё значение на 3:

    Рис. Debug Consumer

  27. Самостоятельно программируем передачу данных типов BOOL и REAL с помощью функциональных блоков: PROD_B, CONS_B, PROD_R, CONS_R




Пошаговый самоучитель ProSafe-RS: урок 8

Пошаговый самоучитель ProSafe-RS: урок 6