Для выполнения ряда приведенных команд могут потребоваться права пользователя 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)
Тип | Размер (бит) | Описание |
---|---|---|
int16 |
16 |
Целочисленный |
float |
32 |
Плавающий, одинарной точности, стандарт IEEE 754 |
Порядок байтов: от старшего к младшему (big-endian).
Аналоговые входы
Аналоговые входы контроллера отображаются на Input Registers (Регистры ввода). Один вход занимает два регистра.
Адрес | Имя | Тип |
---|---|---|
0 |
Вход 1 |
float |
2 |
Вход 2 |
float |
4 |
Вход 3 |
float |
6 |
Вход 4 |
float |
8 |
Вход 5 |
float |
10 |
Вход 6 |
float |
12 |
Вход 7 |
float |
14 |
Вход 8 |
float |
16 |
Вход 9 |
float |
18 |
Вход 10 |
float |
20 |
Вход 11 |
float |
22 |
Вход 12 |
float |
24 |
Вход 13 |
float |
26 |
Вход 14 |
float |
28 |
Вход 15 |
float |
30 |
Вход 16 |
float |
Системная информация
Системная информация контроллера отображается на Input Registers (Регистры ввода).
Адрес | Имя | Тип | Значение отсутствует |
---|---|---|---|
100 |
Уровень GSM сигнала [дБм] |
int16 |
- |
101 |
Внешнее питание [В] |
float |
0 |
103 |
Заряд батареи [%] |
int16 |
-1 |
104 |
Температура платы [°C] |
int16 |
-1 |
105 |
Баланс SIM-карты |
float |
-1 |
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. Например, в контроллере может быть настроена периодическая отправка информационного и тестового сообщений, содержащих состояние входов, выходов и системную информацию.