Форсирование переменных в ProSafe-RS

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

 


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


Урок 3
Форсирование переменных в ProSafe-RS

Переменная изменяется программой или процессом. При форсировании переменная становится константой, которую можно изменять вручную.

Форсирование переменных (входных и выходных переменных, внутренних переменных, параметров функциональных блоков, данных обмена с подсистемами и данных межконтроллерного обмена) используется во время ввода в эксплуатацию, обслуживания или отладки программы.

Форсирование выполняется в два шага:

  1. Лочим (lock) переменную
  2. Изменяем её значение.

Разлочивание переменной выполняется с помощью кнопки [Unlock]

Форсирование не требует программирования.

Отличие в форсировании входных и выходных переменных

Форсирование входных переменных

Рассмотрим подробнее форсирование входной переменной.

Входная переменная состоит из четырёх чисел:

  1. Физические входные данные
  2. Физический статус входных данных
  3. Логические входные данные
  4. Логический статус входных данных

Рис. Форсирование входных переменных

Если входная переменная незалочена, то логические входные данные повторяют физические входные данные.

Если входная переменная залочена, то разрывается связь между физическими и логическими входными данными, и можно вручную менять (форсировать) значения входных логических данных. Программа обрабатывает не реальную процессную переменную, а форсированную. На рисунке выше жёлтым маркером отмечены форсируемые вручную данные.

Если в параметрах входного канала включен контроль обрыва линии, то при физическом обрыве линии физический статус входных данных будет BAD, если нет обрыва – GOOD.

Если к аналоговому входу подключен токовый датчик 4..20мА, то физическое значение входной переменной изменяется от 0% (4мА) до 100% (20мА).

Если к дискретному входу подключена нормально открытая кнопка, то при её нажатии физическое значение входной переменной изменяется с FALSE на TRUE.

Форсирование выходных переменных

Рассмотрим подробнее форсирование выходной переменной.

Выходная переменная состоит из четырёх чисел:

  1. Логические выходные данные
  2. Логический статус выходных данных
  3. Физические выходные данные
  4. Физический статус выходных данных

Рис. Форсирование выходных переменных

Если выходная переменная незалочена, то физические выходные данные повторяют логические выходные данные.

Если выходная переменная залочена, то разрывается связь между логическими и физическими выходными данными, и можно вручную менять (форсировать) физическое значение выходных данных и логическое значение статуса выходных данных. Программа не влияет на физический выход и обрабатывает не реальный статус выходных данных, а форсированный. На рисунке выше жёлтым маркером отмечены форсируемые вручную данные.

Если в параметрах выходного канала включен контроль обрыва линии, то при физическом обрыве линии физический статус выходных данных будет BAD, если нет обрыва – GOOD.

Если физическое значение выходной переменной изменяется от 0% до 100%, то выходной ток аналогового токового выхода изменяется соответственно от 4мА до 20мА.

Если физическое значение выходной переменной изменяется с FALSE на TRUE, то на подключенную к соответствующему дискретному выходу катушку подаётся напряжение.





















Тестирование канала ввода (вывода)

Для тестирования прохождения сигнала от датчика до модуля ввода (или от модуля вывода до исполнительного устройства) используем функцию залочивания всего модуля ввода (вывода) или каналов ввода (вывода) по отдельности:
Tools > Maintenance > I/O Lock Window

Задание

Освоить применение функции форсирования переменных на реальном объекте во время выполнения пусконаладочной процедуры проверки контура (Loop Check).

Решение

По ходу этой процедуры проверяется прохождение сигналов от датчиков до HMI и от HMI до исполнительных устройств. При этом логическую связь между входными и выходными сигналами необходимо разорвать, чтобы чего не вышло (так как не всё ещё отлажено).

Для использования функции форсирования необходимо перейти на первый уровень безопасности ПАЗ:
Tools > Maintenance > Set SCS Security Level
В открывшемся окне задать:
New Level: 1
Password: *******

В нормальном состоянии необходимо вернуться на второй уровень безопасности ПАЗ.

