Для выполнения ряда приведенных команд могут потребоваться права пользователя root (через sudo) в Linux или права администратора в Windows. |
1. Назначение
Сервер CCU Relay позволяет запустить собственный приватный аналог сервиса CCU.SU для контроллеров:
-
CCU422-S
-
CCU825-S
-
CCU825-S+
-
CCU825-B
-
CCU706-G
И предоставляет следующие возможности:
-
Удаленное конфигурирование контроллеров с помощью веб-браузера
-
Управление контроллерами, получение данных и событий через HTTP API, интегрирование контроллеров в собственные программные комплексы
-
Подключение контроллеров к любой SCADA-системе через Modbus TCP
-
Удаленное подключение по TCP к любому RS-232 или RS-485 устройству через сквозной канал
-
Получение событий от контроллеров через SMS с помощью GSM модема





2. Подключение контроллера
Контроллер может быть одновременно подключен к публичному серверу CCU.SU и трем приватным серверам CCU Relay (соединения 1-3).
2.1. Подключение к CCU.SU
Подключение к CCU.SU требуется для использования бота. Это подключение разрешается в конфигураторе контроллера на странице "Общие параметры соединений".

2.2. Подключение к CCU Relay
В конфигураторе контроллера на странице "Общие параметры соединений" необходимо выбрать режим соединения с приватным сервером "CCU Relay и GuardTracker". На странице "Соединения" (соединения 1-3) необходимо разрешить оповещение через CCU Relay, ввести IP-адрес (или доменное имя) и TCP-порт. IP-адрес должен соответствовать внешнему адресу компьютера, на котором работает CCU Relay, либо адресу роутера. Порт должен совпадать со значением ccu_port, заданным в файле конфигурации CCU Relay (см. Раздел 5.1). Если используется роутер, то в нем необходимо пробросить данный порт на адрес компьютера с CCU Relay. Порт должен быть разрешен в сетевых экранах компьютера и роутера.

3. Установка
Сервер CCU Relay поставляется в виде файла. Поле <version> задает версию. Поддерживается только 64-битная архитектура.
Файл | Операционная система | Архитектура |
---|---|---|
ccu_relay-<version>-linux.tar.gz |
Linux |
x86-64 |
ccu_relay-<version>-windows.zip |
Windows |
x86-64 |
3.1. Для Linux
mkdir -p /opt/ccu_relay
tar xf ccu_relay-<version>-linux.tar.gz -C /opt/ccu_relay --no-same-owner
После этого необходимо настроить сервис systemd (см. Раздел 5.3).
3.2. Для Windows
Сначала необходимо установить пакет Update for Visual C++ 2013 Redistributable Package. Файл vcredist_x64.exe. В таблице для скачивания необходимо выбрать язык, например, Russian - Russia.

