# Оперативные блокировки на базе КП «Исеть»

Для реализации оперативных блокировок в КП «Исеть» на шину CAN устанавливаются модернизированные блоки ТУ430б со специальной прошивкой.

Данные функциональные блоки прослушивают шину CAN и отфильтровывают информацию по состоянию телесигналов на всех блоках ТС430, установленных в КП. По записанной в память блока логике (логика записывается специально разработанным языком, позволяющим наглядно описывать любые блок-схемы) производится анализ текущего состояния телесигналов и производится управление состоянием выходных реле. В случае разрешения на управление контакт реле замыкается, на электромагнитный замок аппарата поступает напряжение и замок отпирается.

Общее количество блоков ТУ430 (реализующих функции телеуправления и блокировок) в одном КП не может превышать 8, при этом количество выходных реле одного блока – 32. Характеристики выходных реле идентичны реле ТУ. Максимальное количество входных ТС – 256.
В случае нехватки входных или выходных сигналов оперативные блокировки размещаются в нескольких независимых КП.

Логика блокировок записывается специально разработанным языком, позволяющим наглядно описывать логические блок-схемы.
Для сложных блок-схем промежуточные результаты записываются во внутренние логические переменные (максимальное количество – 16).
Одна строка языка описывает один логический элемент. Логические элементы могут быть двух типов: И (AND) и ИЛИ (OR).

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

# Быстрый переход

- Наладочное приложение (Blockconf.exe):

- Задание сигналов состояния аппаратов,
- Написание текста логики аппаратов,
- Настройки приложения,
- Связь с сервером телемеханики,
- Управление,
- Флаги инверсии телесигналов,
- Задание двухпозиционных сигналов,
- Формат сохраняемого файла конфигурации,
- Шаблоны аппаратов.

- Диспетчерское приложение (BlockDisp.exe):

- Просмотр сигнала заданного аппарата,
- Просмотр логических сигналов всех аппаратов,
- Настройки приложения,
- Использование аргументов при запуске приложения.

- Примеры блок-схем с текстами логик.

# Наладочное приложение (blockconf.exe)

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

Программа предназначена в первую очередь для наладчиков АСУ объекта, а также для специалистов релейной защиты, которые проверяют работу схем оперативных переключений.

Для работы с программой требуется IBM PC-совместимый компьютер со свободной оперативной памятью не менее 16 мегабайт и с установленной операционной системой семейства Windows NT.

Для связи программы с аппаратурой КП "Исеть" или с сервером телемеханики компьютер должен быть подключен к сети Ethernet или к тем же сегментам локальной сети, где расположены объекты для связи, или к любой сети, имеющей выход в Интернет. Также для корректной связи на компьютере не должно быть запущено задач, использующих UDP-порты 971 и 972. Для автономной работы приложения подключение к сети не требуется.

Рисунок 1 - структура наладочного приложения

## Структура приложения

### Выбор выходного реле

В приложении реализована двухуровневая система выбора реле: сначала выбирается подгруппа реле (номера реле от 1 до 16 и от 17 до 32 соответственно), затем - номер конкретной блокировки.

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

### Информационный заголовок

Здесь отображается название блокировки, текущее дискретное состояние (включен/отключен) описываемого коммутационного аппарата (КА), а также допустимость его управления. При этом автоматически задаётся операция коммутации: включение или отключение аппарата, в зависимости от текущего состояния.

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

Рисунок 2 - анализ запрета коммутации

Кроме этого, если какие-то принятые с сервера данные ТС не являются достоверными: как аппаратно (т.е. при какой-то неисправности), так и в случае, если информация о недостоверности была выставлена вручную диспетчером, то соответствующее сообщение отображается по центру информационного заголовка. При наведении на текст сообщения появляется всплывающая подсказка, которая поможет определить недостоверные сигналы. Если недостоверность является аппаратной, то управление КА будет запрещено. Пример – рисунок 3.

Рисунок 3 - аппаратная недостоверность

### Описательная часть

В описательной части программы присутствуют три изменяемых поля: наименование аппарата, ТС состояния и текст логики.

- Число символов в наименовании не должно превышать 40. Наименования сохраняются в файле конфигурации и будут видны диспетчеру при просмотре диспетчерского приложения.