Проверка входного контура с датчиком (ручным пожарным извещателем)

  1. Перед тестированием датчика его необходимо перевести в режим обслуживания (Maintenance) с помощью операторского интерфейса. В этом режиме срабатывание датчика отображается на мнемосхеме станции оператора РСУ, но не влияет на управление исполнительными устройствами. Имитируя срабатывание датчика, наблюдаем его статус на экране станции оператора.

  2. Если у датчика отсутствует режим обслуживания, который задаётся оператором, то перед проверкой контура необходимо разорвать его логическую связь с исполнительными устройствами. Для этого открываем окно форсирования и дважды щёлкаем в поле L левой кнопкой:
    Tools > Maintenance > I/O Lock Window

    Рис. I/O Lock Window: слот 3 канал 1

  3. В появившемся окне нажимаем кнопку [Lock]:

    Рис. Write BOOL variable

  4. Красная звёздочка справа означает, что первый канал залочен, жёлтая звёздочка слева – что в третьем слоте есть залоченный канал:

    Рис. I/O Lock Window: канал 1 залочен
    Если залочить все каналы в третьем слоте, то жёлтая звёздочка превратиться в красного ёжика.

  5. Если теперь нажать на кнопку ручного пожарного извещателя, то мы увидим прохождение сигнала до контроллера – физическое значение входной переменной изменится на TRUE, при этом логическое значение останется FALSE и программа контроллера не отработает этот аварийный сигнал.

  6. Если необходимо проверить, как программа отрабатывает сигнал, не нажимая при этом на кнопку пожарного извещателя, то щёлкаем дважды по слову FALSE в поле <Logical Value> канала 1 и в появившемся окне нажимаем на кнопку [TRUE]:

    Рис. Write BOOL variable: TRUE

  7. Логическое значение входной переменной изменяется на TRUE:

    Рис. I/O Lock Window: канал 1 форсирован
    Результат будет тот же, что и при нажатии на пожарный извещатель – сработает сигнализация!

    Красная точка справа в поле D означает, что логическое значение входной переменной первого канала отличается от физического значения. Жёлтая точка слева означает, что в третьем слоте есть канал с разными физическим и логическим значениями входной еременной. Если теперь разлочить канал, то логическое значение входной переменной изменит своё значение на FALSE (сравняется с физическим значением).

    Нужно быть предельно осторожным при разлочивании переменных!

  8. Залочим второй канал и зафорсируем логический статус входной переменной в BAD:

    Рис. I/O Lock Window: канал 2 форсируем в BAD




















Проверка выходного контура с исполнительным устройством (сиреной)

  1. В операторском интерфейсе обычно предусматривается режим тестирования простых исполнительных устройств (сирен, сигнальных лампочек).

    Если в HMI нет тестового режима, то можно включить сирену с помощью функции форсирования выходов:
    Tools > Maintenance > I/O Lock Window

    Рис. I/O Lock Window: слот 4 канал 1

  2. Дважды щёлкаем в поле L канала 1 слота 4 и в появившемся окне нажимаем кнопку [Lock] – канал залочен:

    Рис. I/O Lock Window: слот 4 канал 1 залочен

  3. Дважды щёлкаем по слову TRUE в поле <Physical Value> и в появившемся окне нажимаем кнопку [FALSE] - физическое значение выходной переменной зафорсировано в FALSE:

    Рис. I/O Lock Window: расхождение между физическим и логическим значениями
    В поле D появилась красная точка, сигнализирующая о том, что физическое значение выходной переменной отличается от логического значения.

  4. Если теперь разлочить этот канал, то физическое значение FALSE не перезапишется логическим TRUE:

    Рис. I/O Lock Window: слот 4 канал 1 разлочен и заблокирован
    Канал остаётся заблокированным (красная точка осталась).

  5. Чтобы деблокировать этот канал необходимо в меню Maintenance выбрать пункт SCS State Management (управление состоянием контроллера ПАЗ):

    Рис. Меню Обслуживание

  6. В открывшемся окне ввести пароль (если есть) и нажать кнопку [OK]:

    Рис. Input Maintenance Support Password

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

    Рис. Окно управления состоянием контроллера безопасности
    В открывшемся окне буквой D помечены заблокированные каналы, в которых физические выходные переменные отличаются от логических:

    Рис. Окно статусов каналов

  8. Если нажать кнопку [Output enabled], то ВСЕ каналы одновременно будут разблокированы и логические выходные переменные будут переданы на физические выходы.

    Эта же деблокировка действует и на данные, передаваемые в другие контроллеры (см. уроки 7-9)

    Рис. I/O Lock Window: слот 4 канал 1 разблокирован
    Необходимо тщательно проанализировать, что произойдёт при деблокировке каналов!

Форсирование переменных внутри программы

Выполним залочивание переменных в окне статуса программы:

  1. Щёлкаем дважды мышкой по входной переменной, в открывшемся окне нажимаем кнопку [Lock]

    Рис. Форсирование переменных

  2. Ещё раз дважды щёлкаем по переменной, в открывшемся окне нажимаем кнопку [TRUE] – значение булевой переменной становится равной TRUE. Залоченная переменная помечается звёздочкой.

    Рис. Форсирование

  3. Чтобы разлочить переменную необходимо дважды щёлкнуть по слову YES в столбце Locked в соответствующей строке в окне Spy (помечено жёлтым маркером на рисунке выше).

Диагностика форсов

В процессе пусконаладки переменные форсируются в большом количестве.
Как быстро проверить, какие переменные зафорсированы внутри программных блоков (и в окне I/O Lock Window)?

  1. Открываем окно диагностики:
    Debug > Diagnosis
    И переходим на закладку Locked Variables:

    Рис. Окно диагностики форсов
    Видим, что в данный момент зафорсированы две переменные: DI1 и DO1.

  2. Кнопкой [Unlock All] разлочиваются сразу все переменные (опасно!).
    Кнопкой [Unlock] разлочивается одна выделенная переменная (тоже опасно!).

    Безопасней разлочивать переменные там, где они были залочены, так как там можно проанализировать последствия разлочивания переменных.