ПРОГРАММИРОВАНИЕ ЛОГИЧЕСКОГО КОНТРОЛЛЕРА, ОТВЕЧАЮЩЕГО ЗА ПОЖАРОТУШЕНИЕ - Разработка структурной схемы автоматизированной системы управления пожаротушением на НПС "Рязань"

Программа среднего уровня АСУ пожаротушением осуществляет контроль и управление технологическими процессами с учетом всех режимов работы станции. Данная программа написана в среде разработки программного обеспечения для контроллеров Modicon фирмы Schneider Automation - Concept версии 2.5, с использованием IEC языков программирования: Структурированный текст (ST) и Диаграмма функциональных блоков (FBD).

Concept содержит следующие IEC языки программирования: диаграмма функциональных блоков (FBD), лестничная диаграмма (LD), диаграмма последовательного управления (SFC), список команд (IL) и структурированный текст (ST), а также Modsoft-ориентированную лестничную диаграмму (LL984).

Управляющая программа создается из секций согласно логической структуре. Внутри секции используется только один язык программирования. Базисными элементами языка программирования являются FBD согласно IEC функций и функциональные блоки, которые являются связываемыми логическими единицами.

При работе с различными языками программирования доступны специальные редакторы: FBD-редактор, LD-редактор, SFC-редактор, IL-редактор, ST-редактор, LL984-редактор.

Каждый редактор имеет индивидуально разработанное меню и инструментальную панель. При создании секции выбирается редактор, в котором будет проходить работа.

В дополнение к языку программирования имеются также зависимые от него следующие редакторы: редактор типов данных, редактор переменных, редактор данных ссылок. Эти редакторы делают доступными различные функции независимо от языка программирования.

Структура программы станции начинается с названия проекта, двойной щелчок мыши по которому вызывает появление конфигурации данного проекта.

Программа станции состоит из следующих модулей (Рис. 12.1.):

Где Initial - секция в которой выполняется первоначальная инициализация переменных программы;

CmdNPSProc - секция обработки общестанционных команд (отключениевключение вспомсистем, установка дистанционного и местного режима станции);

ModBusPlusProc - секция диагностики сети ModBuss Plus.

OIPProc - секция обработки и переописания аналоговых сигналов, сглаживания, определение недостоверности сигнала, анализ сигнала на превышения (занижения) уставок;

RedefineIn - секция входного переописания сигналов;

LimitProtects - Группа секций обработки предельных параметров, по которым происходит

Рис. 12.1. Реакция (включение/отключение) оборудования;

LimitSignProc - Секция обработки сигнализаций по предельных параметров;

Simulatoin - секция симуляции сигналов магистральных агрегатов, задвижек, вспомогательных систем для проверки алгоритмов работы систем без подключенных полевых датчиков;

MainProc - Секция описывает действия, выполняемые при возникновении пожара;

ValvesProc - секция управления задвижками;

VSGroup - группа секций управления вспомогательными системами;

AlarmsProc - секция управления сиренами;

DataForPeerCop - секция, в которой формируется область сигналов передаваемых на контроллер другой станции посредством системы PeerCop;

Raduga - секция, которая взаимодействует с прибором приемно-контрольным пожарный "Радуга 2А";

IPCESES - секция осуществляет прием и обработку данных с датчиков ИП101_1- А2 "ИПЦЭС".

DiagnoProc - секция диагностики корзин СА и входных/выходных модулей.

RedefineOut - секция переописания дискретных выходных сигналов;

Рис. 12.2. Окно конфигурирования контроллера.

Секция Initial подготовки данных для выполнения программы

Первоначальная инициализация переменных программы производится в секции Initial, в которой имеются три основные переменные: slInitDone, slInitVar и и slStartProgram. Эти переменные разделяют программу секции на три части конструкциями IF ... THEN.

В конструкции переменной slInitDone выполняется одноразовая инициализация переменных: коэффициенты, флаги, уставки таймеров, ссылки аналоговых сигналов, параметры модуля чтения информации по интерфейсу RS-485 и др. В данной конструкции также производится отключение секций обработки защит и аналоговых параметров. Это необходимо для того, чтобы загрузить с верхнего уровня все уставки и технологические максимумы/минимумы аналоговых параметров.

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