- В строке ТС состояния указывается полная версия описания телесигнала. Всегда указывается сигнал, при котором значению 1 соответствует включенный аппарат. Для двухпозиционного сигнала по умолчанию значимым является первый бит, т.е. последовательность 1-0 будет означать включенный аппарат.

  При необходимости, если состояние описывается сигналом типа «отключен» стоит использовать инверсию ТС: установить флаг инверсии в списке ТС.

  Примеры правильного использования ТС состояния:

  Состояние определяется сигналом №175 – КА включен | S175
  Состояние определяется двухпозиционным сигналом: №3 – КА включен, №4 – КА отключен | S3
  Состояние определяется сигналом №210 – КА отключен | S210, флаг инверсии

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

- В большом поле вводятся тексты логик: логики включения (в случае, если коммутационный аппарат отключен) и для логики отключения (КА включен).

  Текст логики состоит из ряда операторов, каждый из которых подчиняется шаблону:
  <выходная переменная>=<операция>(<входные переменные>)

  В качестве выходной переменной используется или выходной сигнал заданной блокировки (см. ниже), или внутренняя логическая переменная, которую затем можно использовать как входную в последующих операциях. Описание такой переменной начинается с символа M, например, M4, M15. Общее число внутренних переменных не должно превышать 16.

  Поддерживаемые операции: AND (логическое И) и OR (логическое ИЛИ). Есть возможность инвертировать результат операции с помощью знака ~ перед операцией (например, ~AND означает логическое НЕ И).

  Входные переменные указываются в круглых скобках после операции, число входных переменных не ограничено, перечисление идёт через запятую.
  - Телесигналы (включая двухпозиционные) начинаются с символа S, например, S171, S12. Ввиду особенности старых версий разработки, разрешается также использование символа D, который ранее применялся для обозначения двухпозиционных сигналов. Сейчас разницы между обозначениями S и D нет, а двухпозиционность сигнала задается флагом в списке ТС.
  - Внутренние переменные в качестве входных начинаются с символа M, например, M15. Обратите внимание, что не следует применять не объявленные ранее внутренние переменные, это может привести к ошибочной ситуации.

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

  Пример корректных операторов: M5=AND(S1,~D3,S170,S171), M6=~OR(M5,S2)

  Текст всех логик обязательно должен заканчиваться описанием выходного сигнала заданной блокировки: Vi, где i – номер блокировки. Например, для 18-й блокировки последняя строка логика должна начинаться так: V18=…
  Обратите внимание на то, что номер выходной переменной обязательно должен совпадать с номером блокировки. В противном случае возникает конфликтная ситуация.

  Пример корректного описания выходной переменной: V17=AND(M1,M6,~S21)

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

  В приложении приведены примеры описания блок-схем текстом логики.

## Настройки

Подсветка текста
  При включенной опции переменные в тексте логики выделяются цветом в соответствии со своим значением: зеленый цвет соответствует единице, красный – нулю.
Показывать данные ТС
  Внизу окна выводятся номера и значения задействованных в логике телесигналов. Кроме номера сигнала и его значения, есть возможность просмотреть его наименование, если оно было загружено с сервера. Двойной щелчок по номеру ТС откроет соответствующую всплывающую подсказку, как показано на рисунке 4.

Рисунок 4 - данные телесигналов

Разрешить изменение ТС
  При включенной опции можно изменять значения телесигналов прямо в окне приложения.
  Применяются два способа: 1) двойной щелчок по колонке значения сигнала в таблице ТС. Аналогично можно поменять значения сигнала состояния КА. 2) выбор колонки значения и ввод нового значения с клавиатуры (0 или 1).
  Если сигнал является двухпозиционным, то его парный ТС изменен при этом не будет, это необходимо сделать вручную (кроме случая, когда ТС загружаются с сервера, тогда меняются оба значения).
  Значения ТС, изменяемые в окне приложения, будут меняться только локально для данного файла конфигурации блока. Даже если установлена связь с сервером телемеханики, новые значения не будут записаны.
  При изменениии значения сигнала автоматически пересчитывается логика всех реле.
Показывать значения M
  По центру окна выводятся значения внутренних переменных, задействованных в текущей логике.
