Time-based IO или как управлять быстрым дискретным технологическим процессом строго по времени

Уроки TIA Portal, STEP7 и HMI

 



Содержание уроков


Урок 28
Time-based IO или как управлять быстрым дискретным технологическим процессом строго по времени

В стандартных системах время реакции системы управления на входные события зависит от:

- времени цикла программы ПЛК
- времени цикла шины
- времени цикла модулей ввода-вывода
- времени цикла датчиков и исполнительных устройств.

Рис.1

В системах, в которых входы-выходы обрабатываются по времени (Time-based IO), время реакции системы управления на входные события не зависит от:

- времени цикла программы ПЛК
- времени цикла шины
- времени цикла модулей ввода-вывода
- времени цикла датчиков и исполнительных устройств.

Рис.2

В системах с Time-based IO все события привязываются к базовому времени TIO_Time в формате LTIME с помощью меток времени (time stamp).

Рис.3

LTIME – это формат времени в наносекундах (64 битное число).

TIO_Time начинается с нуля после каждой перезагрузки ПЛК и может тикать более 290 лет, т.е.
TIO_Time не привязано к мировому или московскому времени, но оно позволяет измерять отрезки времени относительно событий, регистрируемых по фронтам дискретных входов специального технологического модуля TIO Timer DIDQ. Модуль TIO Timer DIDQ управляет фронтами дискретных выходов по времени TIO_Time.

Например, TIO Timer DIDQ регистрирует положительный и/или отрицательный фронт сигнала по входу канала 1, считывает его метку времени, прибавляет к этому времени некоторое время задержки, присваивает полученное время метке времени положительного и/или отрицательного фронта выхода канала 1 и в нужное время активирует этот выход.

Для IO систем используется CPU и IM с поддержкой изохронного режима и модуль TIO:

Станция распределённого ввода-вывода ET200SP ET200MP
Интерфейсный модуль с поддержкой изохронного режима IM 155-6 PN HF IM 155-5 PN HF
Технологический модуль TIO TM Timer DIDQ 10x24V TM Timer DIDQ 16x24V


В изохронном режиме (IRT) данные между TM Timer DIDQ и CPU передаются по сети PROFINET в чётко фиксированные отрезки времени, задаваемые параметром Send clock (до 4 мс).

После одного или нескольких изохронных циклов передачи данных вызывается специальный изохронный организационный блок OB, который в цикле приложения (Application cycle) управляет модулем TM Timer DIDQ.

Рис.4

В одном цикле приложения может быть зарегистрировано максимум 2 фронта для каждого входного-выходного сигнала:

Рис.5

Рис.6

Задание

Имеется конвейер с бутылками:

Рис.7

Световой барьер (Light barrier) обнаруживает бутылку и отправляет сигнал в модуль TIO Timer DIDQ, который присваивает временные метки фронтам этого сигнала и отправляет данные в CPU по изохронному каналу сети PROFINET. ПЛК вычисляет время задержки (Delay time) срабатывания толкателя (Pusher) с учётом скорости конвейера и расстояния от светового барьера до толкателя. В расчётное время (когда бутылка проезжает мимо толкателя) ПЛК сталкивает эту бутылку с конвейера.

Необходимо сконфигурировать и запрограммировать ПЛК.

Решение

  1. Создаём новый проект и выбираем следующие компоненты автоматизации (которые поддерживают IRT и Time-based IO):
    - CPU 1516-3 PN/DP
    - IM 155-6 PN HF
    - TM Timer DIDQ 10x24V

    Рис.8

  2. Добавляем OB61 для изохронной обработки данных.

  3. Настраиваем изохронный режим для технологического модуля:

    Рис.9

  4. Настраиваем изохронный режим для интерфейсного модуля:

    Рис.10

  5. Настраиваем IRT домен:

    Рис.11

    Рис.12

  6. Настраиваем вход и выход модуля TM Timer DIDQ:

    Рис.13

  7. Задаём время цикла приложения в свойствах изохронного OB61:

    Рис.14

  8. В этом примере мы не будем разбирать саму прикладную программу, рассмотрим только библиотечные функциональные блоки, которые требуются для управления модулем TM TIO DIDQ:

    Рис.15

  9. Функциональный блок TIO_SYNC синхронизирует до 8 модулей TM Timer DIDQ с временем TIO_TIME. Вызываем его в OB61:

    Рис.16

    Задаём для него 4 параметра:

    HWID_1: идентификатор первого модуля TM TIMER DIDQ (таких модулей может быть 8)
    SendClock: время передачи изохронных данных
    PIP_Mode: режим опроса данных модуля TIO
    PIP_PART: номер раздела образа процесса PIP для изохронного опроса

  10. Функциональный блок TIO_DI, считывает фронты входного сигнала с метками времени. Вызываем его в прикладной программе, которая вызывается в OB61:

    Рис.17

    Задаём для него 5 параметров:

    HWID: идентификатор модуля TM TIMER DIDQ
    Channel: номер канала дискретного входа (в модуле TIO для ET200SP 4 входных канала: 0..3)
    TIO_SYNC_DATA: системные данные, которые считываются с выхода функционального блока TIO_SYNC
    EdgeSel: Селектор режима обработки фронтов входного сигнала

    Рис.18

    TO: Время выдачи выходных данных по изохронному соединению сети PROFINET.

  11. Функциональный блок TIO_DQ, управляет фронтами выходного сигнала по меткам времени. Вызываем его в прикладной программе, которая вызывается в OB61:

    Рис.19

    Задаём для него 4 параметра:

    Channel: номер канала дискретного выхода (в модуле TIO для ET200SP 6 выходных каналов: 0..5)
    HWID: идентификатор модуля TM TIMER DIDQ
    TIO_SYNC_DATA: системные данные, которые считываются с выхода функционального блока TIO_SYNC
    TO: Время выдачи выходных данных по изохронному соединению сети PROFINET.

    Демо-проект с детальным описанием можно скачать по ссылке