Урок 8
Межконтроллерная коммуникация
SCS Link Transmission
Два типа связи SCS Link Transmission:
-
SCS Link Transmission Safety Communication - безопасная коммуникация (Safety Loop) между двумя контроллерами
в одном домене:
1000 функциональных блоков, считывающих входные биты, может использоваться в одном SCS
128 - количество выходных битов у одного SCS -
SCS Link Transmission Global Switch Communication (Interference-free) – коммуникация между контроллерами
ПАЗ и РСУ в одном домене:
256 глобальных бит (Global Switch) SCS может считывать из PCS.
Inter-SCS Safety Communication | SCS Link Transmission | ||
---|---|---|---|
Safety Communication | Global Switch Communication | ||
Коммуникация между контроллерами в разных доменах | ДА | НЕТ | |
Коммуникация между контроллерами ПАЗ И РСУ | НЕТ | ДА | |
Safety Loop | ДА | НЕТ | |
Широковещательная коммуникация | НЕТ | ДА | |
Тип передаваемых данных | BOOL, INTEGER, REAL | BOOL |
Ограничения:
- Максимальное количество станций – 64
- Цикл передачи – 100 мс
Задание
- Запустить два симулятора SCS на одной машине и запрограммировать передачу данных между контроллерами по безопасной связи SCS Link Transmission Safety Communication
- Запустить два симулятора SCS и один симулятор FCS на одной машине и запрограммировать обмен данными по связи SCS Link Transmission Global Switch Communication между контроллером РСУ и контроллерами ПАЗ
Решение
Предпосылкой для симуляции межконтроллерной связи является интеграция Prosafe-RS и CENTUM VP.
- Открываем проект ProSafe-RS SCS0102
-
Открываем словарь переменных:
Project > Variables
и добавляем переменные:
SNDB0102001 (тип LTSND) – выходной бит SCS0102
RCVB0103001 (тип LTRCV) – входной бит от SCS0103
RCV0101001 (тип LTFCS) – входной бит от FCS0101
SND001 (тип BOOL) – переменная для передачи
RCV001 (тип BOOL) – переменная для приёма данных из SCS0103
RCVFCS001 (тип BOOL) - переменная для приёма данных из FCS0101
-
Открываем редактор SCS Link Transmission Builder:
-
Включаем приём и передачу данных:
-
Добавляем станции FCS0101 и SCS0103:
-
Добавляем выходной бит станции SCS0102:
-
Добавляем входной бит от FCS0101:
-
Добавляем входной бит от SCS0103:
-
Добавляем программный блок связи – Link:
-
Открываем программный блок Link и добавляем функциональные коммуникационные блоки и переменные:
- Компилируем проект, прогоняем через анализаторы
- Открываем проект ProSafe-RS SCS0103
-
Открываем словарь переменных:
Project > Variables
и добавляем переменные:
SNDB0103001 (тип LTSND) – выходной бит SCS0103
RCVB0102001 (тип LTRCV) – входной бит от SCS0102
RCV0101002 (тип LTFCS) – входной бит от FCS0101
SND002 (тип BOOL) – переменная для передачи
RCV002 (тип BOOL) – переменная для приёма данных из SCS0103
RCVFCS002 (тип BOOL) - переменная для приёма данных из FCS0101
- Открываем редактор SCS Link Transmission Builder
-
Включаем приём и передачу данных:
-
Добавляем станции FCS0101 и SCS0102:
-
Добавляем выходной бит станции SCS0103:
-
Добавляем входной бит от FCS0101:
-
Добавляем входной бит от SCS0102:
-
Добавляем программный блок – Link:
-
Открываем программный блок Link и добавляем функциональные коммуникационные блоки и переменные:
- Компилируем проект, прогоняем через анализаторы
- Открываем проект CENTUM VP в System View
-
Открываем редактор Global Switch Builder:
FCS0101 > SWITCH > GSwitchDef
и задаём два тега: SNDBSCS001 и SNDBSCS002
-
Открываем редактор FCS Constants Builder:
FCS0101 > CONFIGURATION > StnDef
и включаем передачу данных через Global Switch:
-
Запускаем симулятор SCS0103:
Maintenance > SCS Test Function -
Деблокируем выходы:
Maintenance > SCS State Management > I/O Channel Status > Output Enabled -
Запускаем симулятор FCS0101 из System View:
FCS0101 > FCS > Test Function -
В Workbench запускаем режим Debug для программного блока Link:
- Форсируем выходной бит SND002=TRUE
-
Вызываем лицевую панель по имени тега SNDBSCS002, включаем глобальный ключ %GS002 и наблюдаем,
как он приходит из FCS0101 в SCS0103:
- Выключаем режим Debug для программного блока Link
-
Открываем проект SCS0102 и запускаем симулятор SCS0102:
Maintenance > SCS Test Function -
Деблокируем выходы:
Maintenance > SCS State Management > I/O Channel Status > Output Enabled -
В Workbench запускаем режим Debug для программного блока Link и видим, что пришёл бит RCV001 из SCS0103:
- Форсируем выходной бит SND001=TRUE
-
Вызываем лицевую панель по имени тега SNDBSCS001, включаем глобальный ключ %GS001 и наблюдаем,
как он приходит из FCS0101 в SCS0102:
-
Переключаемся на SCS0103, включаем Debug для Link и видим, что пришёл бит из SCS0102: