OpenSCADA

Модули/Sockets

This page is a translated version of the page Modules/Sockets and the translation is 89% complete.

English • ‎mRussian • ‎Українська
Модуль Имя Версия Лицензия Источник Языки Платформы Тип Автор Описание
Sockets Сокеты 4.5 GPL2 tr_Sockets.so en,uk,ru,de x86,x86_64,ARM Транспорт Роман Савоченко
  Максим Кочетков (2014)
Предоставляет транспорт основанный на сокетах. Поддерживаются сетевые и UNIX сокеты. Сетевой сокет поддерживает TCP, UDP и RAWCAN протоколы.

Модуль предоставляет в программу поддержку транспортов, основанных на сокетах. Поддерживаются входные и выходные транспорты, основанные на сетевых сокетах TCP, UDP, UNIX и RAWCAN.

Добавить новые входные и выходные сокеты можно посредством конфигурации транспортной подсистемы в любом конфигураторе OpenSCADA.

Contents

1 Входные транспорты

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

Каждый входной транспорт связывается с одним из доступных транспортных протоколов, которому передаются входные сообщения. В связке с транспортным протоколом поддерживается механизм объединения кусков разрозненных при передаче запросов.

Диалог конфигурации входного сокета изображён на рисунке 1.

Рис.1. Диалог конфигурации входного сокета.

This dialog allows you to set:

At.png Empty value of the protocols selection switches the transport mode to creating the associated output transports for each connection ID read from to that input.
At.png Disabling this feature is not recommended because the TCP/IP network property does not guarantee the server notification about the disconnection, say in the event of a power failure on the client. As a result, the opened client connections can remain forever, and when the limit is reached the server will stop accepting new ones!

Особенности формирования адреса входных сокетов приведены в таблице ниже:

Тип сокета Адрес
TCP

[TCP:]{addr}:{port}:{mode}[:{IDmess}]
где:

  • addr — адрес открытия сокета, пустой или "*" адрес открывает сокет на всех интерфейсах. Допускаются как символьное, так и IPv4 "127.0.0.1" или IPv6 "[::1]" представление адреса.
  • port — сетевой порт на котором открывается сокет, возможно указание символьного имени порта согласно /etc/services.
  • mode — режим работы входного сокета:
    • 0 — принудительно разрывать соединение после сеанса приём-ответ.
    • 1(типовой) — не разрывать соединение, только с учётом параметров KeepAlive.
    • 2 — инициативное подключение. Включает режим инициативы подключения данного входного транспорта к удалённому хосту (адрес вместо локального) и переход в режим ожидания запросов от этого хоста. Значение "Keep alive время ожидания" используется как таймаут переподключения данного транспорта по отсутствию активности с целью восстановления возможно потерянного подключения.
  • IDmess — идентифицирующее сообщение инициативного подключения — режим 2.

Пример: "TCP::10001:1" — TCP-сокет доступен на всех интерфейсах, открыт на порту 10001 и соединения не разрывает.

UDP

UDP:{addr}:{port}
где:

  • addr — тоже, что в TCP;
  • port — тоже, что в TCP.

Пример: "UDP:localhost:10001" — UDP-сокет доступен только на интерфейсе "localhost" и открыт на порту 10001.

RAWCAN

RAWCAN:{if}:{mask}:{id}
где:

  • if — имя CAN интерфейса;
  • mask, id — маска и идентификатор фильтрации CAN кадров.

Пример: "RAWCAN:can0:0:0" — принимать все CAN кадры на интерфейсе "can0".

UNIX

UNIX:{name}:{mode}
где:

  • name — имя файла UNIX сокета;
  • mode — тоже, что в TCP.

Пример: "UNIX:/tmp/oscada:1" — UNIX-сокет доступен через файл "/tmp/oscada" и соединения не разрывает.

RAWCAN имеет некоторые особенности в формировании посылки, а именно:

2 Выходные транспорты

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

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

Главная вкладка страницы конфигурации выходного сокета изображёна на рисунке 2.

Рис.2. Главная вкладка страницы конфигурации выходного сокета.

This dialog allows you to set:

Can be prioritatile specified into the address field as the second global argument, as such "localhost:123||5:1".
Can be prioritatile specified into the address field as the third global argument, as such "localhost:123||5:1||3".

Адрес выходных сокетов различного типа формируются следующим образом:

Тип сокета Адрес
TCP/UDP

[TCP:]{addr}[,{addrN}]:{port}
UDP:{addr}[,{addrN}]:{port}
где:

  • addr — адрес к которому осуществляется подключение. Допускаются как символьное, так и IPv4 "127.0.0.1" или IPv6 "[::1]" представление адреса.
  • port — сетевой порт к которому осуществляется подключение. Возможно указание символьного имени порта согласно /etc/services.

Пример: "TCP:127.0.0.1:7634" — соединится с портом 7634 на хосте 127.0.0.1.

RAWCAN

RAWCAN:{if}:{mask}:{id}
где:

  • if — имя CAN интерфейса;
  • mask, id — маска и идентификатор CAN кадров.

Пример: "RAWCAN:can0:0:0" — принимать все CAN кадры на интерфейсе "can0".

UNIX

UNIX:{name}
где:

  • name — имя файла UNIX сокета.

Пример: "UNIX:/tmp/oscada" — соединится с UNIX-сокетом через файл "/tmp/oscada".

RAWCAN имеет некоторые особенности в формировании посылки, а именно:

Modules/Sockets/ru - GFDLMay 2023OpenSCADA 0.9.6