Распаковать файл ccu_relay-<version>-windows.zip в директорию C:\ccu_relay (путь может быть любым, но не должен содержать пробелы). После этого необходимо настроить службу (см. Раздел 5.4).
4. Обновление
-
Если ccu_relay запущен, то перед обновлением его необходимо остановить (см. Глава 9).
-
Для Windows необходимо удалить службу (см. Раздел 5.4).
-
Сохранить директорию config, если в ней были изменения.
-
Распаковать новую версию вместо старой.
-
Восстановить директорию config, если это необходимо.
-
Для Windows необходимо добавить службу (см. Раздел 5.4).
-
Запустить ccu_relay (см. Глава 7).
5. Настройка
5.1. Файл конфигурации
{host, "nohost"}.
{ccu_port, 30000}.
{https_port, 8443}.
%% {ssl_cacertfile, "ssl/cacert.pem"}.
{ssl_certfile, "ssl/cert.pem"}.
{ssl_keyfile, "ssl/privkey.pem"}.
{ssl_dhfile, "ssl/dh.pem"}.
{http_api_key, "nokey"}.
{modbus, [{1, 502}]}.
{modbus_read_disabled, false}.
{gsm, [{"gsm1", "/dev/ttyUSB0"}]}.
{license_keyfile, "license.key"}.
Строка, которая начинается с символа %, является комментарием и игнорируется.
Параметр | Тип | Описание |
---|---|---|
host |
строка |
Имя хоста |
ccu_port |
число |
CCU TCP-порт |
https_port |
число |
HTTPS TCP-порт |
ssl_cacertfile |
строка |
Файл корневого сертификата (опционально) |
ssl_certfile |
строка |
Файл сертификата |
ssl_keyfile |
строка |
Файл приватного ключа сертификата |
ssl_dhfile |
строка |
Файл DH-параметров |
http_api_key |
строка |
HTTP API ключ доступа |
modbus |
список пар {число, число} |
Каждая пара: {адрес шлюза, TCP-порт шлюза} |
modbus_read_disabled |
true/false |
Чтение запрещенных входов и выходов |
gsm |
список пар {строка, строка} |
Каждая пара: {идентификатор, имя порта} |
license_keyfile |
строка |
Файл лицензии |
Имя хоста host используется при получении URL для входа в CCU Shell (см. Раздел 12.4).
TCP-порт ccu_port используется для подключения контроллеров CCU. Это же значение должно быть задано в конфигураторе контроллера (см. Раздел 2.2).
TCP-порт https_port используется для HTTP API.
TCP-порт со значением меньше 1024 считается привилегированным. Требуется запуск с правами пользователя root или администратора. |
Для HTTPS требуется SSL-сертификат. В поставку входит самоподписанный сертификат. При необходимости данный сертификат можно пересоздать (см. Раздел 5.2), либо использовать сертификат, выданный центром сертификации (CA). Сертификат и ключ сертификата должны быть в PEM-кодировке.
Путь к файлу может задаваться как:
-
относительный путь (относительно директории config)
-
абсолютный путь
Параметры конфигурации modbus и modbus_read_disabled описаны в Раздел 13.1.
Параметр конфигурации gsm описан в Раздел 15.1.
5.2. Создание самоподписанного сертификата и DH-параметров
openssl req -x509 -days 36500 -newkey rsa:2048 -nodes -keyout privkey.pem -out cert.pem
openssl dhparam -out dh-params.pem 2048
5.3. Настройка сервиса systemd в Linux
Для автозапуска в современных системах Linux используется systemd.
[Unit]
Description=Runner for ccu_relay
After=network.target
[Service]
WorkingDirectory=/opt/ccu_relay
ExecStart=/opt/ccu_relay/bin/ccu_relay daemon
ExecStop=/opt/ccu_relay/bin/ccu_relay stop
User=root
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Необходимо создать unit-файл сервиса:
cp /opt/ccu_relay/config/systemd/ccu_relay.service /etc/systemd/system/
Разрешить сервис:
systemctl daemon-reload
systemctl enable ccu_relay.service
После перезагрузки сервис должен запуститься автоматически. Для контроля см. Глава 8.
5.4. Настройка службы в Windows
Для добавления службы необходимо выполнить в командной строке cmd:
C:\ccu_relay\bin\ccu_relay.cmd install
Для удаления службы необходимо выполнить в командной строке cmd:
C:\ccu_relay\bin\ccu_relay.cmd uninstall
6. Лог
Директория лог-файлов:
-
Linux: /opt/ccu_relay/log
-
Windows: C:\ccu_relay\log
Основные типы лог-файлов:
-
info.log — информационные сообщения
-
error.log — сообщения об ошибках
7. Запуск
Для Linux:
/opt/ccu_relay/bin/ccu_relay daemon
Для Windows:
C:\ccu_relay\bin\ccu_relay.cmd start
В случае успешного запуска в info.log будет сообщение: System started.
В случае ошибки в error.log будет сообщение: System startup failed.
Для контроля см. Глава 8.
8. Проверка состояния
Для Linux:
-
идентификатор процесса
/opt/ccu_relay/bin/ccu_relay pid
-
проверка ping
/opt/ccu_relay/bin/ccu_relay ping
-
статус сервиса systemd (см. Раздел 5.3)
systemctl status ccu_relay
Для Windows:
-
проверка состояния в Службах.
9. Остановка
Для Linux:
/opt/ccu_relay/bin/ccu_relay stop
Для Windows:
C:\ccu_relay\bin\ccu_relay.cmd stop
В случае успешной остановки в info.log будет сообщение: System stopped.
10. Перезапуск
Перезапуск требуется после изменения файла конфигурации, если ccu_relay был запущен.
Для Linux:
/opt/ccu_relay/bin/ccu_relay restart
Для Windows:
C:\ccu_relay\bin\ccu_relay.cmd restart
11. Лицензия
11.1. Получение
Все используемые контроллеры CCU должны быть зарегистрированы в лицензии. Для получения файла лицензии необходимо сделать запрос на support@radsel.ru, в котором указать список IMEI контроллеров с необходимыми опциями. Стоимость опций указана в прайс-листе в разделе Программное обеспечение.
-
HTTP API
-
Modbus TCP
-
Сквозной канал TCP
Команды license_reload и license_info работают только после запуска ccu_relay. |
11.2. Обновление
Путь к файлу лицензии задается параметром конфигурации license_keyfile (см. Таблица 2). Полученный файл лицензии необходимо разместить по данному пути и выполнить следующую команду.
Для Linux:
/opt/ccu_relay/bin/ccu_relay license_reload
Для Windows:
C:\ccu_relay\bin\ccu_relay.cmd license_reload
В случае успешного обновления в info.log будет сообщение: License file loaded.
В случае ошибки в error.log будет сообщение: Failed loading license file.
11.3. Информация
Данная команда выдаст список IMEI контроллеров, которые зарегистрированы в лицензии.
Для Linux:
/opt/ccu_relay/bin/ccu_relay license_info
Для Windows:
C:\ccu_relay\bin\ccu_relay.cmd license_info
12. HTTP API
12.1. Ключ доступа
Запрос должен содержать заголовок Authorization: Bearer <key>. Ключ доступа <key> задается параметром конфигурации http_api_key (см. Раздел 5.1).
12.2. Типы запросов
Поддерживаются следующие типы запросов:
-
GET — получение данных
-
POST — передача данных
Формат обмена данными JSON. Запрос POST должен содержать заголовок Content-Type: application/json. Параметры запроса POST передаются в теле запроса.
12.3. Ошибки
В случае ошибки ответом на запрос будет объект с параметрами error_code и error_description:
error_code | error_description | Описание |
---|---|---|
1 |
"CCU not found" |
Контроллер с данным IMEI не найден |
2 |
"CCU disconnected" |
Контроллер отключился |
3 |
"Timeout" |
Превышено время ожидания ответа |
4 |
"Too many requests" |
Слишком много запросов |
5 |
"Internal error" |
Внутренняя ошибка |
{
"error_code": 1,
"error_description": "CCU not found"
}
12.4. URL для входа в CCU Shell
GET /api/ccu/<imei>/auth
Ответ: строка/URL (действителен в течение 5 минут).
curl -k -X GET -H 'Authorization: Bearer <key>' https://<host>/api/ccu/<imei>/auth
"https://nohost/login/3093c8ce5c3c7baf7decd55546f3fcf93316ece42eec410d9ec
20bf4f1fe303fe0cf28bcd745bfe8b07eca9c4a9cc5a8219fbe674e7360f6d00d94728433
3e8784dabe863a5cefc78748206f51a859885b470a0f08ca7fd23def56c009e9913fcd604
2de954562031c7a71590f645bd17e028fabe5f97b8ea726a8f14d695e5db184a06c8476"
12.5. Контроллеры онлайн
GET /api/ccu/online
Ответ: массив строк/IMEI.
curl -k -X GET -H 'Authorization: Bearer <key>' https://<host>/api/ccu/online
["865609024314173","869158009723061"]
12.6. Идентификация контроллера
GET /api/ccu/<imei>/id
Ответ:
Параметр | Значение | Описание |
---|---|---|
id_dev_type |
строка |
Тип контроллера |
id_dev_mod |
строка |
Модификация контроллера |
id_ext_board |
строка |
Плата расширения |
id_hw |
строка |
Аппаратная версия |
id_fw |
строка |
Версия прошивки |
id_boot_loader |
строка |
Версия загрузчика |
id_build_date |
строка |
Дата сборки прошивки |
id_country |
строка |
Код страны |
id_sn |
строка |
Серийный номер |
id_imei |
строка |
IMEI |
id_gsm |
строка |
GSM |
curl -k -X GET -H 'Authorization: Bearer <key>' https://<host>/api/ccu/<imei>/id
{
"id_boot_loader": "04.00",
"id_build_date": "May 24 2019",
"id_country": "RUS",
"id_dev_mod": "S",
"id_dev_type": "CCU825",
"id_ext_board": "--",
"id_fw": "02.20",
"id_gsm": "M680_1232_LQS13001_V018",
"id_hw": "14.01",
"id_imei": "865609024314173",
"id_sn": "0BE0FF18469C2DAEB0550953871E00F5"
}
12.7. Системная информация и режим охраны
GET /api/ccu/<imei>/sysinfo
Ответ:
Параметр | Значение | Описание |
---|---|---|
sysinfo |
Системная информация |
|
mode |
Режим охраны |
Параметр | Значение | Описание |
---|---|---|
sysinfo_gsm_signal |
[Таблица 7, число] |
Статус и уровень GSM сигнала [дБм] |
sysinfo_ext_pwr |
число/null |
Внешнее питание [В] |
sysinfo_bat |
[Таблица 8, число/null] |
Статус и заряд батареи [%] |
sysinfo_temp |
число/null |
Температура платы [°C] |
sysinfo_case |
true/false/null |
Корпус открыт/закрыт |
sysinfo_balance |
число/null |
Баланс SIM-карты |
Если null, то значение не определено. Например, для sysinfo_ext_pwr это означает, что внешнее питание отключено.
Статус | Описание |
---|---|
"gsm_signal_weak" |
Низкий |
"gsm_signal_average" |
Средний |
"gsm_signal_good" |
Хороший |
"gsm_signal_excellent" |
Отличный |
Статус | Описание |
---|---|
"bat_ok" |
В норме |
"bat_not_used" |
Не использовалась |
"bat_disconnected" |
Отключена |
"bat_discharge_level1" |
Разряжена до 1 уровня |
"bat_discharge_level2" |
Разряжена до 2 уровня |
curl -k -X GET -H 'Authorization: Bearer <key>' https://<host>/api/ccu/<imei>/sysinfo
{
"mode": "disarm",
"sysinfo": {
"sysinfo_balance": 3019.989990234375,
"sysinfo_bat": [
"bat_not_used",
null
],
"sysinfo_case": true,
"sysinfo_ext_pwr": 15.199999809265137,
"sysinfo_gsm_signal": [
"gsm_signal_excellent",
-75
],
"sysinfo_temp": 31
}
}
12.8. Режим охраны
12.8.1. Получение
GET /api/ccu/<imei>/mode
Ответ:
-
Если контроллер работает в однораздельном режиме, то режим охраны представлен строкой:
Таблица 9. Режим охраны Режим охраны Описание "disarm"
НАБЛЮДЕНИЕ
"arm"
ОХРАНА
"protect"
ЗАЩИТА
-
Если контроллер работает в многораздельном режиме, то режим охраны разделов представлен объектом:
Таблица 10. Режим охраны разделов Номер раздела Значение Описание число в строковом представлении
Режим охраны раздела
Количество разделов от 1 до 4. Если в конфигураторе контроллера ни один раздел не имеет связанных входов, то объект mode будет пустым.
curl -k -X GET -H 'Authorization: Bearer <key>' https://<host>/api/ccu/<imei>/auth
"arm"
12.8.2. Изменение
POST /api/ccu/<imei>/mode
Параметр: см. Таблица 9 и Таблица 10.
Ответ: см. Таблица 9 и Таблица 10.
curl -k -X POST -d '"arm"' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <key>' https://<host>/api/ccu/<imei>/mode
"arm"
12.9. Входы
GET /api/ccu/<imei>/inputs
Ответ:
Номер входа | Значение | Описание |
---|---|---|
число в строковом представлении |
Состояние входа |
Значение | Описание |
---|---|
false |
Дискретный вход ПАССИВЕН |
true |
Дискретный вход АКТИВЕН |
[false, число] |
Аналоговый вход ПАССИВЕН, числовое значение |
[true, число] |
Аналоговый вход АКТИВЕН, числовое значение |
[_, null] |
Показания недостоверны |
curl -k -X GET -H 'Authorization: Bearer <key>' https://<host>/api/ccu/<imei>/inputs
{
"1": [
false,
2099.0
],
"2": true,
"3": [
true,
52.368743896484375
],
"8": false
}
12.10. Границы входов
12.10.1. Типы тревожных диапазонов
Тип | Количество границ |
---|---|
Низкий или высокий |
2 |
Низкий |
1 |
Средний |
2 |
Высокий |
1 |
Низкий гистерезисный |
2 |
Высокий гистерезисный |
2 |
12.10.2. Получение
GET /api/ccu/<imei>/inputs/limits
Ответ:
Номер входа | Значение | Описание |
---|---|---|
число в строковом представлении |
[] |
Для дискретного входа |
[число] |
Для аналогового/RTD входа с одной границей |
|
[число, число] |
Для аналогового/RTD входа с двумя границами |
curl -k -X GET -H 'Authorization: Bearer <key>' https://<host>/api/ccu/<imei>/inputs/limits
{
"1": [
1430.0
],
"2": [],
"3": [
30.097679138183594,
70.4884033203125
],
"8": []
}
12.10.3. Изменение
POST /api/ccu/<imei>/inputs/limits
Параметр: см. Таблица 14.
Ответ: см. Таблица 14.
curl -k -X POST -d '{"1":[1000.0],"3":[20,55.5]}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <key>' https://<host>/api/ccu/<imei>/inputs/limits
{
"1": [
1000.0
],
"3": [
19.98779296875,
55.4945068359375
]
}
12.11. Выходы
12.11.1. Типы выходов
Номер выхода | Тип |
---|---|
1 |
Реле 1 |
2 |
Реле 2 |
3 |
Выход 1 |
4 |
Выход 2 |
5 |
Выход 3 |
6 |
Выход 4 |
7 |
Выход 5 |
12.11.2. Получение
GET /api/ccu/<imei>/outputs
Ответ:
Номер выхода | Значение | Описание |
---|---|---|
число в строковом представлении |
0 |
Выключен |
1 |
Включен |
curl -k -X GET -H 'Authorization: Bearer <key>' https://<host>/api/ccu/<imei>/outputs
{
"1": 1,
"2": 1,
"3": 0,
"4": 0,
"5": 0,
"6": 0
}
12.11.3. Управление
POST /api/ccu/<imei>/outputs
Параметр:
Номер выхода | Значение | Описание |
---|---|---|
число в строковом представлении |
0 |
Выключить |
1 |
Включить |
|
2 |
Сценарий 1 |
|
3 |
Сценарий 2 |
|
4 |
Сценарий 3 |
|
5 |
Сценарий 4 |
|
6 |
Сценарий 5 |
|
7 |
Сценарий 6 |
|
8 |
Сценарий 7 |
|
9 |
Сценарий 8 |
|
10 |
Сценарий 9 |
|
11 |
Сценарий 10 |
|
12 |
Сценарий 11 |
|
13 |
Сценарий 12 |
|
14 |
Сценарий 13 |
|
15 |
Сценарий 14 |
Ответ: см. Таблица 16.
curl -k -X POST -d '{"1":0,"6":1}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <key>' https://<host>/api/ccu/<imei>/outputs
{
"1": 0,
"6": 1
}
12.12. Профили
POST /api/ccu/<imei>/profile
Параметр: число (номер профиля для применения).
Ответ: число (номер примененного профиля)/null (если профиль запрещен).
curl -k -X POST -d 1 \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <key>' https://<host>/api/ccu/<imei>/profile
1
12.13. События
12.13.1. Источники событий
Для получения событий через HTTP API необходимо в конфигураторе контроллера в нужном соединении выбрать источники событий.

