ФБ, специфические для объектов «ГЗУ», «ГЗУ-Массомер»
ФБ №38 «ГЗУ (алгоритм Башнефть)» v.1
Требования к типам входов/переменных/выходов и их количеству:
- Вход Enable - строго bit. Разрешает работу ФБ.
Примечание: подача «0» на вход «Enable» сбрасывает состояние ГЗУ.
- Вход «Hold» при подаче на него «1» отключает логику работы ФБ. При этом счётчики, таймеры и состояние ФБ «ГЗУ» сохраняют своё прежнее состояние (до подачи «1» на вход «Hold»).
- Вход «Работа ГП разрешена» запрещает включение гидропривода. При этом если при ра-боте ФБ ГЗУ не потребуется перевод отвода, будет продолжена работа по алгоритму. Если необходимо включение ГП, ФБ ГЗУ останется в стадии прямого хода, но ГП не включит пока на вход «Работа ГП разрешена» не будет подана «1».
- Вход «Код ПСМ» - целочисленный вход. ФБ использует только 4 младших бита этого значения.
- «Кол-во отводов» - уставка, необходимая для корректного обнаружения неисправности ПСМ (неверный порядок переключения).
- Уставки «Время полного хода», «Время обратного хода», «Время стабилизации» строго целочисленные, задают длительности соответствующих этапов работы ГЗУ в секундах. При счёте этих интервалов используется внутренняя переменная «Таймер1».
- Уставка «Холостых переводов отвода» указывает, сколько раз ГЗУ может переводить отвод не начав замер («холостой перевод»). Для подсчёта кол-ва холостых переводов используется внутренняя переменная «Сч. Холостых переводов отв.».
- Входы «Интервал АПВ» задаёт период времени (в минутах), по истечении которого флаг «Стоп» ГЗУ будет снят и ГЗУ будет перезапущена в режиме циклического замера.
- «Количество АПВ» - сколько раз ГЗУ будет перезапускаться с помощью АПВ до установки флага состояния ГЗУ «Полный стоп». Попытки АПВ считаются с помощью внутренней переменной «№ попытки АПВ».
- Вход «Конец счёта» нужен для определения момента окончания счёта по отводу и начало нового либо начало операции перевода отвода.
- Дискретные входы «КМД руч. перевод отвода», «КМД сброс СТОП» эквивалентны соответствующим командам Ротора.
- Дискретный вход «КМД ручной замер» переводит ГЗУ в режим ручного замера по отводу, номер которого подан на вход «№ отвода для ручного замера».
- Внутренняя переменная «Код ПСМ прошлый» используется для определения неправильного порядка переключения – неисправностей ПСМ и ГП.
- На дискретных выходах «ГП ВКЛ.» и «ГП ОТКЛ.» появляется «1» в начале и в конце прямого хода ГП соответственно. Длительность импульса = периоду исполнения цепочки ФБ.
- Выход «Идёт счёт» = «1» во время замера. Эквивалентен флагу «Zamer» в состоянии ГЗУ.
- На дискретном выходе «Конец счёта» появляется «1» в конце замера (когда вход «Конец счёта» = «1»), а также когда ГЗУ досрочно заканчивает замер, например, при ручном переводе ПСМ во время замера. Длительность импульса = периоду исполнения цепочки ФБ.
- Выход «№ отвода» указывает на текущий отвод в замере.
- Выходы «Таймер текущей стадии» и «Уставка таймера текущей стадии» вытаскивают наружу значение таймера и уставку таймера текущей стадии (прямой, обратный ход, стабилизация перед замером). Указанные значения выводятся в секундах.
- Выход «Состояние ГЗУ» - значение типа uint16, содержащее до 16 флагов состояния:
| Номер бита | Значение флага |
| 0 | Enabled. «1» если вход «Enable» = «1». Иначе «0», логика ФБ запрещена и состояние ГЗУ сброшено. |
| 1 | Holded. «1» если вход «Hold» = «1». Иначе «0», логика ФБ приостановлена. Прошлое состояние ФБ не изменено. |
| 2 | GP_En. «1» если работа ГП разрешена входом «Работа ГП разрешена». |
| 3 | NeedPerevod. «1» если в данный момент по логике работы ФБ должна попытаться переключить отвод. |
| 4 | Forward. «1» во время прямого хода ГП. |
| 5 | Reverse. «1» во время обратного хода ГП. |
| 6 | Stab. «1» во время периода стабилизации. |
| 7 | Zamer. «1» во время замера по отводу. |
| 8 | Stop. «1» когда состояние ГЗУ – СТОП. |
| 9 | FullStop. «1» когда состояние ГЗУ – полный СТОП (СТОП и кончились попытки АПВ). Примечание: одновременно с флагом FullStop всегда устанавливается флаг Stop. |
| 10 | PSMbraked. «1» если причина СТОПа – неисправность ПСМ. |
| 11 | GPbraked. «1» если причина СТОПа – неисправность ГП. |
| 12 | TryCnt0. «1» если причина СТОПа – превышено максимальное кол-во «холостых» переключений. |
| 13 | Kluch. Признак ручного переключения ПСМ оператором с помощью ключа. Примечание: бит служит как внутренний флаг ФБ и устанавливается лишь на короткий период до включения обратного хода ГП. |
| 14 | Manual. «1» - режим ГЗУ: ручной замер, «0» - режим ГЗУ: циклический замер. |
| 15 | Manual1Cnt. «1» – признак того, что ручной режим включен лишь на 1 замер, после чего будет произведено переключение ФБ ГЗУ в циклический режим. |
ФБ №66 «ГЗУ (алгоритм Башнефть)» v.2
ФБ версии v2 отличается от v1 способом переключения в режим ручного замера. В v2 отсутствует вход «КМД «Ручной замер», вместо него добавлен выход «Отвод ручного замера». Для переключения ГЗУ в режим ручного замера достаточно на вход «Отвод ручного замера» подать номер отвода для ручного замера. Для переключения ГЗУ в циклический режим можно подать на этот вход «0».
ФБ №72 «Счётчик-Массомер»
Требования к типам входов и выходов и их количеству:
- Вход «Enable» - строго bit. Разрешает счёт в ФБ. Появление «0» на этом входе сбрасывает накопленные счётчики ФБ.
- Вход «Hold» - строго bit. Лог. «1» на этом входе приостанавливает счёт не обнуляя накопленные счётчики ФБ.
- Вход «Reset» - строго bit. Лог. «1» на этом входе обнуляет накопленные счётчики ФБ.
- Вход «Секунд с начала замера» целого типа – Uint32.
- Входы «Есть массомер жидкости», «Есть массомер газа», «Есть влагомер жидкости» - битовые.
- Входы «Счётчик суммарной массы жидкости», «Плотность жидкости», «Массовый расход жидкости», «Температура жидкости» имеют тип Float32 и заполняются данными, полученными с массомера жидкости.
- Входы «Счётчик суммарной массы газа», «Плотность газа», «Массовый расход газа», «Температура газа» имеют тип Float32 и заполняются данными, полученными с массомера газа.
- Вход «Текущая влажность жидкости» имеет тип Float32 и заполняется данными, полученными с влагомера жидкости.
- Вход «Давление жидкости в коллекторе» имеет тип Uint16.
- Уставки «плотности жидкости по скважине», «плотности нефти по скважине», «плотности воды по скважине», «газового фактора по скважине» имеют тип Uint16.
- Поправочные коэффициенты по жидкости и газу имеют тип Uint8.
- Вход «Уставка массовой доли воды» имеет тип Float32.
- Все выходы кроме выхода «Режим работы» имеют тип Float32.
- Выход «Режим работы» имеет тип Uint8 и содержит набор флагов работы ФБ (пока не используется).
ФБ №64 «Вычислитель Knap»
ФБ Вычисляет Knap, по входному массиву динамограммы.
Примечания:
- ФБ выполняется не за один цикл конфигурации а за 23 цикла (в связи с длительностью обработки данных). Для определения стадии выполнения, используется выходной параметр Stage[0;22].
- ФБ вычисляет Knap по входному массиву динамограммы, после прохождения полной процедуры вычисления, выставляет признак KnapOK и само значение Knap.
- Команда начала работы Start, разрешает подсчет Knap, проверка проходит только на первой стадии работы, поэтому данный вход может быть импульсным и держать его до подтверждения расчета Knap необязательно.
- Признак рассчитанного Knap, устанавливается только на последней стадии расчета, и сбросится на следующем цикле.
- ФБ который считывает значение Knap, должно дождаться установки флага KnapOK и только после этого прочитать сам коэффициент.
ВНИМАНИЕ!!! В конфигурации можно использовать только один ФБ расчета КНАП в связи с использованием переменных статичных для функции обработки.
ФБ № 68 «Автомат управления приводом по КНАП» (автоматическое повторное включение)
ФБ реализует алгоритм управления частотой привода по коэффициенту наполнения (КНАП), включения (отключения) пускателя, контроля срабатывания срыва подачи и обработки аварии (с возможностью повторного включения).
Основные задачи ФБ:
- регулировка выходной частоты (Out->Rate) и управление состоянием пускателя(Out->Control);
- определение СП (срыв подачи) и отсечка таймера простоя;
- реагирование на Защиты (In->Protection);
Описание работы по режимам:
- В режиме «ВКЛ всегда» (значение Mode 4-5) Control установится в «1», частота Rate будет равна частоте «Начальная частота привода Start Rate» в режиме 4 или равна 500 в режиме 5.
- В случае если произошел срыв подачи (средний КНАП меньше порогового KnapPorog) произойдет останов на время простоя, если на вход Защиты подана «1» произойдет останов на время АПВ (APV_Interval).
- Параметры SPFreqMode и StopMode не действительны для данного режима, в случае останова по срыву подачи частота будет 0 и пускатель выключится.
- Режим «Периодическая работа» (значение Mode 2-3), обусловлен параметрами PeriodicModeTime(время включенного состояния) и SPTime (время простоя). После перехо-да на этот режим произойдет включения СКВ на время PeriodicModeTime, таймер PeriodicModeTimer показывает сколько тактов осталось до простоя на время накопления SPTime, таймер SPTimer показывает сколько тактов осталось до включения СКВ.
- Параметры SPFreqMode и StopMode, не действительны для данного режима, в случае останова по срыву подачи частота будет 0 и пускатель выключится.
- Режим «Динамическое поддержание», поддерживает выходную частоту в зависимости от среднего значения КНАП на входе Knap, параметры KnapUst и KnapGist образует интервал [KnapUst - KnapGist ; KnapUst + KnapGist] стабильной работы, в случае если КНАП превысит KnapUst + KnapGist частота Rate увеличится на StepUp(шаг увеличения частоты), если будет меньше KnapUst – KnapGist уменьшится на StepDown(шаг уменьшения частоты), при этом частота Rate не может выйти за интервал [RateMin;RateMax].
ВНИМАНИЕ!!! Во всех режимах останов по срыву подачи или защите отключен на время пуска (Pusk_Time).
Краткий алгоритм работы ФБ
ФБ №79 «Насос с АПВ»
На вход подаются:
- Dist mode – Способ управления (1 – дистанционный, 0 – местный)
- Cmd ON – Команда включить (импульсный вход желательно 1 такт исполнения конфигурации)
- Cmd OFF – Команда отключить (импульсный вход желательно 1 такт исполнения конфигурации)
- Actuator – Состояние пускателя (1 – замкнут, 0 – разомкнут)
- Alarm – Авария
- Block – Блокировка
- ResetAlarm – Сброс аварии (импульсный вход желательно 1 такт исполнения конфигурации)
- ImpulsONOFFTime – Время, в течение которого действует выход на пускатель НА, в сек
- ActuatorTime – Время ожидания желаемого состояние пускателя, в сек
- ActuatorRestart – Количество попыток ожидания желаемого состояния пускателя
- TimeNonStop – Время пуска НА, в сек
- APV TryNum – Количество попыток АПВ
- APV Interval – Время между попытками АПВ
Выходы:
- Control ON – Выход на включение пускателя НА
- Control OFF – Выход на выключение пускателя НА
- stUprav – Признак, что НА воспринимает управляющие команды
- CntActTime – Счетчик времени ожидания состояния пускателя, в сек
- CntActRestart – Счетчик количества попыток ожидания состояния пускателя
- CntNonStop – Счетчик времени пуска НА, в сек
- APV TrvCnt – Счетчик попыток АПВ
- APV Timer – Счетчик времени между попытками АПВ, в сек
- CntImpONOFF – Счетчик времени управляющего воздействия на пускатель, в сек
- State – Текущее состояние алгоритма работы НАСОС с АПВ типа uint32
| Номер бита | Значение флага |
| 0 | Dist. «1» если дистанционный режим |
| 1 | Actuator. «1» если пускатель замкнут |
| 2 | Block. «1» признак наличия блокировки |
| 3 | Alarm. «1» признак наличия аварии |
| 4 | APVon. «1» если НА настроен на АПВ |
| 5 | flAlarm. «1» флаг наличия аварии, сбрасывается по входу Сброс аварии |
| 6 | flBlock. «1» флаг наличия блокировки |
| 7 | WaitActuator. «1» если режим обработки ОЖИДАНИЕ ПУСКАТЕЛЯ |
| 8 | ExpectActuator. При режиме ОЖИДАНИЕ ПУСКАТЕЛЯ «1» если замкнут, «0» - разомкнут |
| 9 | WaitBlock. «1» если ожидание игнорирования блокировки на время пуска |
| 10 | WaitAPV. «1» если ожидание интервала между попытками АПВ |
| 11 | APV_TryCnt_Null. «1» если кончились попытки АПВ |
| 12 | Need_ON. «1» если необходимо включить |
| 13 | Need_OFF. «1» если необходимо отключить |
| 14 | ActuatorFail_OFF. «1» если не дождались пускателя при выключении |
| 15 | ActuatorFail_ON. «1» если не дождались пускателя при включении |
| 16 | ReinitAPV. «1» если ожидание инициализации АПВ после очередного автоматического запуска после аварии |
| 17 | WaitImpONOFF. «1» если ожидание импульса включения или отключения |
| 18 | WaitImpSTOP. «1» флаг принудительного импульса отключения после неудачного включения |
ФБ №80 «Задвижка»
ФБ управляет открытием/закрытием задвижки. На вход подаются:
- Dist - Способ управления (1 – Дистанционный, 0 – Местный)
- CmdOpen, CmdClose, CmdStop - Команда открыть, закрыть или остановиться в текущем положении
- Opened, Closed - Сигнал, открыта или закрыта задвижка в данный момент
- Alarmed - Авария муфты
- Uon - Наличие напряжения
- VPN - Время полного хода
Выходы:
- OutOpen, OutClosed, OutStop – выход управления открыть/закрыть/стоп
- Position – предполагаемая позиция
- Stop – состояние
- Timer – обратный таймер времени хода задвижки
Блок-схема работы ФБ «Задвижка
ФБ №82 «ПИД регулятор с задержкой выходного сигнала»
ФБ реализует аналоговое ПИД регулирование. ПИД регулятор формирует импульсы на открытие - закрытие, в зависимости от необходимого положения регулятора, его текущего положения, коэффициентов(kP,kL,kD) и режима работы.
Алгоритм работы ПИД регулятора:
Список входов/выходов
| Входы | Выход |
| Команда выбора управления (Auto - bit) | Индикация ошибки входных параметров (Error - bit) |
| Команда Реверс (ReverseU - bit) | Необходимое положение регулятора в % (Output - unit8) |
| Регилируемый параметр (CurParam - float) | Импульс на открытие (OpenStep - bit) |
| Уставка регулирования (SetParam - float) | Импульс на закрытие (CloseStep - bit) |
| Текущее положение регулятора (SetPosition - unit8) | Значение уровня воздействия (Test - float) |
| Уставка положения регулятора (SetPosition - unit8) | Переменнные |
| Коэффициент пропорциональности (kP - float) | Накопленная ошибка интегратора (summError - float) |
| Коэффициент времени интегрирования (kl - float) | Предыдущее ошибка интегратора регулирования (prevEi - float) |
| Коэффициент времени интегрирования (kD - float) | Текущее состояние воздействия на регулятор (prevYi - float) |
| Зона нечувствительности (errTube - float) | Счетчик времени импульса управляющего воздействия (TimerStep - unit16) |
| Настройка (Sets - unit8) | Номер кванта времени измерения (CntReguIKvant - unit8) |
| Максимальное значение регулируемого параметра (MaxRegParam - float) |
| Минимальное значение регулируемого параметра (MinRegParam - float) |
| Время перехода регулирующего органа в состояние от 0 до 100 в сек (RegulTime - unit16) |
| Параметры Sets |
| 0 - при значении входного параметра за пределами диапозона измерения - ничего не делать |
| 1 - при значении входного параметра за пределами диапозона измерения - закрыть |
| 2 - при значении входного параметра за пределами диапозона измерения - открыть |
ФБ №86 «Резервуар»
ФБ реализует управление 4-мя насосами с выбором основных.
Алгоритм работы ФБ «Резервуар»:
ФБ №87 «Счётчик массомер»
Имеет такие же входы и выходы как ФБ №72.
ФБ №90 «Насос с АПВ» (автоматическое повторное включение)
ФБ реализует управление (включение/отключение) двигателем с контролем срабатывания защит и блокировок и автоматическим повторным включением после аварии.
- Вход ФБ «Автомат»(Dist) активизирует логику работы ФБ.
- На входы «Команда ВКЛ» и «Команда ОТКЛ» подаётся «1», после чего инициируется процедура включения/отключения насоса, «Команда ОТКЛ» имеет большую прерогативу чем «Команда ВКЛ».
- Вход «Защита» инициирует процедуру отключения насоса если уровень «1» держится на нём в течении времени задержки защит(CntNonStop) и «пускатель включен или идет процесс включения», при этом устанавливается флаг состояния flAlarm (авария) и управляющие воздействия через входы «Команда ВКЛ» и «Команда ОТКЛ» не действуют пока не пройдет импульс на вход Сброс (ResetAlarm).
- После выключения входного сигнала аварии возможен АПВ только если прошло время для разрешения АПВ (APV_Timer) и установлена команда на включение «Команда ВКЛ».
- Вход «Блокировки» инициирует процедуру отключения насоса немедленно независимо от текущего состояния пускателя. Устанавливаются флаги состояния «Блокировка», управляющие воздействия через входы «Команда ВКЛ» и «Команда ОТКЛ» не действуют, а также запрещается АПВ.
- Сброс флагов блокировки происходит с приходом импульса на вход Сброс (ResetAlarm)
Процедура включения насоса.
При получении импульса на вход «Команда ВКЛ», при условии что нет аварий, на выход «Управление ВКЛ» подаётся «1» на время «Время пуска»(CntImpONOFF), после чего на выходе «Управление ВКЛ» возвращает-ся «0». Если в течение «Времени пуска» состояние пускателя не изменилось на «1», т.е. пускатель не включился, процедура повторяется до тех пор, пока есть попытки перезапуска (устанавливается входом «Попы-ток перезапуска»). Если за указанное количество перезапусков не удалось включить пускатель, на выход «Управление ОТКЛ» подаётся положительный импульс длительностью «Время пуска», устанавливается флаг состояния ActuatorFail_ON.
Процедура отключения насоса.
При получении импульса на вход «Команда ОТКЛ» либо при установленном флаге «Авария», на выход «Управление ОТКЛ» подаётся «1» на время «Время пуска», после чего на выходе «Управление ОТКЛ» воз-вращается «0». Если в течение «Времени пуска» состояние пускателя не изменилось на «0», т.е. пускатель не отключился, процедура повторяется до тех пор пока есть попытки останова (также устанавливается входом «Попыток перезапуска»), если не дождались необходимого значения пускателя устанавливается флаг ActuatorFail_OFF. Вход Сброс (ResetAlarm) так же сбрасывает флаги ActuatorFail_OFF, ActuatorFail_ON и флаг конца попыток АПВ(APV_TryCnt_Null).Флаг состояния «Авария» также может быть сброшен с помощью механизма автоматического повторного пуска (АПВ). Если установлен флаг «Авария», а флаг «Блокировка» снят и количество попыток перезапуска по АПВ (задаётся входом «АПВ – попыток при аварии») не = 0, начинается отсчёт интервала перезапуска АПВ, по истечении которого флаг «Авария» сбрасывается, а количество оставшихся перезапусков АПВ декрементируется.
ФБ №91 «Счетчик БГ»
ФБ формирует показания приращения счетчика (вход CounterDI), за определенный интервал времени (в минутах) или за два часа, с возможностью выравнивания в 00:00 часов. На выходах можно наблюдать значение увеличения счетчика за минуту, за сутки, разницу изменения за последнюю и предыдущую минуту. Также формируется флаг аварийного расхода(flAvrRash), если за последнюю минуту расход увеличился, на значение, большее чем установлено в AvarRashod.
Для блоков архивирования, ФБ №91 выставляет бит ArchivEna и устанавливает необходимые значения, если закончился определенный интервал измерений (если установлен признак Ena2Hours то каждые 2 часа) или начались новые сутки.
Блок-схема работы ФБ «Счетчик БГ»:
ФБ №99 «ПИД регулятор»
ФБ реализует аналоговое ПИД регулирование. ПИД регулятор формирует импульсы на открытие - закрытие, в зависимости от необходимого положения регулятора, его текущего положения, коэффициентов(kP,kL,kD) и режима работы.
Принцип действия аналогичен ФБ №82, за исключением отсутствия времени задержки DelavTime.
ФБ №111 «Отправка и обработка данных нестандартных устройств»
На вход подаются:
- Enabled – Запуск
- Reset – Перезагрузка логики ФБ
- Chanel – Канал, тип uint8
- Type – Тип устройства, тип uint8
- Options – Опции конкретного устройства
- Stady – Стадия
- Nbyte – Количество байт на запись
- Byte – Байты на запись в канал
Типы устройств:
| Тип | Описание |
| 0 | Прямая отправка |
| 1 | Sonomer 500 Теплосчетчик |
| 2 | Меркурий 230 Электросчетчик |
| 3 | Пульсар водосчетчик RS485 |
| 4 | Меркурий 203.2Т Электросчетчик |
| 5 | Контроллер на матлабе |
Опции:
| Номер опции | Описание |
| 0 | По умолчанию отправка пакета, ФБ выполнена если не пришел ответ или пришел неверный ответ |
| 1 | Отправка пакета 1 раз и ФБ выполнена, без ожидания какого-либо ответа |
| 2 | Отправка пакета каждый раз, пока не получим нужный ответ |
Выходы:
- Error – Ошибка
- Ok – Хорошо
- Run – «1» после исполнения логики ФБ
- Data – Данные