Стартовая страница › Форумы › Взаимодействие с устройствами › Modbus › шлюз из OPC в Modbus TCP
- В этой теме 17 ответов, 3 участника, последнее обновление 8 лет, 9 месяцев назад сделано
Mikhail.
-
АвторЗаписи
-
08.09.2017 в 10:46 #7217
Komrade82
УчастникДобрый день всем.
Есть такая задача: передавать данные, считываемые по OPC на SCADA, которая может быть только Мастером по Modbus. Поскольку Slave пока нет в коммуникаторе, то я использую промежуточный Modbus-сервер в таком качестве. Пробовал отсылать стандартной командой значение float, а потом считывать с промежуточного сервера клиентом.
В данный момент 2 проблемы:
1. При отсылке записывается значение с порядком байт, который наша SCADA не дешифрует.
2. Как организовать автоматом трансфер значений из переменных OPC в переменные Modbus (имеется Модуль автоматического управления)?08.09.2017 в 11:15 #7218
manjey73Участник1. Порядок байт можно поменять формулой
2. не совсем понятно как и куда что будет гулять.08.09.2017 в 11:20 #7219Komrade82
Участник1. Можно пример формулы под последнюю версию сервера? Посылать придется через генератор сервера в таком случае?
2. Данные считываются с OPC-сервера. Нужно их переслать в Modbus Slave.08.09.2017 в 12:04 #7220
manjey73Участник1. формула зависит от типа переменной, примеры с float были для Modbus с порядком байт 2301 на форуме. Значение в канал передаются в double, отсюда и пляшите.
Какие вам байты надо переставить уже от оборудования зависит.
2. Модуль автоматического управления теперь может выполнять каналы управления по изменению, так что пересылать теперь можно с использованием формул и через него.
Все это в последней версии 5.3.0 scada. Пока еще пересылать не пробовал. надо будет панельку прикрутить для теста.08.09.2017 в 12:25 #7221Komrade82
Участник1. Использовал формулу с форума, переправленную на 1032 — пересылается верно.
2. Т.е. в строковое значение бинарной команды вписать {CnlVal} и он его перешлёт? Остается только настроить триггер на регулярную посылку команд.08.09.2017 в 13:07 #7223Komrade82
УчастникСделал немного иначе — в команде пересылаю просто значение 1 а в формуле умножаю на Val(n). При посылке через генератор команд всё работает, а вот от модуля автоматического управления команды до коммуникатора не доходят.
08.09.2017 в 13:50 #7224Komrade82
УчастникИз лога модуля:
2017-09-08 13:46:01 Запуск работы модуля ModAutoControl
2017-09-08 13:46:01 Проверка регистрации «Модуль автоматического управления»:
Регистрационный ключ действителен. Дата окончания 09.09.2017
Код компьютера: =F36A32DADAE1D207-7F3669B8B0E17900-C9F6574464998774-6A453DEB6CC04D9C-00447246A4E0F23B-D03F6D6306E574E1-23466826BBD326D5-714439B3B6E1E0D9-FF44AFEA01BA0D23-DCEB54049F8D713E=
2017-09-08 13:46:01 Переменные в командах не используются
2017-09-08 13:46:32 Изменилось состояние триггера «расход»: Сработка
2017-09-08 13:46:32 Отправка команд пропускается
2017-09-08 13:46:42 Изменилось состояние триггера «расход»: Повторная сработка 1/5 (каждые 10 с)
2017-09-08 13:46:42 Команда отправлена. Канал управления 601
2017-09-08 13:46:42 Команда отправлена. Канал управления 602
2017-09-08 13:46:52 Изменилось состояние триггера «расход»: Повторная сработка 2/5 (каждые 10 с)
2017-09-08 13:46:52 Команда отправлена. Канал управления 601
2017-09-08 13:46:52 Команда отправлена. Канал управления 602
2017-09-08 13:47:02 Изменилось состояние триггера «расход»: Повторная сработка 3/5 (каждые 10 с)
2017-09-08 13:47:02 Команда отправлена. Канал управления 601
2017-09-08 13:47:02 Команда отправлена. Канал управления 602
2017-09-08 13:47:12 Изменилось состояние триггера «расход»: Повторная сработка 4/5 (каждые 10 с)
2017-09-08 13:47:12 Команда отправлена. Канал управления 601
2017-09-08 13:47:12 Команда отправлена. Канал управления 602
2017-09-08 13:47:22 Изменилось состояние триггера «расход»: Повторная сработка 5/5 (каждые 10 с)
2017-09-08 13:47:22 Команда отправлена. Канал управления 601
2017-09-08 13:47:22 Команда отправлена. Канал управления 602Из лога Коммуникатора:
КП 13 «Контроллер 603»
———————-
DLL : KpModbus
Состояние : норма
Сеанс связи : 08.09.2017 13:49:30
Команда ТУ : 08.09.2017 13:44:54Сеансы связи (всего / ошибок) : 157 / 0
Команды ТУ (всего / ошибок) : 15 / 0
Запросы (всего / ошибок) : 172 / 0Текущие данные тегов КП
+———+—————+———-+——-+
| Сигнал | Наименование | Значение | Канал |
+———+—————+———-+——-+
| **************************************** |
+———+—————+———-+——-+
| 1 | Test | 20,000 | 101 |
+———+—————+———-+——-+
| 2 | | 20,000 | 102 |
+———+—————+———-+——-+
| 3 | | 25,360 | |
+———+—————+———-+——-+
| 4 | | 25,360 | |
+———+—————+———-+——-+
| 5 | | 25,360 | |
+———+—————+———-+——-+
| 6 | | 25,360 | |
+———+—————+———-+——-+Архивные данные отсутствуют
События отсутствуют
Команды ТУ (последние 10 команд)
+—-+———————+—————————————————————+
| № | Дата и время | Описание |
+—-+———————+—————————————————————+
| 1 | 08.09.2017 13:40:22 | Команда ТУ: тип=Standard, КП=13, номер=2, значение=3,000 |
+—-+———————+—————————————————————+
| 2 | 08.09.2017 13:41:06 | Команда ТУ: тип=Standard, КП=13, номер=2, значение=1 313,665 |
+—-+———————+—————————————————————+
| 3 | 08.09.2017 13:42:42 | Команда ТУ: тип=Standard, КП=13, номер=2, значение=1 313,665 |
+—-+———————+—————————————————————+
| 4 | 08.09.2017 13:42:52 | Команда ТУ: тип=Standard, КП=13, номер=2, значение=1 313,665 |
+—-+———————+—————————————————————+
| 5 | 08.09.2017 13:43:02 | Команда ТУ: тип=Standard, КП=13, номер=2, значение=1 313,665 |
+—-+———————+—————————————————————+
| 6 | 08.09.2017 13:43:12 | Команда ТУ: тип=Standard, КП=13, номер=2, значение=1 313,665 |
+—-+———————+—————————————————————+
| 7 | 08.09.2017 13:43:22 | Команда ТУ: тип=Standard, КП=13, номер=2, значение=1 313,665 |
+—-+———————+—————————————————————+
| 8 | 08.09.2017 13:43:59 | Команда ТУ: тип=Standard, КП=13, номер=1, значение=0,000 |
+—-+———————+—————————————————————+
| 9 | 08.09.2017 13:44:11 | Команда ТУ: тип=Standard, КП=13, номер=2, значение=0,000 |
+—-+———————+—————————————————————+
| 10 | 08.09.2017 13:44:54 | Команда ТУ: тип=Standard, КП=13, номер=1, значение=0,000 |
+—-+———————+—————————————————————+08.09.2017 в 13:54 #7225Komrade82
УчастникИ еще из лога сервера:
2017-09-08 13:46:01 <ASUTP-NOTE><СИСТЕМА><ACT> Служба ScadaServerService 5.1.0.0 запущена
2017-09-08 13:46:01 <ASUTP-NOTE><СИСТЕМА><ACT> Загружен модуль из файла D:\RAPID_SCADA\ScadaServer\Mod\ModAutoControl.dll
2017-09-08 13:46:01 <ASUTP-NOTE><СИСТЕМА><ACT> Проверка существования директорий данных выполнена успешно
2017-09-08 13:46:01 <ASUTP-NOTE><СИСТЕМА><ACT> Проверка существования файлов базы конфигурации выполнена успешно
2017-09-08 13:46:01 <ASUTP-NOTE><СИСТЕМА><ACT> Входные каналы считаны из базы конфигурации. Количество активных каналов: 14
2017-09-08 13:46:01 <ASUTP-NOTE><СИСТЕМА><ACT> Каналы управления считаны из базы конфигурации
2017-09-08 13:46:01 <ASUTP-NOTE><СИСТЕМА><ACT> Пользователи считаны из базы конфигурации
2017-09-08 13:46:01 <ASUTP-NOTE><СИСТЕМА><ACT> Формулы считаны из базы конфигурации
2017-09-08 13:46:01 <ASUTP-NOTE><СИСТЕМА><ACT> Исходный код формул калькулятора откомпилирован
2017-09-08 13:46:01 <ASUTP-NOTE><СИСТЕМА><ACT> Прослушиватель соединений запущен
2017-09-08 13:46:01 <ASUTP-NOTE><СИСТЕМА><ACT> Запуск работы сервера
2017-09-08 13:46:02 <ASUTP-NOTE><СИСТЕМА><ACT> Соединение с клиентом 127.0.0.1
2017-09-08 13:46:02 <ASUTP-NOTE><СИСТЕМА><ACT> Пользователь ScadaComm успешно аутентифицирован
2017-09-08 13:46:02 <ASUTP-NOTE><СИСТЕМА><ACT> Текущий срез загружен
2017-09-08 13:46:42 <ASUTP-NOTE><СИСТЕМА><ACT> Команда ТУ: канал упр. = 601, ид. польз. = 3
2017-09-08 13:46:42 <ASUTP-NOTE><СИСТЕМА><ACT> Команда ТУ: канал упр. = 602, ид. польз. = 2
2017-09-08 13:46:52 <ASUTP-NOTE><СИСТЕМА><ACT> Команда ТУ: канал упр. = 601, ид. польз. = 3
2017-09-08 13:46:52 <ASUTP-NOTE><СИСТЕМА><ACT> Команда ТУ: канал упр. = 602, ид. польз. = 2
2017-09-08 13:47:02 <ASUTP-NOTE><СИСТЕМА><ACT> Команда ТУ: канал упр. = 601, ид. польз. = 3
2017-09-08 13:47:02 <ASUTP-NOTE><СИСТЕМА><ACT> Команда ТУ: канал упр. = 602, ид. польз. = 2
2017-09-08 13:47:12 <ASUTP-NOTE><СИСТЕМА><ACT> Команда ТУ: канал упр. = 601, ид. польз. = 3
2017-09-08 13:47:12 <ASUTP-NOTE><СИСТЕМА><ACT> Команда ТУ: канал упр. = 602, ид. польз. = 2
2017-09-08 13:47:22 <ASUTP-NOTE><СИСТЕМА><ACT> Команда ТУ: канал упр. = 601, ид. польз. = 3
2017-09-08 13:47:22 <ASUTP-NOTE><СИСТЕМА><ACT> Команда ТУ: канал упр. = 602, ид. польз. = 208.09.2017 в 14:10 #7226Komrade82
УчастникА вот в общем логе коммуникатора есть ошибки:
2017-09-08 13:42:01 <ASUTP-NOTE><СИСТЕМА><EXC> Ошибка при приёме команды ТУ от SCADA-Сервера: Не удается прочитать данные из транспортного соединения: Программа на вашем хост-компьютере разорвала установленное подключение.
2017-09-08 13:42:01 <ASUTP-NOTE><СИСТЕМА><ACT> Разрыв соединения со SCADA-Сервером
2017-09-08 13:42:01 <ASUTP-NOTE><СИСТЕМА><ACT> Установка соединения со SCADA-Сервером «localhost»
2017-09-08 13:42:42 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=1
2017-09-08 13:42:42 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=13, номер=2
2017-09-08 13:42:52 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=1
2017-09-08 13:42:52 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=13, номер=2
2017-09-08 13:43:02 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=1
2017-09-08 13:43:02 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=13, номер=2
2017-09-08 13:43:12 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=1
2017-09-08 13:43:12 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=13, номер=2
2017-09-08 13:43:22 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=1
2017-09-08 13:43:22 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=13, номер=2
2017-09-08 13:43:59 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=13, номер=1
2017-09-08 13:44:11 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=13, номер=2
2017-09-08 13:44:54 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=13, номер=1
2017-09-08 13:46:00 <ASUTP-NOTE><СИСТЕМА><EXC> Ошибка при приёме команды ТУ от SCADA-Сервера: Не удается прочитать данные из транспортного соединения: Удаленный хост принудительно разорвал существующее подключение.
2017-09-08 13:46:00 <ASUTP-NOTE><СИСТЕМА><ACT> Разрыв соединения со SCADA-Сервером
2017-09-08 13:46:01 <ASUTP-NOTE><СИСТЕМА><ACT> Установка соединения со SCADA-Сервером «localhost»
2017-09-08 13:46:42 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=1
2017-09-08 13:46:42 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=2
2017-09-08 13:46:52 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=1
2017-09-08 13:46:52 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=2
2017-09-08 13:47:02 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=1
2017-09-08 13:47:02 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=2
2017-09-08 13:47:12 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=1
2017-09-08 13:47:12 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=2
2017-09-08 13:47:23 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=1
2017-09-08 13:47:23 <ASUTP-NOTE><СИСТЕМА><ACT> Получена команда от SCADA-Сервера: тип=Standard, КП=0, номер=208.09.2017 в 14:16 #7227Komrade82
УчастникТаким образом Модуль автоуправления при передаче канала управления не привязывает ни к какому КП? Проверил через генератор — в логе КП 13 и команда приходит.
08.09.2017 в 14:32 #7228
manjey73УчастникВ модуле должна быть привязка к КП, может вы не проставили ?
08.09.2017 в 14:50 #7229Komrade82
УчастникВ модуле при выборе КП обнуляется Канал управления и наоборот. Я уже проверил. Проблема в том, что модуль не берет потом с базы номер КП, к которому привязан канал управления, в отличие от генератора команд Сервера.
08.09.2017 в 15:45 #7231
MikhailМодераторМодуль может отправлять команды двумя способами:
1. Напрямую КП. То есть Вы указываете номер КП и номер команды.
2. Через канал управления. Тогда Вы указываете номер канала управления (и номер КП обнуляется в настройках команды).Полагаю, что у Вас не указано КП в базе конфигурации для канала управления. Нужно это сделать.
Если очень часто отправлять команды через каналы управления, то лог Сервера будет неудобночитаемым. В этом случае лучше отправлять команды сразу на КП. Вы можете сделать дорасчётный канал, в котором поставить байты в нужном порядке. И сделать триггер на изменение этого канала.
08.09.2017 в 15:46 #7232
MikhailМодераторТолько нужно взять новую версию модуля, в которой есть триггер на изменение.
08.09.2017 в 16:02 #7234
manjey73УчастникВ некоторых случаях было бы удобно отправлять именно через канал управления, может стоит добавить настройку чтобы в лог не выводить ? или чтобы это был отдельный файл лога ?
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.