12.13.2. Получение
Для получения событий используется технология Server-Sent Events.
GET /api/ccu/events
Ответ:
Параметр | Значение | Описание |
---|---|---|
imei |
строка |
IMEI контроллера (опционально) |
event |
Событие |
|
ack |
число |
Код подтверждения события (опционально) |
Если событийный объект содержит параметр ack, то событие должно быть подтверждено (см. Раздел 12.13.3).
Значение | Описание |
---|---|
"keepalive" |
Периодическое событие для поддержания соединения |
"online" |
Контроллер подключился |
"offline" |
Контроллер отключился |
"event_power_on" |
Внешнее питание включено |
"event_power_off" |
Внешнее питание отключено |
["event_battery_low", число] |
Батарея разряжена, значение [%] |
["event_balance_low", число] |
Баланс снизился, значение |
["event_temp_low", число] |
Температура платы упала, значение [°C] |
["event_temp_normal", число] |
Температура платы вернулась в допустимый диапазон, значение [°C] |
["event_temp_high", число] |
Температура платы поднялась, значение [°C] |
"event_case_open" |
Корпус контроллера открыт |
["event_test", системная информация (Таблица 6), режим охраны (Таблица 9 и Таблица 10)] |
Тестовое сообщение |
["event_info", состояние входов (Таблица 11), состояние выходов (Таблица 16)] |
Информационное сообщение |
["event_disarm", источник события (Таблица 20), число/null] |
Переведен в режим НАБЛЮДЕНИЕ, номер раздела или null |
["event_arm", источник события (Таблица 20), число/null] |
Переведен в режим ОХРАНА, номер раздела или null |
["event_protect", источник события (Таблица 20), число/null] |
Переведен в режим ЗАЩИТА, номер раздела или null |
["event_input", число, состояние входа (Таблица 12)] |
Вход: АКТИВЕН/ПАССИВЕН, номер входа |
["event_profile_applied", число] |
Профиль применен, номер профиля |
"event_device_on" |
Контроллер включен |
"event_device_restart" |
Контроллер перезапущен |
"event_firmware_upgrade" |
Прошивка обновлена |
["event_ext_runtime_error", число] |
Ошибка выполнения программы EXT, код ошибки |
Источник события | Описание |
---|---|
"source_button" |
Кнопкой |
["source_touch_memory", строка] |
Ключом, идентификатор ключа или пользователь |
"source_input" |
С помощью входа |
"source_scheduler" |
Планировщиком задач по времени |
["source_dtmf", строка] |
Через голосовое меню, пользователь |
["source_sms", строка] |
С помощью SMS команды, пользователь |
["source_csd", строка] |
Через CSD соединение, пользователь |
["source_call", строка] |
С помощью вызова без установки соединения, пользователь |
["source_ccu_shell", строка] |
Через CCU Shell, пользователь |
"source_modbus" |
Через GuardTracker RS-485 |
["source_bot", строка] |
С помощью бота, пользователь |
"source_ext" |
Через программу EXT |
curl -k -X GET -H 'Authorization: Bearer <key>' https://<host>/api/ccu/events
data:{"event":"online","imei":"865609024314173"}
data:{"ack":17696,"event":["event_arm",["source_ccu_shell","admin"],
null],"imei":"865609024314173"}
data:{"event":"keepalive"}
data:{"ack":1792,"event":["event_input",1,[true,5.155066967010498]],
"imei":"865609024314173"}
12.13.3. Подтверждение
POST /api/ccu/<imei>/events/ack
Параметр: массив чисел.
Ответ: нет.
curl -k -X POST -d '[1,2]' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <key>' https://<host>/api/ccu/<imei>/events/ack
13. Modbus TCP
13.1. Настройка
Параметр конфигурации modbus (см. Таблица 2) позволяет настроить до 255 шлюзов Modbus TCP. Адрес шлюза задается числом от 1 до 255. Соответствующий адрес шлюза и адрес устройства также должны быть заданы в конфигураторе контроллера на странице "Общие параметры соединений" (см. Рисунок 10). Настройка более одного шлюза позволяет обойти ограничение Modbus (адрес устройства ограничен диапазоном от 1 до 247) и при необходимости подключить более 247 контроллеров.
{modbus, [{1, 502}, {2, 503}]}.
После запуска в info.log будут сообщения вида: Modbus TCP {gate: 1, port: 502} started.