Сохранять во врем. файлы
  При включенной опции каждые 2 минуты вся текущая конфигурация блока будет записана во временный файл. Файлы сохраняются в папке Temp, до 15 различных файлов, которые затем перезаписываются. Таким образом, сохраняется до получаса работы с конфигурацией.
Сохранять ТС в файл конф.
  При сохранении конфигурации в заданный файл также будут записываться текущие значения телесигналов, для возможного последующего использования. Записанные ТС будут использоваться только в наладочном приложение; в диспетчерском их значения игнорируются.
  Обратите внимание, после отладки конфигурации перед окончательной записью в файл для использования в блоке ТУ рекомендуется отменить данную опцию для уменьшения размера файла.
Принимать ТС с КП
  При включенной опции приложение пытается установить и поддерживать связь с КП «Исеть», принимая при этом значения телесигналов. Время опроса – до двух секунд. При загрузке данных будут учитываться флаги инверсии в списке телесигналов.
Связь с сервером ТМ
  При включенной опции приложение пытается установить и поддерживать связь с сервером телемеханики ОИК Диспетчер.
  Имя сервера вводится пользователем вручную, в формате "Алиас\шлюз". Если сервер установлен на локальной машине, то вместо алиаса ставится точка, например: .\TMS .
  В случае успешного соединения будут открыты дополнительные опции: номер канала, номер контролируемого пункта, а также возможность получения значений и наименований телесигналов. Значения при включенной опции будут приниматься постоянно, срок опроса – две секунды. Наименования же будут загружены единовременно. При необходимости перезагрузить их, следует снять флажок с опции, а затем установить его заново.
  Ввиду особенностей хранения двухпозиционных сигналов на сервере, значимым является только первый бит. Поэтому при загрузке ТС с сервера загружаться будет только первый бит, а второй в программе выставляется автоматически противоположный первому. Обрыв и неисправность при этом обрабатываются через аппаратную недостоверность.

## Управление

Пересчитать логику
  Полностью пересчитывается логика всех блокировок.
Шаблоны
  Открывается окно шаблонов для быстрого добавления стандартной логики. Ниже приведено подробное описание использования шаблонов.
Список ТС
  Открывается окно с перечислением телесигналов, их наименований (если они были предварительно загружены с сервера), значений, а также флагов инверсии и двухпозиционности.
  Флаг инверсии работает следующим образом. По умолчанию считается, что принимаемое с КП значение 1 означает включенное состояние аппарата, 0 - отключенное (для двухпозиционного сигнала значащим является первый бит, и он подчиняется аналогичной логике: 1 - вкл, 0 - откл). Если по какой-то причине значению 1 соответствует отключенный аппарат, тогда нужно установить флаг инверсии. Этот флаг учитывается как в приложении при отображении информации о ТС в активном окне и при расчете логики, так и в блоке телеуправления ТУ430. Обратите внимание, что инверсия игнорируется при загрузке данных с сервера, т.к. сервер должен самостоятельно учитывать инвертированные значения. Таким образом флаг инверсии используется только при автономном задании ТС в приложении или при загрузке данных с КП (в том числе и для блока ТУ430).
  Флаг двухпозиционности служит для выделения двухпозиционных сигналов, ставить его нужно только для первого бита. Обратите внимание, что в случае необходимости инвертирования двухпозиционного сигнала, флаг инверсии также следует ставить только для первого бита, второй будет инвертирован при отображении автоматически.
  Флаги ставятся/снимаются с помощью двойного щелчка мыши по соответстующей ячейке.
  С помощью переключателя внизу окна можно выбрать отображение либо списка телесигналов текущей блокировки, либо всех ТС КП - при этом задействованные в данной блокировке сигналы выделяются полужирным шрифтом.

Рисунок 5 - список телесигналов

Просмотреть файл
  Открывается окно с текстом конфигурации для просмотра и возможного редактирования. После ручного редактирования, обязательно стоит проверить изменённые блокировки в самом приложении, во избежание ошибочных ситуаций.
Загрузить из файла
  Загрузка файла конфигурации. Допустимые расширения: .blk и .tmp (для временных файлов).
  Обратите внимание, что загружается по умолчанию только тексты логики блокировок, данные ТС остаются без изменений (кроме случая, когда в новом файле сохранены свои телесигналы). Кроме этого, будут обнулены наименования ТС, которые при необходимости следует загрузить с сервера заново.
