IEC 60870 Client

Поддерживаются как производитель, так и потребитель

Компонент клиента IEC 60870-5-104 обеспечивает доступ к серверам IEC 60870 с использованием реализации Eclipse NeoSCADA .

Пользователям Maven необходимо добавить следующую зависимость для pom.xmlэтого компонента:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-iec60870</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

URI format

Синтаксис URI endpoint следующий:

<span style="color: rgb(0,0,0);">iec60870-client:host:port/00-01-02-03-04</span>

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

Экземпляр соединения идентифицируется частью URI, содержащей хост и порт, а также всеми параметрами из группы «id». Если встречается новый идентификатор соединения, параметры соединения будут оценены, и экземпляр соединения будет создан с этими параметрами.

Note

Если два URI указывают одно и то же соединение (хост, порт, …​), но с разными параметрами соединения, то не определено, какие из этих параметров будут использованы. Окончательные параметры соединения будут оценены в следующем порядке:

  • Если присутствует, будет использован параметр connectionOptions

  • В противном случае, экземпляр defaultConnectionOptions копируется и настраивается в следующих шагах

  1. Применяются protocolOptions, если они присутствуют

  2. Применяются dataModuleOptions, если они присутствуют

  3. Применяются все явные параметры соединения (например, timeZone)

Configuring Options

Компоненты настраиваются на двух отдельных уровнях:

  • component level

  • edpoint level

Configuring Component Options

На уровне компонента задаются основные и общие настройки, которые впоследствии наследуются endpoints. Это самый высокий уровень конфигурации.

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

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

Компоненты можно настроить с использованием:

  • Component DSL.

  • Конфигурационного файла (application.properties, *.yaml files, etc).

  • Напрямую в Java code.

Configuring Endpoint Options

Обычно больше времени уходит на настройку endpoints, так как они обладают множеством параметров. Эти параметры позволяют настроить поведение endpoint в соответствии с вашими потребностями. Кроме того, параметры делятся на категории в зависимости от того, используется ли endpoint как потребитель (from), как производитель (to) или в обеих ролях.

Настройка endpoints чаще всего выполняется непосредственно в URI endpoint в виде параметров пути и запроса. Также вы можете использовать Endpoint DSL и DataFormat DSL как типобезопасный способ настройки endpoints и форматов данных в Java.

Хорошей практикой при настройке параметров является использование Property Placeholders.

Property placeholders предоставляют несколько преимуществ:

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

  • Позволяют вынести конфигурацию за пределы кода.

  • Делают код более гибким и удобным для повторного использования.

Component properties

Acknowledge Window

  • Параметр W -- Окно подтверждения (Acknowledgment window).

  • По умолчанию: 10

  • Тип: short

Adsu Address Type

  • Размер общего адреса ASDU. Может быть либо SIZE_1, либо SIZE_2.

    Возможные значения:

    • SIZE_1

    • SIZE_2

  • По умолчанию:

  • Тип: ASDUAddressType

Cause Of Transmission Type

  • Тип причины передачи. Может быть либо SIZE_1, либо SIZE_2.

    Возможные значения:

    • SIZE_1

    • SIZE_2

  • По умолчанию:

  • Тип: CauseOfTransmissionType

Cause Source Address

  • Тип: Определяет, следует ли включать адрес источника.

  • По умолчанию:

  • Тип: byte

Connection Id

  • Идентификатор, группирующий экземпляры соединений.

  • По умолчанию:

  • Тип: String

Connection Timeout

  • Тип: Таймаут в миллисекундах для ожидания установления клиентом соединения.

  • По умолчанию: 10000

  • Тип: int

Data Module Options

  • Параметры модуля данных.

  • По умолчанию:

  • Тип: DataModuleOptions

Ignore Background Scan

  • Определяет, следует ли игнорировать фоновые сканирующие передачи.

  • По умолчанию: true

  • Тип: boolean

Ignore Daylight Saving Time

  • Определяет, следует ли игнорировать или учитывать DST.

  • По умолчанию: false

  • Тип: boolean

Information Object Address Type

  • Размер информационного адреса. Может быть SIZE_1, SIZE_2 или SIZE_3.

    Возможные значения:

    • SIZE_1

    • SIZE_2

    • SIZE_3

  • По умолчанию:

  • Тип: InformationObjectAddressType

Max Unacknowledged

  • Параметр K -- Максимальное количество неподтверждённых сообщений.

  • По умолчанию: 15

  • Тип: short

Protocol Options

  • Параметры протокола.

  • По умолчанию:

  • Тип: ProtocolOptions

Time Zone

  • Часовой пояс для использования. Может быть любая строка часового пояса Java.

  • По умолчанию: UTC

  • Тип: TimeZone

Timeout1

  • Таймаут T1 в миллисекундах.

  • По умолчанию: 15000

  • Тип: int

Timeout2

  • Таймаут T2 в миллисекундах

  • По умолчанию: 10000

  • Тип: int

Timeout3

  • Таймаут T3 в миллисекундах.

  • По умолчанию: 20000

  • Тип: int

Uri Path

  • Обязательное поле - адрес информационного объекта.

  • По умолчанию:

  • Тип: ObjectAddress

Component advanced properties

Bridge Error Handler

  • Предоставляет возможность связать потребителя с маршрутизатором Error Handler Camel. Это позволяет обрабатывать исключения (если возможно), возникающие при получении входящих сообщений потребителем Camel, в виде сообщений, передаваемых в маршрутизатор Error Handler.

    Важно: Это возможно только в том случае, если сторонний компонент позволяет Camel получать уведомления о возникших исключениях. Некоторые компоненты обрабатывают исключения только внутренне, из-за чего использование bridgeErrorHandler становится невозможным. В некоторых случаях мы можем доработать компонент Camel, чтобы интегрировать его со сторонним компонентом и сделать такую возможность доступной в будущих выпусках. По умолчанию потребитель использует org.apache.camel.spi.ExceptionHandler для обработки исключений, которые логируются с уровнем WARN или ERROR и игнорируются.

  • По умолчанию: false

  • Тип: boolean

Exception Handler

  • Позволяет потребителю использовать собственный ExceptionHandler.

    Обратите внимание, что если включена опция bridgeErrorHandler, то эта настройка не используется. По умолчанию потребитель обрабатывает исключения, которые логируются с уровнем WARN или ERROR и игнорируются.

  • По умолчанию:

  • Тип: ExceptionHandler

Exchange Pattern

  • Определяет шаблон взаимодействия, который применяется, когда потребитель создает новый обмен (exchange).

    Возможные значения:

    • InOnly

    • InOut

  • По умолчанию:

  • Тип: ExchangePattern