{modbus, []}.
Если параметр конфигурации modbus_read_disabled имеет значение true, то разрешается считывание запрещенных в конфигурации контроллера входов и выходов. Для запрещенных дискретных входов и дискретных выходов будет считываться значение 0 (OFF). Для запрещенных аналоговых входов будет считываться значение 7FFFFFFF16, что соответствует NaN (не число) в стандарте IEEE 754.
Если параметр конфигурации modbus_read_disabled имеет значение false, то считывание запрещенных в конфигурации контроллера входов и выходов приведет к ошибке Illegal Data Address (код 02).
13.2. Функции
Учитывая особенности работы 2G, рекомендуется задавать в SCADA период опроса каждого контроллера не менее 10 секунд.
13.2.1. Read Coils (01)
Дискретные выходы контроллера отображаются на Coils (Регистры флагов).
Адрес | Тип |
---|---|
0 |
Реле 1 |
1 |
Реле 2 |
2 |
Выход 1 |
3 |
Выход 2 |
4 |
Выход 3 |
5 |
Выход 4 |
6 |
Выход 5 |
13.2.2. Read Discrete Inputs (02)
Дискретные входы контроллера отображаются на Discrete Inputs (Дискретные входы).
Адрес | Тип |
---|---|
0 |
Вход 1 |
1 |
Вход 2 |
2 |
Вход 3 |
3 |
Вход 4 |
4 |
Вход 5 |
5 |
Вход 6 |
6 |
Вход 7 |
7 |
Вход 8 |
8 |
Вход 9 |
9 |
Вход 10 |
10 |
Вход 11 |
11 |
Вход 12 |
12 |
Вход 13 |
13 |
Вход 14 |
14 |
Вход 15 |
15 |
Вход 16 |
13.2.3. Read Input Registers (04)
Аналоговые входы контроллера отображаются на Input Registers (Регистры ввода). Значением входа является float (число одинарной точности, стандарт IEEE 754) размером 32 бита (4 байта). Один вход занимает два 16-битных регистра. Порядок байтов: от старшего к младшему (big-endian). Например, число 3.14 в данном формате имеет вид 4048F5C316.
Регистр 0 |
Регистр 1 |
||
Старший байт |
Младший байт |
Старший байт |
Младший байт |
40 |
48 |
F5 |
C3 |
Адрес | Тип |
---|---|
0 |
Вход 1 |
2 |
Вход 2 |
4 |
Вход 3 |
6 |
Вход 4 |
8 |
Вход 5 |
10 |
Вход 6 |
12 |
Вход 7 |
14 |
Вход 8 |
16 |
Вход 9 |
18 |
Вход 10 |
20 |
Вход 11 |
22 |
Вход 12 |
24 |
Вход 13 |
26 |
Вход 14 |
28 |
Вход 15 |
30 |
Вход 16 |
13.2.4. Write Single Coil (05)
См. Раздел 13.2.1.
13.2.5. Write Multiple Coils (15)
См. Раздел 13.2.1.
13.3. Ошибки
Код | Ошибка | Описание |
---|---|---|
01 |
Illegal Function |
Функция не поддерживается |
02 |
Illegal Data Address |
Неверный адрес |
03 |
Illegal Data Value |
Неверное значение |
04 |
Slave Device Failure |
Ошибка передачи данных |
06 |
Slave Device Busy |
Слишком много запросов |
10 |
Gateway Path Unavailable |
В лицензии не включена поддержка Modbus для данного контроллера |
11 |
Gateway Target Device Failed To Respond |
Контроллер не в сети или превышено время ожидания ответа |
14. Сквозной канал TCP
Данная функция позволяет организовать удаленный доступ по TCP к любому RS-232 или RS-485 устройству. В контроллере должна быть установлена соответствующая плата расширения. Для подключения устройства по RS-232 необходима плата расширения E01.3. Для подключения устройства по RS-485 необходима плата расширения E03.1.
Одно из возможных применений сквозного канала TCP — дистанционное считывание показаний счетчика электроэнергии. Счетчик подключается к контроллеру по RS-232 или RS-485. При подключении контроллера к CCU Relay на сервере открывается TCP-порт (номер порта задается в конфигурации контроллера). Программа для считывания показаний счетчика подключается к данному TCP-порту. Таким образом организуется полнодуплексный сквозной канал к счетчику. Данные передаются прозрачно между TCP-портом на стороне CCU Relay и интерфейсом RS-232 или RS-485 на стороне контроллера.