Сохранить в файл
  Допустимое расширение файла - .blk.
  Обратите внимание, что название окончательного файла конфигурации для записи в блок и передачи диспетчеру должно соответствовать следующему стандарту:
  cfg_<канал>_<КП>_<номер блока ТУ>.blk
  Например: cfg_0_2_3.blk – конфигурация для блока ТУ номер 3, который находится в контролируемом пункте номер 2. Канал при этом 0.
Обнулить блок
  Полностью обнуляются тексты логик всех блокировок текущего файла конфигурации. Значения ТС при этом не обнуляются.

## Шаблоны

Рисунок 6 - шаблоны

Порядок использования:

1. Вводится номер блокировки (по умолчанию - номер активной блокировки);
2. Вводится наименование;
3. Выбирается тип шаблонной блокировки;
4. Вводятся переменные ТС, соответствующие указанным наименованиям. Важно корректно указывать переменные состояния (аналогично уже приведенному выше описанию), т.е. если требуется ввести сигнал типа «включен», то в поле ввода указывается такая переменная сигнала, чтобы её значение «1» соответствовало включенному состоянию аппарата. При необходимости используются инверсия.
5. "Загрузить шаблон"
6. Вручную проверяются тексты логик включения и отключения, ТС состояния аппарата. При необходимости вносятся изменения.

Обратите внимание, что присутствует возможность менять шаблоны и добавлять свои. Для этого необходимо вручную открыть файл templates.txt, расположенный в корневой папке программы, и изменить его. Правила описания шаблонов приведены в начале этого файла.

# Диспетчерское приложение (blockdisp.exe)

Предназначено для просмотра логических выходных сигналов блоков: как объекта в целом, так и отдельных коммутационных аппаратов.

Для работы с программой требуется IBM PC-совместимый компьютер со свободной оперативной памятью не менее 16 мегабайт и с установленной операционной системой семейства Windows NT.

Для корректной работы программы требуется установка связи с сервером телемеханики, компьютер должен быть подключен к сети Ethernet либо к тем же сегментам локальной сети, где расположен сервер, либо к любой сети, имеющей выход в Интернет. Также для корректной связи на компьютере не должно быть запущено задач, использующих UDP-порты 971 и 972.

Диспетчерское приложение может быть запущено как на рабочей станции диспетчера, так и на отдельном компьютере. Наличие программы и файлов логики позволяет анализировать состояния блокировок с любого удаленного АРМ, которое имеет доступ к данным телеметрии.

Есть возможность работы в двух различных режимах, которые описаны далее.

## Просмотр логических сигналов заданного аппарата

На входе приложения задаётся параметр сигнала состояния в следующем формате:
#TS<канал>/<КП>/<ТС>
где ТС – номер телесигнала, отвечающий за состояние требуемого КА.
Например, для объекта 11, канала 2, КП 1: #TS2/1/11

В случае если отсутствует связь с сервером, или аппарат с заданным ТС не может быть найден, будут отображены логические сигналы всех блокировок. Обратите внимание, что поиск аппарата будет выполняться среди корректных файлов конфигурации (с наименованием и расширением, соответствующими формату cfg_<канал>_<кп>_<номер блока ТУ>.blk , который был подробно описан выше в описании наладочного приложения) либо в рабочей папке приложения, либо в каталоге, заданном аргументом при запуске.

Рисунок 7 - логические сигналы аппарата

## Просмотр логических сигналов всех аппаратов

При запуске загружаются найденные файлы конфигурации всех блоков либо в корневой папке приложения, либо в каталоге, заданном аргументом при запуске. В окне отображаются логические сигналы одного блока ТУ, для просмотра других блоков используются навигационные стрелки, расположенные вверху и внизу экрана.

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

Рисунок 8 - логические сигналы аппаратов

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

## Настройки приложения

Настройки хранятся в виде текстового файла settings.ini, редактирование осуществляется вручную. Перечень опций:

Connect
  Соединяться ли при запуске с сервером телемеханики. Единице соответствует соединение, нулю - запрет на соединение. Запрет соединения следует использовать только при каких-то проверочных работах, т.к. без приема реальных телесигналов проверка коммутаций бесполезна. Все непринятые телесигналы по умолчанию выставляются равными нулю.