Конструкция переменной slStartProgram необходима для того, чтобы после загрузки уставок в контроллер включить секции обработки защит путем установки в RDE листе среды разработки Concept переменной slStartProgram в единицу. Такой подход позволяет ускорить загрузку уставок в контроллер (т. к. не обрабатываются защиты), а также избежать появления большого числа ложных оперативных сообщений на верхнем уровне от сравнения с нулевыми или неверными уставками.

Кроме операций описанных выше в секции Initial выполняется синхронизация времени контроллера с системой отображения верхнего уровня или с системой телемеханики, а также выполняется отсчет по таймерам. Отсчет по таймерам выполняется блоком TMR_BLK30. Блок читает в начале каждого цикла выполнения программы (скана) системное время и выдает на выход MSecBlk разницу между значением времени в начале предыдущего скана и текущим временем в миллисекундах. На выход SecBlk поступают импульсы c интервалом 1 секунда. Данные отсчеты полученные от блока TMR_BLK30 Используются блоком обработки таймеров TMR_MAIN30. На вход BLK блока подается переменная MSecBlk или SecBlk, в зависимости от миллисекундного или секундного отсчета. На вход PT блока подается значение временной уставки в миллисекундах или секундах.

Каждому таймеру в управляющей программе соответствует уникальный номер и управляющее слово ET в следующем формате:

Биты с 0 по 13 - значение времени отсчитываемое с момента запуска таймера. В момент запуска таймера значение времени равно уставке PT. Далее из содержимого битов 0-13 вычитается значение на входе BLK.

Бит 14 - блок выставляет значение "1", если значение битов 0-13 слова ET стала равна 0 (срабатывание таймера). Значение "1" снимается блоком в начале следующего скана.

Бит 15 - запись в бит значения "1" является сигналом для запуска таймера. Бит 15 снимается одновременно с выставлением "1" в бит 14 или принудительно из управляющей программы.

Если слово ET приравнять нулю, то таймер сбросится принудительно.

Синхронизация и установка времени в контроллере производится с помощью блока SET_TOD. Блок предназначен для установки системного времени контроллера с АРМ инженера или телемеханики.

При установке входа S_PULSE с "0" в "1" с помощью переменной SetTimeDay (адрес 0:000002) может производится коррекция системного времени контролера.

Переменная SetWeekDay (адрес 4:00017) привязана ко входу D_WEEK и служит для установки дня недели.

Переменная SetMonthReg (адрес 4:00011) привязана ко входу MONTH и служит для установки месяца года.

Переменная SetDayReg (адрес 4:00012) привязана ко входу DAY и служит для установки числа месяца.

Переменная SetYearReg (адрес 4:00013) привязана ко входу YEAR и служит для установки года.

Переменная SetHourReg (адрес 4:00014) привязана ко входу HOUR и служит для установки часа в сутках.

Переменная SetMinuteReg (адрес 4:00012) привязана ко входу MINUTE и служит для установки минут.

Переменная SetSecondReg (адрес 4:00012) привязана ко входу SECOND и служит для установки секунд.

Выход TOD_CNF Блока выдает "1", если системные часы определены и блок готов к установке времени. Если на выходе блока значение "0", значит либо не найдены системные часы, либо идет процесс установки системного времени.

В секции также производится контроль работы главного компьютера. Контроль реализован с помощью таймера. Управляющее слово таймера контроля работы главного компьютера находится в массиве InitialTimers с индексом [1]. С помощью переменной VuMainCompCnt устанавливается номер ведущего компьютера.

Секция OipProc - обработка аналоговых параметров

В секции OIPProc используется программный блок AIP. Блок AIP имеет тип OIP и предназначен для обработки входных аналоговых сигналов.

Блок AIP имеет следующие входа:

IBBSign: сигнализация.

IDMes: начальный номер оперативных сообщений.

MaxAI: Количество обрабатываемых аналоговых сигналов.

AIBegin: начальный адрес массива ссылок на аналоговые сигналы в 4-й области.

DTBegin: начальный адрес массива ссылок на уставки в 4-й области.

IAIIndex: индекс входного аналогового параметра для записи уставок.