-
ожидается подключение по сквозному каналу TCP
-
соединение по сквозному каналу TCP установлено
-
заданный TCP порт не может быть использован
-
опция сквозного канала TCP не включена в лицензии CCU Relay
-
нет соединения с CCU Relay
15. GSM модем
Поддерживается GSM модем RGM-M12.
15.1. Настройка
Параметр конфигурации gsm (см. Таблица 2) позволяет задать список подключенных GSM модемов. Идентификаторы и имена портов должны быть уникальными. Идентификатором является произвольная строка. Данный идентификатор будет отображаться в логе обмена с GSM модемами.


{gsm, [{"gsm1", "/dev/ttyUSB0"}, {"gsm2", "/dev/ttyUSB1"}]}.
{gsm, [{"gsm1", "COM1"}, {"gsm2", "COM2"}]}.
После запуска в info.log будут сообщения вида: GSM {id: gsm1, port: /dev/ttyUSB0} started.
Протокол обмена с GSM модемами записывается в gsm.log.
{gsm, []}.
15.2. События
Для получения событий через SMS необходимо в конфигураторе контроллера в нужном соединении выбрать источники событий и установить язык SMS: CCU Relay.

15.2.1. HTTP API
Событийный объект (см. Раздел 12.13.2), полученный через SMS, не содержит параметр ack. Подтверждение не требуется.
Если в конфигураторе контроллера в соединении настроено оповещение через CCU Relay (см. Рисунок 9) и оповещение через SMS (см. Рисунок 15), то событие будет доставляться через SMS только в том случае, если оно не будет подтверждено через HTTP API (см. Раздел 12.13.3) в течение времени, которое задано параметром "Снять данные с передачи, если не переданы за" (см. Рисунок 9). В этом случае SMS является резервным видом доставки событий.
15.2.2. Modbus TCP
Если в конфигураторе контроллера настроено оповещение через SMS (см. Рисунок 15) и также настроен Modbus TCP (см. Рисунок 10), то состояние входов и выходов, содержащееся в полученном событии (информационное сообщение, переход входа в активное или пассивное состояние), может быть считано запросом через Modbus TCP. Это позволяет получать информацию в SCADA через SMS. Например, в контроллере может быть настроена периодическая отправка информационного сообщения, содержащего состояние входов и выходов.