Server_name
  Имя сервера для соединения, в формате Алиас\Шлюз. Если сервер установлен локально, то вместо алиаса используется символ точки, например для соединения со шлюзом TMS: .\TMS .
User
  Имя пользователя для отображения в лог-файлах сервера.

## Использование аргументов при запуске приложения

При запуске разрешается использовать два опциональных аргумента:

- Название каталога, в котором хранятся требуемые файлы конфигурации. Обратите внимание, что указывается относительный путь к каталогу, от рабочей папки приложения.
- ТС состояние требуемого КА, в формате #TS<канал>/<КП>/<ТС> , описанном выше.

Если требуется указать одновременно и каталог с конфигурациями, и ТС какого-то аппарата, то каталог обязательно указывается первым аргументом.

Примеры использования аргументов:

Текст запуска приложения | Результат
--- | ---
blockdisp.exe | Отображение блокировок всех файлов конфигурации в рабочей папке приложения
blockdisp.exe Победа | Отображение блокировок всех файлов конфигурации в каталоге «Победа», расположенном в рабочей папке
blockdisp.exe ../../1 | Отображение блокировок всех файлов конфигурации в каталоге «1», расположенном на два уровня ниже рабочей папки
blockdisp.exe #TS0/1/49 | Отображение логических сигналов аппарата, описываемого ТС 49, канала 0, КП 1. Поиск идет в файлах конфигурации в рабочей папке
blockdisp.exe Победа #TS0/1/49 | Отображение логических сигналов аппарата, описываемого ТС 49, канала 0, КП 1. Поиск идет в файлах конфигурации в каталоге «Победа», расположенном в рабочей папке

# Приложение А. Примеры описания блок-схем

Обратите внимание, в примерах для упрощения двухпозиционные телесигналы обозначаются символом D. В реальной задаче это необязательно, но нужно указывать флаг двухпозиционности в списке ТС.

## Пример №1

Рисунок А.1 – совмещенная логика управления КА

Переменная состояния | Логика включения | Логика отключения
--- | --- | ---
D50 | M2=AND(S173,S204) M3=OR(~D13,M2) M4=AND(~D7,M3) V13=AND(M4,~D50,D31) | M2=AND(S173,S204) V13=AND(~S29,D50,M2)

## Пример №2

Рисунок А.2 – совмещенная логика управления КА

Переменная состояния | Логика включения | Логика отключения
--- | --- | ---
~S7 | M1=AND(S1) M2=OR(S2,D3) V1=AND(M1,M2,S7) | M1=AND(S1) M2=~AND(S5,S6) V1=AND(M1,M2,~S7)

## Пример №3

Рисунок А.3 – Логика включения КА Линейный Разъединитель

Рисунок А.4 – Логика отключения КА Линейный Разъединитель

Переменная состояния | Логика включения | Логика отключения
--- | --- | ---
D11 | M1=AND(S1,S2) V31=AND(M1,~D3,~D5,~D7,~D9,~D11) | M1=AND(S1,S2) V31=AND(M1,~D9,D11)

## Пример №4

Рисунок А.5 – Логика включения КА Заземляющий Нож со стороны Воздушной Линии на Линейном Разъединителе

Рисунок А.6 – Логика отключения КА Заземляющий Нож со стороны Воздушной Линии на Линейном Разъединителе

Переменная состояния | Логика включения | Логика отключения
--- | --- | ---
D61 | M1=AND(S117,S118) V32=AND(M1,~D54,~D61) | M1=AND(S117,S118) V32=AND(M1,D61)

# Быстрый переход

- Наладочное приложение (BlockConf.exe)

- Задание сигналов состояния аппаратов
- Написание текста логики аппаратов
- Настройки приложения
- Связь с сервером телемеханики
- Управление
- Флаги инверсии телесигналов
- Задание двухпозиционных сигналов
- Формат сохраняемого файла конфигурации
- Шаблоны аппаратов

- Диспетчерское приложение (BlockDisp.exe)

- Просмотр сигнала заданного аппарата
- Просмотр логических сигналов всех аппаратов
- Настройки приложения
- Использование аргументов при запуске приложения

- Примеры блок-схем с текстами логик