IAIIndex2: подтверждение завершения записи уставок по данному входному аналоговому параметру(равен индексу параметра).

IAOIndex: индекс выходного аналогового параметра для записи уставок.

IAOIndex2: подтверждение завершения записи уставок по данному выходному аналоговому параметру(равен индексу параметра).

IwPoint: адрес (ссылка в явном виде) источника параметра.

IwHL: верхний предел датчика (код АЦП).

IwMax2: максимальная аварийная уставка.

IwMax1: максимальная уставка

IwMin1: минимальная уставка

IwMin2: минимальная аварийная уставка

IwLL: нижний предел датчика код АЦП

IwKC: коэффициент сглаживания

IwDelta: зона нечувствительности

IwMask: маска выдачи оп. сообщений и сигнализации по срабатыванию уставок.

IDebugAI: номер сигнала на выходе oDebugAI.

IDebugAC: номер параметра в коде АЦП на выходе oDebugACP.

IDelay: задержка записи уставок при прокачке с верхнего уровня.

Блок AIP имеет следующие выхода:

ОBBSign : звонок в операторной

OAIndex: индекс параметра для записи уставок.

AIIndex2 : подтверждение завершения записи уставок по данному входному аналоговому параметру (равен индексу параметра).

AOIndex : индекс параметра для чтения уставок.

AOIndex2 : подтверждение завершения чтения уставок по данному входному аналоговому параметру (равен индексу параметра).

IwPoint : адрес источника параметра (3хххх или 4хххх).

ОwHL : верхний предел датчика код АЦП.

OwMax2 : максимальная аварийная уставка.

OwMax1 : максимальная уставка.

OwMin1 : минимальная уставка.

OwMin2 : минимальная аварийная уставка.

OwLL : нижний предел датчика код АЦП.

OwKC : коэффициент сглаживания.

OwDelta : зона нечувствительности.

OwMask1 : маска выдачи оп. сообщений по срабатыванию уставок.

OwMask2 : маска включения сигнализации по срабатыванию уставок.

В каждом скане модуль OIP обрабатывает все аналоговые входные сигналы. Для этого модуль считывает код АЦП начиная с регистра с адресом в переменной AIBegin. Количество считываемых регистров равно значению в переменной iMaxAI. Командное слово аналогового сигнала имеет формат:

Биты 0-10 - код коэффициента сглаживания аналогового сигнала.

Бит 11 - бит защелка симуляции.

Бит 12 - бит - команда на симуляцию.

Биты 13 - 15 - срабатывание уставок:

    001 - минимальная аварийная уставка; 010 - минимальная уставка; 011 - норма; 100 - максимальная уставка; 101 - максимальная аварийная уставка; 110 - нижняя недостоверность; 111 - верхняя недостоверность.

Группа секций LimitProtects - обработка защит по предельным значениям параметров

В секции LCommonProc осуществляется переописание сигналов, заведенных на защиты по предельным значениям с помощью блока MSP30, запуск, сброс и обработка таймеров защит и прописана реакция оборудования на каждую защиту: включение и отключение вспомсистем, сирен и табло.

Обработка срабатывания таймеров защит по предельным значениям производится в секции LTimersProc.

Программа секции анализирует наличие 15-го бита в массиве параметров AwList4_P. При наличии параметра производится отработка соответствующего вида защиты. При этом выдается сообщение и включается сирена в операторной.

Секция LimitSignProc - обработка сигнализации по предельным значениям параметров.

В секции LimitSignProc осуществляется переописание сигналов, заведенных на защиты по предельным значениям с помощью блока MSP30.

Программа секции анализирует наличие 15-го бита в массиве параметров AwList5_P. При появлении и исчезновении параметра производится выдача соответствующих оперативных сообщений.

Рис. 12.3. Фрагмент ST программы из секции Raduga.

Рис. 12.4. Фрагмент FBD программы из секции ModBusPlusProc.

Похожие статьи




ПРОГРАММИРОВАНИЕ ЛОГИЧЕСКОГО КОНТРОЛЛЕРА, ОТВЕЧАЮЩЕГО ЗА ПОЖАРОТУШЕНИЕ - Разработка структурной схемы автоматизированной системы управления пожаротушением на НПС "Рязань"

Предыдущая | Следующая