шлюз из OPC в Modbus TCP

Просмотр 15 сообщений - с 1 по 15 (из 18 всего)
  • Автор
    Записи
  • #7217
    Komrade82
    Участник

    Добрый день всем.
    Есть такая задача: передавать данные, считываемые по OPC на SCADA, которая может быть только Мастером по Modbus. Поскольку Slave пока нет в коммуникаторе, то я использую промежуточный Modbus-сервер в таком качестве. Пробовал отсылать стандартной командой значение float, а потом считывать с промежуточного сервера клиентом.
    В данный момент 2 проблемы:
    1. При отсылке записывается значение с порядком байт, который наша SCADA не дешифрует.
    2. Как организовать автоматом трансфер значений из переменных OPC в переменные Modbus (имеется Модуль автоматического управления)?

    #7218
    manjey73
    Участник

    1. Порядок байт можно поменять формулой
    2. не совсем понятно как и куда что будет гулять.

    #7219
    Komrade82
    Участник

    1. Можно пример формулы под последнюю версию сервера? Посылать придется через генератор сервера в таком случае?
    2. Данные считываются с OPC-сервера. Нужно их переслать в Modbus Slave.

    #7220
    manjey73
    Участник

    1. формула зависит от типа переменной, примеры с float были для Modbus с порядком байт 2301 на форуме. Значение в канал передаются в double, отсюда и пляшите.
    Какие вам байты надо переставить уже от оборудования зависит.
    2. Модуль автоматического управления теперь может выполнять каналы управления по изменению, так что пересылать теперь можно с использованием формул и через него.
    Все это в последней версии 5.3.0 scada. Пока еще пересылать не пробовал. надо будет панельку прикрутить для теста.

    #7221
    Komrade82
    Участник

    1. Использовал формулу с форума, переправленную на 1032 — пересылается верно.
    2. Т.е. в строковое значение бинарной команды вписать {CnlVal} и он его перешлёт? Остается только настроить триггер на регулярную посылку команд.

    #7223
    Komrade82
    Участник

    Сделал немного иначе — в команде пересылаю просто значение 1 а в формуле умножаю на Val(n). При посылке через генератор команд всё работает, а вот от модуля автоматического управления команды до коммуникатора не доходят.

    #7224
    Komrade82
    Участник

    Из лога модуля:
    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 |
    +—-+———————+—————————————————————+

    #7225
    Komrade82
    Участник

    И еще из лога сервера:
    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, ид. польз. = 2

    #7226
    Komrade82
    Участник

    А вот в общем логе коммуникатора есть ошибки:
    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, номер=2

    #7227
    Komrade82
    Участник

    Таким образом Модуль автоуправления при передаче канала управления не привязывает ни к какому КП? Проверил через генератор — в логе КП 13 и команда приходит.

    #7228
    manjey73
    Участник

    В модуле должна быть привязка к КП, может вы не проставили ?

    #7229
    Komrade82
    Участник

    В модуле при выборе КП обнуляется Канал управления и наоборот. Я уже проверил. Проблема в том, что модуль не берет потом с базы номер КП, к которому привязан канал управления, в отличие от генератора команд Сервера.

    #7231
    Mikhail
    Модератор

    Модуль может отправлять команды двумя способами:
    1. Напрямую КП. То есть Вы указываете номер КП и номер команды.
    2. Через канал управления. Тогда Вы указываете номер канала управления (и номер КП обнуляется в настройках команды).

    Полагаю, что у Вас не указано КП в базе конфигурации для канала управления. Нужно это сделать.

    Если очень часто отправлять команды через каналы управления, то лог Сервера будет неудобночитаемым. В этом случае лучше отправлять команды сразу на КП. Вы можете сделать дорасчётный канал, в котором поставить байты в нужном порядке. И сделать триггер на изменение этого канала.

    #7232
    Mikhail
    Модератор

    Только нужно взять новую версию модуля, в которой есть триггер на изменение.

    #7234
    manjey73
    Участник

    В некоторых случаях было бы удобно отправлять именно через канал управления, может стоит добавить настройку чтобы в лог не выводить ? или чтобы это был отдельный файл лога ?

Просмотр 15 сообщений - с 1 по 15 (из 18 всего)
  • Для ответа в этой теме необходимо авторизоваться.