PDA

Просмотр полной версии : Modbus Universal MasterOPC Server новый OPC сервер от компании ИнСАТ



Страницы : 1 2 [3] 4 5

Makc
07.04.2017, 11:32
Modbus Universal MasterOPC Server включен в работу (все нормально работает), но не видно обмена в поле "запросы".... как решить проблему?

SCADAMaster
07.04.2017, 12:14
А какой элемент выделяете? Попробуйте выделить узел.

Makc
10.04.2017, 03:54
А какой элемент выделяете? Попробуйте выделить узел.

При выделении коммуникационного узла, устройства, группы или тега во вкладке "запросы" обмен не отображается :(

SCADAMaster
10.04.2017, 08:23
При этом обмен идет? данные меняются?
Вы можете предоставить доступ к вашему компьютеру по TeamViewer?

Makc
10.04.2017, 09:04
Обмен идет, данные меняются, все работает, единственное не отображается обмен во вкладке "запросы". Предоставить доступ возможности к сожалению нет .

SCADAMaster
10.04.2017, 09:21
А на вкладке "Сообщения" что-то отображается?
Снимите тогда видео, для записи можно использовать
http://www.bbflashback.ru

OlegGEORG
15.04.2017, 10:00
Добрый день!
Подскажите, как реализовать следующее:
Необходимо из OPC-клиента включать реле в приборе. На каждое реле задействовать один тег в OPC сервере.
Использую скрипт для формирования команды на включение и выключение по нестандартному протоколу.
Делаю:
В устройстве устанавливаю период опроса 0 (включаю реле по команде из скада),
Тег - server-only, тип данных в сервере - bool, тип доступа - readwrite.
Как в скрипте перед записью определить команду от скады - true или false для
формирования соответствующих команд в прибор?

SCADAMaster
15.04.2017, 11:04
Функцией server.ReadCurrentTag - описание в справке

OlegGEORG
15.04.2017, 12:43
Спасибо, работает!

Makc
21.04.2017, 09:40
Добрый день! Подскажите как правильнее будет сделать. При наличии хотя бы одного тега с качеством BAD у устройства, изменялось значение тега. Необходимо функцией server.ReadTagByRelativeName опрашивать каждый тег ?

SCADAMaster
21.04.2017, 10:02
Либо так, либо функцией server.ReadTagByNumber( ).

energvk
21.04.2017, 10:04
Добрый день!
Не могу найти информацию, по тому, сколько можно подключить клиентов к ОПС-серверу.
Хочу попробовать такую схему:
30738

Знаю, что правильнее было бы это реализовывать через OPC UA клиенты с помощью tunneler. Но интересует возможность такой работы по приведенной выше схемы

SCADAMaster
21.04.2017, 10:15
Количество клиентов подключаемых к ОРС серверу не ограничено.

Makc
21.04.2017, 10:37
Извиняюсь, на нашем форуме есть тема с вопросами по скриптам insat OPC? (не смог найти)

SCADAMaster
21.04.2017, 10:52
Отдельные темы с конкретными вопросами есть.
Видеопримеры по работе со скриптами тут:
http://insat.ru/products/?category=2114

Makc
21.04.2017, 10:57
Есть функции читающие количество тегов, а функции возвращающей false если хотя бы 1 тег имеет статус BAD?

SCADAMaster
21.04.2017, 11:14
Такой функции нет.

Николай НВ
05.05.2017, 20:41
Добрый день !
Есть счётчик ПСЧ и пара модбас устройств , линия связи только одна.
Вариант1 - взять Modbus Universal MasterOPC Server реализовать протокол счётчика ПСЧ на скрипте.
А есть ещё варианты ?
вот есть Multi-Protocol MasterOPC Server с поддержкой драйвера счётчика ПСЧ, как-бы исхитриться и его задействовать...

SCADAMaster
06.05.2017, 09:52
Есть счётчик ПСЧ и пара модбас устройств , линия связи только одна.
Вариант1 - взять Modbus Universal MasterOPC Server реализовать протокол счётчика ПСЧ на скрипте.
А есть ещё варианты ?
/QUOTE]
Сделать две отдельных шины

[QUOTE=Николай НВ;246930]
вот есть Multi-Protocol MasterOPC Server с поддержкой драйвера счётчика ПСЧ, как-бы исхитриться и его задействовать...
Не получится. Когда добавляете порт он будет монопольно открыт одним драйвером, из того же скрипта в Multi-Protocol обратится не получится.

Василий353
01.06.2017, 12:09
Описание объекта:
Есть прибор с стандартным протоколом Modbus + счетчик с модбасоподобным протоколом (для его опороса был написан скрипт).
Все это опрашивается через один GPRS модем.

После запуска OPC все работает отлично.
Спустя день (2 дня) происходит сбой скрипта опроса счетчика. При этом второй прибор опрашивается без проблем (прямые теги).

Перезапуск OPC сервера решает проблему. Но спустя день ошибка повторяется.
Реинициализация узла не помогает.

Как перезапустить скрипт при ошибке без перезапуска программы?

В скрипте в функции Get_Register() формируется запрос к счетчику, выполняется байтстаффинг массива запроса и отправляется в счетчик функцией server.SendAndReceiveDataByMask.

Функция server.SendAndReceiveDataByMask возвращает ответ, производится байтстаффинг, проверка контрольной суммы, обработка результата и передача требуемой переменной.

Скрипт работает, но после некоторого количества запросов прекращается получение данных от счетчика.

При запросе 1 раз в секунду скрипт выдавал ошибку примерно через 20 часов работы, при запросе раз в минуту - около 3-х дней.

При запуске скрипта происходит следующее:

В локальный массив Array[] помещаются байты запроса, вычисляется контрольная сумма и выполняется байтстаффинг.

Посылается запрос счетчику массива Array без вычисления контрольной суммы с предполагаемой длиной ответа до 80 байт.

err,Otvet_0,Len_0=server.SendAndReceiveDataByMask( 0,Lenght,SendMask,Array,ReceiveMask,80);

Эта функция возвращает в локальный массив Otvet_0[] ответ счетчика, который далее обрабатывается.

В какой-то момент времени функция server.SendAndReceiveDataByMask не может передать данные переменной Otvet_0[] и генерирует ошибку.

При этом идет полноценный обмен данными между сервером и счетчиком, в окне OPC сервера "Запросы" отображаются отправленные и принятые байты.

Часто (раз в 100...150 запросов) появляется сообщение о неверной контрольной сумме, хотя все запросы и ответы одинаковы побайтно.

Что может быть с переменными Otvet_0[] и Len_0(длина ответа) ???

Они же локальные и должны инициализироваться заново при каждом запросе.

SCADAMaster
01.06.2017, 13:13
Мы вам ответили по почте.

za9c
05.07.2017, 10:23
Прошу помощи! Принимаю от прибора посылку.
05-07-2017 09:10:52.149 com-port:(COM4) Rx: [0039] 01 03 22

00 04 часовой срез

00 17

00 00 00 01 09 0F -------- секунды минуты час день месяц год

43 03 BA B4 ---------- 131.729 (float)dest[14]
43 EA 93 65 ---------- 469.152 dest[15]
43 AA 2C 0F ---------- 340.344 dest[16]
43 A5 73 0E ---------- 330.899 dest[17]
43 E9 11 B3 ---------- 466.138 dest[18]
43 D7 60 EA ---------- 430.757 dest[19]

BA 66 ----- СРС

инициализация маски принятой таблицы-

local destmask={"byte","byte","byte","byte","byte","byte","byte",
"byte","byte","byte","byte","byte","byte"
,"float:6:76543210"};
запрос приём передача - всё приходит правильно! Вывожу значения!

server.Message(" 14= ",dest[14]," 15= ",dest[15]," 16= ",dest[16]," 17= ",dest[17]
," 18= ",dest[18]," 19= ",dest[19])
и тут получается бред!
14 = 469.152 15= 340.344 16= 330.899 17=466.138 18=430.757 19=-0,000087

получается, что пропадает истинное значение dest[14] = 131.729, а на его место становится dest[15 ] и т.д.,
хотя байты с dest[1] по dest[13] соответствуют ответу!

подскажите пж-та, как решить данную проблему?
Добавлю - если вручную пересчитываю hex в float - всё правильно!

SCADAMaster
05.07.2017, 11:16
"float:6:76543210"};

Попробуйте float:6:3210

za9c
05.07.2017, 11:18
Попробуйте float:6:3210
Спасибо - помогло!

barton72
04.08.2017, 11:28
Есть просьба к вашим программистам по OPC Modbus серверу.

При работе с большим количеством переменных мы структурировали их в OPC сервере по объектам и
для автоматизации ввода применяем скрипт Excel, создающий csv файлы для импорта в OPC.

При структуре конфигурации по объектам, аналоговые переменные не сгруппированы в одном месте,
поэтому групповые операции не спасают от ручного ввода шкал (пересчет шкал сделан в OPC)
ввиду отсутствия реализации их импорта.

Имеется ли у Вас возможность в OPC Modbus Server добавить импорт шкал в мастер импорта ?
Думаю, при разработке больших проектов это был бы для многих полезный функционал.

SCADAMaster
04.08.2017, 12:37
Под пересчетом шкал вы имеете ввиду функцию пересчет?
В импорт ее пока не планируется вставлять. Однако в версии 4 мы добавили функцию изменения параметров пересчета шкал в групповых операций - это должно вам помочь
http://blog.insat.ru/2017/05/modbus-universal-masteropc-4.html

barton72
04.08.2017, 15:39
Да, имелась ввиду функция пересчет (Поля "Пересчет(А*Х+В)", "Коэффициент А", "Коэффициент В"). Имеем 4 OPC версию и про групповые операции знаем.
Жаль что этой функции не будет в импорте.

SCADAMaster
07.08.2017, 17:34
Мы исправили данную ошибку. Исправление будет в следующей (на следующей неделе).

SCADAMaster
21.08.2017, 19:20
Выложили - можете качать.

SCADAMaster
22.08.2017, 08:45
Да, не туда выложили - скачайте снова.
В продажу версия внесена

AlexF
13.09.2017, 07:53
Да, не туда выложили - скачайте снова.
В продажу версия внесена
Здравствуйте.
А как вообще оперативно узнавать о выходе новых версий ?
У нас куплен OPC сервер и MasterSCADA, и действующая тех. поддрежка.
С уважением Александр.

SCADAMaster
13.09.2017, 12:12
Здравствуйте.
А как вообще оперативно узнавать о выходе новых версий ?
У нас куплен OPC сервер и MasterSCADA, и действующая тех. поддрежка.
С уважением Александр.

В первую очередь всё публикуется на сайте http://insat.ru/ в разделе новости.
Так же информация будет появляться в блоге http://blog.insat.ru/

AlexF
13.09.2017, 16:47
В первую очередь всё публикуется на сайте http://insat.ru/ в разделе новости.
Так же информация будет появляться в блоге http://blog.insat.ru/Посмотрел по указанным ссылка, там только майская информация о новой (4-ой) версии OPC сервера. А о том что уже 4.0.6 версию выпустили в которой исправляли ошибки ни полслова. И где получать информацию об обновлении ПО ?

SCADAMaster
13.09.2017, 16:57
Такая информация отдельное не публикуется.

AnatoliyF
05.10.2017, 19:03
Здравствуйте!
Постановка задачи: читать данные с регистратора ЭЛЕМЕР, засылать эти данные в quantum. Связать их физически нет возможности.
Решение: регистратор сконфигурирован на чтение, ПЛК - на чтение-запись. Каждому тегу читаемому с регистратора(float), присвоен соответствующий тег в узле ПЛК(float). При попытке чтения тега ПЛК вызывается скрипт (onRead) (c названиями APIшных функций могу сейчас напутать, проект не под рукой):
t,q,s = ReadTagByName("someTag");
local w = {};
w[1] = t;
server.modbus.writeAnalog(arg1,arg2,arg3,arg4,w);

В итоге все работает часов этак 5 (пишется 9 тегов, опрос раз в секунду), и здорово работает.
А потом OPC виснет, сообщение скриптов пишет "c stack overflow", а сам OPC выдает окно о неудавшейся попытке обратиться к ХХХХХХХХХХХХХХХХХХ очень длинному адресу)))
Пробовал в одном из девяти скриптов запускать сборку мусора, ничего не дало.
Объясните, пожалуйста, где я тут накособочил)

SCADAMaster
06.10.2017, 08:41
Во первых ОРС сервер нужно обновить до текущей версии.
Если не поможет, то выложите конфигурацию.

Kostya Egorov
17.10.2017, 02:44
Здравствуйте!
Задача следующая необходимо опросить ТРМ 132 м, а именно тег Режим работы (Адрес{166...173}, тип string). Остальные теги опрашиваются корректно.
Опрос проходит нормально качество GOOD, но вместо показания НАГРЕВ ГВС приходит АНРГВЕГ СВ.
Побывал различные чередования вообще нечего не меняется.
Есть какой нибудь способ решения проблемы заранее спасибо!!!

SCADAMaster
17.10.2017, 08:52
В ОРС сервере чередование байт не влияет на строки - они выводят в том порядке, в каком приходят из ОРС сервера.
Единственный вариант - это менять чередование из скрипта.

MaxDD
18.10.2017, 14:59
Подскажите, пожалуйста, настройки MasterOPC Universal Server (TCP/IP) при плохой соствой связи.
Чем отличается "время ожидания соединения" от "время ответа" ?

Очень часто в признаках качества тэгов появляется "BAD", и в сообщениях сыпятся ошибки:
-ошибка выполнения команды 3 in device...
-включен таймаут ошибки запроса...
-ошибка опроса устройства

Хотел почитать об этих настройках в справке OPC, но не нашел такого.
какие настройки попробовать менять? Зависят ли они друг от друга?
-время ожидания соединения (с)
-время ответа (мс)
-повторное соединение после ошибки через (с)
-период опроса

Спасибо

SCADAMaster
18.10.2017, 15:09
Чем отличается "время ожидания соединения" от "время ответа" ?

При работе по TCP сначала идет открытие соединения - вот это и есть время которое сервер ждет ответа от устройства, что соединение установлено.
Время ответа - это время ожидания ответа после запроса.



Хотел почитать об этих настройках в справке OPC, но не нашел такого.
какие настройки попробовать менять? Зависят ли они друг от друга?
-время ожидания соединения (с)
-время ответа (мс)
-повторное соединение после ошибки через (с)
-период опроса

Все настройки описаны в справке. Вызывайте F1 у тега, устройства или узла - будет описание.
Вам можно еще попробовать обновится до текущей версии и изменить параметр узла "Межсимвольный таймаут" - это время для "склейки" пакетов, если они рвутся.
Ну и увеличивать время ожидания ответа.
Смотрите логи - что происходит на шине.

MaxDD
18.10.2017, 16:34
Перебираю задержки - ситуация значительно улучшилась. Спасибо.

Makc
19.10.2017, 09:35
Доброго времени суток! Кто нибудь пробовал описывать в Modbus Universal MasterOPC Server запросы по протоколу FC фирмы Danfoss(преобразователи частоты)?

RV9WFJ
20.10.2017, 08:05
Накой лад, если там в настройках можно протокол на ModBus поменять?

Terminat
25.10.2017, 12:18
Свежескачанный Modbus Universal MasterOPC Server (trial-версия) при запуске сообщает: "запуск программы невозможен, так как на компьютере отсутствует mosquitto.dll" и работать отказывается.

SCADAMaster
26.10.2017, 08:59
Скачайте еще раз - была ошибка, она уже исправлена.

Ded Trava
30.10.2017, 11:49
Добрый день!

В ближайшее время собираемся купить данный орс сервер. Будет считывать данные с приборов РМТ-59 (температура, давление, расход и тд.). Точек будет более 500. Как записывать считанные данные в SqLite разобрались. SCADA системы не будет. Необходимо выводить суточные отчеты по показаниям в файл excel.
Подскажите, пожалуйста, есть ли возможность подключения внешней СУБД , к примеру, того же MS Access и записывать
данные напрямую туда (с примером скрипта было бы здорово), тк обрабатывать проще, мозгов на другое не хватает. Пример импорта данных SqLite -> MS Access известен, правда еще не опробован в работе при стольких точках.

SCADAMaster
30.10.2017, 12:44
Подскажите, пожалуйста, есть ли возможность подключения внешней СУБД , к примеру, того же MS Access и записывать

http://blog.insat.ru/2017/09/odbc.html

Ded Trava
30.10.2017, 13:04
http://blog.insat.ru/2017/09/odbc.html

Спасибо!)
Будем пробовать.

Тюников Андрей
07.11.2017, 20:09
Добрый вечер.
SCADAMaster - скажите пожалуйста как с помощью MasterOPCсчитать с устройства INPUT регистры?
То есть в одном устройстве необходимо считывать регистры и функцией 04 и функцией 03.
Спасибо

Забыл добавить - протокол - MODBUS TCP - строки "Регион" в свойствах ТЭГа нет ...

Разобрался - редактировать нельзя, необходимо заново создавать тег

SCADAMaster
08.11.2017, 09:40
Добрый вечер.
SCADAMaster - скажите пожалуйста как с помощью MasterOPCсчитать с устройства INPUT регистры?
То есть в одном устройстве необходимо считывать регистры и функцией 04 и функцией 03.
Спасибо

Забыл добавить - протокол - MODBUS TCP - строки "Регион" в свойствах ТЭГа нет ...
Ну как это нет:

МСВ
09.11.2017, 06:56
Здравствуйте. Подключаем ТРМ138. Овеновский конфигуратор видит. Запускаю Инсатовский MasterOPC Universal Modbus Server (новый) или старый, который версии 3, импортирую прибор из библиотеки устанавливающийся вместе с Модбасом, запускаю, и
Node1.ТРМ138[1]:Ошибка опроса устройства
Node1.ТРМ138[1]:Включен таймаут ошибки запроса 1
ТРМ138[1]:Ошибка выполнения команды 4 в устройстве 16 от ТРМ138[1]:INPUT_REGISTERS
Node1.ТРМ138[1]:Старт опроса устройства

SCADAMaster
09.11.2017, 09:14
Посмотрите что происходит на вкладке "Запросы" - возможно прибор не отвечает.
В ОВЕНе, если меняете сетевые настройки, то прибор нужно перезагружать (выключить и включить).

МСВ
10.11.2017, 01:30
Посмотрите что происходит на вкладке "Запросы" - возможно прибор не отвечает.

Настройки не меняю. После Конфигуратора Овен, сразу захожу в Modbus. Вот что на вкладке Запросы.
10-11-2017 08:28:56.625 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 03 00 02 87 7A
10-11-2017 08:28:55.578 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 03 00 02 87 7A
10-11-2017 08:28:54.531 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 03 00 02 87 7A
10-11-2017 08:28:43.109 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 03 00 02 87 7A
10-11-2017 08:28:42.062 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 03 00 02 87 7A
10-11-2017 08:28:41.015 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 03 00 02 87 7A
10-11-2017 08:28:29.578 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 03 00 02 87 7A
10-11-2017 08:28:28.531 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 03 00 02 87 7A
10-11-2017 08:28:27.484 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 03 00 02 87 7A
PS: Хм.... после очередной перезагрузки прибора ТРМ 138, опрос пошел. Теперь боюсь его выключать... Прибор кстати 2012-го года выпуска. А старые Овены очень капризные(((.
10-11-2017 08:42:37.500 Node1::ТРМ138[1]:(COM3) Rx: [0009] 20 04 04 00 00 00 00 CA 86
10-11-2017 08:42:37.468 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 26 00 02 96 B1
10-11-2017 08:42:37.453 Node1::ТРМ138[1]:(COM3) Rx: [0009] 20 04 04 00 00 00 00 CA 86
10-11-2017 08:42:37.421 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 21 00 02 27 70
10-11-2017 08:42:37.421 Node1::ТРМ138[1]:(COM3) Rx: [0009] 20 04 04 00 00 00 00 CA 86
10-11-2017 08:42:37.390 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 1C 00 02 B6 BC
10-11-2017 08:42:37.375 Node1::ТРМ138[1]:(COM3) Rx: [0009] 20 04 04 00 00 00 00 CA 86
10-11-2017 08:42:37.343 Node1::ТРМ138[1]:(COM3) Tx: [0008] 20 04 00 17 00 02 C7 7E

МСВ
10.11.2017, 02:34
Подозрение, что протокол, некорректно переключался...
PS: Теперь такая же история с ТРМ202...

PPS: Перегрузил три раза ТРМку, заработал. Изготовлен в 17-м году. Думал новые приборы лучше себя ведут...

SCADAMaster
10.11.2017, 08:51
ОВЕНы всегда нужно перезагружать после смены протокола или подключения конфигуратором.

МСВ
10.11.2017, 09:28
ОВЕНы всегда нужно перезагружать после смены протокола или подключения конфигуратором.
Ну не три раза же.
А в смысле после после подключения конфигуратором? Даже если ничего не менял?

SCADAMaster
10.11.2017, 09:35
Да, даже если ничего не меняли.

bltek
01.12.2017, 11:38
Здравствуйте, возникла следующая проблема: Modbus MasterOPC на 2500 тегов не проходит опрос с ПЛК-110-60 Р.М (новая линейка), выдает ошибку опроса. Перепроверил уже и присвоение адресов переменных, регионов, адресов ПЛК и компьютера. Результатов не дало. С работы не имею возможности сделать скрины и отправить, поэтому собрал сам простой проект на ПЛК-110 и демо-версии modbus masteropc, чтобы исключить неисправность ПЛК или OPC сервера, но возникли те же проблемы (пинг есть, соединение соответственно тоже устанавливается, но ошибка опроса). Прилагаю скрины и лог файл внадежде, что вы оперативно поможете, ибо сроки поджимают.

http://dropmefiles.com/kdGJU

SCADAMaster
01.12.2017, 11:46
Выключите настройку "Modbus поверх TCP".

Aleksandr_P
07.12.2017, 10:19
здравствуйте! подскажите пожалуйста по следующей проблеме: настроили удаленное соединение ПЛК160М и MasterOPC . Со стороны MasterOPC соединение через маршрутизатор с выходом в интернет, со стороны ПЛК проводом к серверной. соединение отличное, НО с неодинаковой периодичностью пропадает связь, качество связи переходит с GOOD на BED и соединеие не реинициализируется (хотя в настройках эта функция TRUE). помогает только перезапуск исполнительного режима сервера. подскажите в чем могут быть проблемы? какие настройки возможно помогут исправить проблему?

SCADAMaster
07.12.2017, 10:30
Какая версия ОРС сервера? ПОпробуйте обновится до текущей 4.2.3. Была ошибка при которой при пропадании связи по TCP связь не восстанавливалась.

oleg1821
07.12.2017, 10:35
Добрый день, MasterOPC версия 4.2.3 запускается как приложение и не выгружается при остановке masterscada. Как решить эту проблему.

Aleksandr_P
07.12.2017, 10:41
Какая версия ОРС сервера? ПОпробуйте обновится до текущей 4.2.3. Была ошибка при которой при пропадании связи по TCP связь не восстанавливалась.
Версия 4.1.1.
А возможно ли устранить пропадание связи или как то минимизировать их, сейчас пропадание порядка 15 раз за рабочий день

SCADAMaster
07.12.2017, 11:36
Пропадание связи это уже какая то проблема на стороне оборудования.
Сначала обновитесь до текущей.

SCADAMaster
07.12.2017, 11:37
Добрый день, MasterOPC версия 4.2.3 запускается как приложение и не выгружается при остановке masterscada. Как решить эту проблему.
У вас ключевая версия?
ОРС запускает сам при старте MasterSCADA?

Aleksandr_P
08.12.2017, 08:28
Подскажите в чем проблема: MasterOPC пишет в узле требуемый адрес для своего контекста неверен. Подключение через TCP/IP.
В режиме мастера сервер вообще не подключается, в режиме слейв пишет данное сообщение

SCADAMaster
08.12.2017, 09:12
Пришлите лог обмена с устройством. Для этого в свойствах сервера включите запись журнала и всех его событий, размер лога задайте равным 10000. Запустите режим исполнения и воспроизведите ошибку. Лог пишется в папку:
c:\ProgramData\InSAT\MasterOPC Universal Modbus Server\SERVERLOGS\
Лог заархивируйте и вышлите нам, также пришлите вашу конфигурацию ОРС сервера.

oleg1821
08.12.2017, 09:37
У вас ключевая версия?
ОРС запускает сам при старте MasterSCADA?
Проверяю пока на демо версии при запуске мастерскады загружается но не запускется, для демо версий надо запускать вручную? Версию на 32 тега тоже?

Aleksandr_P
08.12.2017, 10:10
Высылаю лог и конфигурацию ОПС сервера.

SCADAMaster
08.12.2017, 10:21
Проверяю пока на демо версии при запуске мастерскады загружается но не запускется, для демо версий надо запускать вручную? Версию на 32 тега тоже?
Для Trial версии нужно запускать вручную, и останавливать также. Это детально описано на сайте:
http://insat.ru/products/?category=1666

SCADAMaster
08.12.2017, 10:22
Высылаю лог и конфигурацию ОПС сервера.
У вас похоже просто такого IP адреса нет на компьютере.
Вам нужно указать IP адрес локальной машины - задайте просто 127.0.0.1

SCADAMaster
08.12.2017, 10:23
Подскажите в чем проблема: MasterOPC пишет в узле требуемый адрес для своего контекста неверен. Подключение через TCP/IP.
В режиме мастера сервер вообще не подключается, в режиме слейв пишет данное сообщение
Так а вам в каком режиме нужно работать? К чему вы подключаетесь, и кто мастер?

Aleksandr_P
08.12.2017, 10:42
ПЛК 110-30 выступает в роли мастера, через маршрутизатор tp-link подключается к панели СП310(slave) и к маршрутизатору мы подключаемся ОПС сервером.
IP контроллера: 192.168.0.10
IP панели: 192.168.0.12
IP маршрутизатора: 192.168.0.1 (переброс портов настроен посредством DMZ)
Поменяли IP ПЛК на 127.0.0.1, но в этом случае копьютер не даёт указать IP в той же подсети.

Пробовали подключить ПЛК и компьютер напрямую через ethernet, на ОПС сервере выдавало ту же ошибку.
При этом CoDeSys подключается к ПЛК как через маршрутизатор так и напрямую

SCADAMaster
08.12.2017, 10:46
Поменяли IP ПЛК на 127.0.0.1, но в этом случае копьютер не даёт указать IP в той же подсети.

Что значит в той же подсети? Если вы зададите 127.0.0.1 то он будет ловить все пакеты приходящие на 502 порт из всех подсетей.
А зачем вообще такая чудная схема? Почему нельзя настроить ПЛК как Slave и опрашивать его? По TCP ведь можно комбинировать разные варианты Slave и Master.

Aleksandr_P
08.12.2017, 11:14
Схема нужна чтоб между собой общались плк и панель оператора, а подключаться к ПЛК можно было через wi-fi, без каких либо проводов!
При задании в ОПС сервере IP 127.0.0.1 в логе пишет что соединение установлено, но опрос не производится, для аналоговых сигналов значение 0 показывает, хотя на самом деле по данному адресу приходит число отличное от нуля, которое вы видим на панели

SCADAMaster
08.12.2017, 11:36
Схема нужна чтоб между собой общались плк и панель оператора, а подключаться к ПЛК можно было через wi-fi, без каких либо проводов!

И что? Как это противоречит?
Пусть они общаются между собой в таком же режиме как и раньше, а для ОРС добавьте модуль Modbus (Slave) и настройте его подключение по этой инструкции:
http://www.insat.ru/products/Universal_MasterOPC/OPC_To_Owen_PLC_1xx.pdf



При задании в ОПС сервере IP 127.0.0.1 в логе пишет что соединение установлено, но опрос не производится, для аналоговых сигналов значение 0 показывает, хотя на самом деле по данному адресу приходит число отличное от нуля, которое вы видим на панели
То есть ваш контроллер посылает запросы записи по IP адресу ОРС сервера?

Aleksandr_P
19.01.2018, 12:03
здравствуйте, при работе с сервером MasterOPC вылезла такая ошибка, подскажите что значит: "Ошибка выполнения команды 1 in device 16"?
это ругается на переменные типа COILS.
версия сервера последняя.

SCADAMaster
19.01.2018, 12:18
Это означает что запрос не был выполнен - устройство не ответило, или ответило с ошибкой.

Aleksandr_P
19.01.2018, 12:22
спасибо!
а подскажите еще пожалуйста возможно ли подключение к контроллеру ОВЕН ПЛК 110_30 с двух разных ОПС серверов MasterOPC, обращаясь на разные ModBus адреса(к примеру на адреса 15 и 16)

SCADAMaster
19.01.2018, 12:43
По RS-485? Нет - так нельзя. Два мастера будет.
Может лучше по Ethernet?

Aleksandr_P
19.01.2018, 13:00
а как по Ethernet? какие параметры указывать в ПЛК и в ОПС сервере?

Aleksandr_P
19.01.2018, 13:13
как вообще организовать slave подключение ОПС сервера, подскажите пожалуйста

SCADAMaster
19.01.2018, 13:14
Посмотрите вот эту документацию:
http://insat.ru/products/Universal_MasterOPC/OPC_To_Owen_PLC_1xx.pdf

И зачем Slave? Работает как мастер

Aleksandr_P
19.01.2018, 13:33
нам требуется один ПЛК опрашивать 2 разными ОПС серверами с разных мест, но к сожалению 2 мастера нельзя одновременно. поэтому и возник вопрос, можно ли подключить ОПС сервером в режиме slave

SCADAMaster
19.01.2018, 13:47
нам требуется один ПЛК опрашивать 2 разными ОПС серверами с разных мест, но к сожалению 2 мастера нельзя одновременно. поэтому и возник вопрос, можно ли подключить ОПС сервером в режиме slave
Если работать по Modbus TCP то можно.
Только добавить 2 TCP порта в PLC Configuration

Aleksandr_P
24.01.2018, 07:22
Здравствуйте! подскажите пожалуйста как в MasterSCADA убрать всплывающее окно "управление из окна оператора" к примеру на насосе

SCADAMaster
24.01.2018, 08:59
Вы имеете ввиду окно управления? Его отключить нельзя. Можно перекрыть сверху прозрачной кнопкой - зона выбора у события, или вытащить объект на мнемосхему и сделать кнопку прозрачной.

daniel23
26.01.2018, 10:42
Здравствуйте, отправляю прибору ТЭМ 106 запрос, чтобы получить в ответ серийный номер прибора. Получаю ответ в виде десятичного числа в размере 1 байта "-121". Но ответ должен быть в размере 4 байт "1256069". Подскажите, как получить правильный ответ?
local sendMask = {"byte", "byte", "byte", "byte", "byte", "byte", "byte", "byte", "byte", "byte"};
local destMask ={};
send = {0x55, 0x01, 0xFE, 0x0F, 0x01, 0x03, 0x01, 0x52, 0x04, CS};
RES, dest, LEN = server.SendAndReceiveDataByMask(0, #send, sendMask, send, destMask, 200);
TV = dest[LEN-1];
server.WriteCurrentTag(TV, OPC_QUALITY_GOOD);

SCADAMaster
26.01.2018, 11:30
Почему у вас не задана маска приемного буфера?
Посмотрите документацию:
http://insat.ru/products/Universal_MasterOPC/MU_MasterOPC_Server_API_UG.pdf

daniel23
26.01.2018, 11:36
Да, здесь я допустил ошибку. Сделал вот так local destMask ={"byte", "byte", "byte", "byte", "byte", "byte", "int32", "int32", "int32", "int32", "byte" };
Прибор выдает значение 713359379 в десятичном виде, перевел в шестнадцатеричный и получилось 2A850013, но должно быть 00132A85, чтобы получить правильный серийный номер. Получается неправильный порядок. Как исправить?

SCADAMaster
26.01.2018, 12:09
Для этого для типов int32 и других задается чередование байт. Посмотрите документацию на которую мы указали

daniel23
26.01.2018, 14:19
Спасибо, это получилось. Теперь отправляю запрос на получение текущего времени. Прибор присылает ответ в виде десятичного числа, а нужно, чтобы присылал в шестнадцатеричном. Это с помощью tonumber делается?

SCADAMaster
26.01.2018, 14:45
Не совсем понятно. На выходе вы получаете число в десятичной системе, вам нужно перевести в HEX? Зачем?

daniel23
26.01.2018, 14:53
Потому что в описании к прибору написано Пример:цепочка шестнадцатеричных значений 33 15 14 02 03 16 расшифровывается как 14 ч. 15 мин. 33 сек. 2 марта 2016 года;
Я проверял присланные десятичные значения и переводил в HEX, они совпадают, но не в нужном виде отображаются

SCADAMaster
26.01.2018, 15:16
Вам получается итогом нужно преобразовать в строку?
Тогда используйте string.format ("%02X",Значение);

daniel23
26.01.2018, 15:35
Все верно, спасибо

daniel23
29.01.2018, 11:33
Добрый день. Есть ли возможность посылать групповые запросы? Например при получении с прибора текущего времени (секунды) есть задержка 10-20 сек. Можно ли сделать так, чтобы ответ получать каждую секунду? Также бывает такое, что прибор отправляет несколько запросов и лишь затем получает ответ.
29-01-2018 11:31:38.950 TESMA_PORT::TESMA_106:(COM3) Rx: [0011] AA 01 FE 0F 01 04 00 13 2A 85 80
29-01-2018 11:31:38.215 TESMA_PORT::TESMA_106:(COM3) Tx: [0010] 55 01 FE 0F 01 03 01 52 04 41
29-01-2018 11:31:37.200 TESMA_PORT::TESMA_106:(COM3) Tx: [0010] 55 01 FE 0F 01 03 01 52 04 41
29-01-2018 11:31:36.200 TESMA_PORT::TESMA_106:(COM3) Tx: [0010] 55 01 FE 0F 01 03 01 52 04 41

capzap
29.01.2018, 11:45
прибор отправляет несколько запросов и лишь затем получает ответ.
29-01-2018 11:31:38.950 TESMA_PORT::TESMA_106:(COM3) Rx: [0011] AA 01 FE 0F 01 04 00 13 2A 85 80
29-01-2018 11:31:38.215 TESMA_PORT::TESMA_106:(COM3) Tx: [0010] 55 01 FE 0F 01 03 01 52 04 41
29-01-2018 11:31:37.200 TESMA_PORT::TESMA_106:(COM3) Tx: [0010] 55 01 FE 0F 01 03 01 52 04 41
29-01-2018 11:31:36.200 TESMA_PORT::TESMA_106:(COM3) Tx: [0010] 55 01 FE 0F 01 03 01 52 04 41

помоему всё очевидно, у Вас время таймаута стоит одна секунда, а в слейве какая то путаница с настройками

daniel23
29.01.2018, 12:16
помоему всё очевидно, у Вас время таймаута стоит одна секунда, а в слейве какая то путаница с настройками

Имеете ввиду настройки в устройстве? Время ответа тоже 1 сек.

SCADAMaster
29.01.2018, 13:32
Добрый день. Есть ли возможность посылать групповые запросы? Например при получении с прибора текущего времени (секунды) есть задержка 10-20 сек. Можно ли сделать так, чтобы ответ получать каждую секунду? Также бывает такое, что прибор отправляет несколько запросов и лишь затем получает ответ.
29-01-2018 11:31:38.950 TESMA_PORT::TESMA_106:(COM3) Rx: [0011] AA 01 FE 0F 01 04 00 13 2A 85 80
29-01-2018 11:31:38.215 TESMA_PORT::TESMA_106:(COM3) Tx: [0010] 55 01 FE 0F 01 03 01 52 04 41
29-01-2018 11:31:37.200 TESMA_PORT::TESMA_106:(COM3) Tx: [0010] 55 01 FE 0F 01 03 01 52 04 41
29-01-2018 11:31:36.200 TESMA_PORT::TESMA_106:(COM3) Tx: [0010] 55 01 FE 0F 01 03 01 52 04 41
Ну если у вас устройство отвечает с такой задержкой, то что сервер тут сделает?
И да, почему то у вас неправильный адрес в отчете. Дожлен быть такой же как в запросе.

daniel23
29.01.2018, 14:17
Дело в том, что если менять параметр Межсимвольный таймаут (было 1000 мс, поставил 100), то задержка снижается до 4-10 сек. Адрес в отчете правильный, т.к. к описанию протокола к устройству в примере он такой же.

SCADAMaster
29.01.2018, 14:55
Адрес в отчете правильный, т.к. к описанию протокола к устройству в примере он такой же.
Тогда это не Modbus.
В Modbus в ответе обязательно содержится адрес опрашиваемого устройства, и функция которой был выполнен опрос.

Рома_
30.01.2018, 13:02
Добрый день.
Имеется задача: забрать данные по OPC и записать в ПЛК по Modbus. Возможно ли для этого использовать ваш сервер?

SCADAMaster
30.01.2018, 13:32
То есть взять из стороннего ОРС и запихать в Modbus?
Можно, но со скриптами.
Потребуется MPS с плагином DA Client и Modbus Universal. В MPS, в плагине Script (можно в бесплатной редакции) читаете значения из вашего DA сервера, и записываете в наш Modbus сервер

Рома_
30.01.2018, 14:30
Спасибо, MPS это Multi-Protocol MasterOPC server?

SCADAMaster
30.01.2018, 15:06
Да
https://insat.ru/products/?category=1666

Рома_
30.01.2018, 16:36
То есть взять из стороннего ОРС и запихать в Modbus?
Потребуется MPS с плагином DA Client и Modbus Universal. В MPS, в плагине Script (можно в бесплатной редакции) читаете значения из вашего DA сервера, и записываете в наш Modbus сервер

По OPC данные получили. В MPS ModBus не наблюдаем. Что вы имеете в виду под " в плагине Script ... записываете в наш Modbus сервер"?

Еще вопрос, в случае успешной реализации, возможно ли как то совместить MPS с уже купленным нами Modbus Universal MasterOPC Server?

SCADAMaster
30.01.2018, 16:57
В MPS ModBus не наблюдаем.

Его там и нет. Есть плагин DA Client которым нужно получить данные из вашего сервера, и получить (и записать) данные в наш Modbus



Еще вопрос, в случае успешной реализации, возможно ли как то совместить MPS с уже купленным нами Modbus Universal MasterOPC Server?
Да.

Рома_
31.01.2018, 11:22
Сообщение от Рома_:
Еще вопрос, в случае успешной реализации, возможно ли как то совместить MPS с уже купленным нами Modbus Universal MasterOPC Server?

Да.

Т.е. нужно устанавливать обе версии сервера (мульти и юниверсал) или можно "вшить" "плагин" OPCDA_client в купленный нами Modbus Universal Master OPC сервер

SCADAMaster
31.01.2018, 11:57
Нужно установить оба ОРС сервера.

daniel23
01.02.2018, 16:41
А есть ли возможность в MPS при выполнении 1 запроса считывать несколько данных(скорее всего скрипт на уровне устройства), чтобы опрос устройства происходил быстрее. А потом уже в тегах выбирать какие именно данные необходимо отобразить. Например считывать память, которая имеет размер 2К байт. Устройство позволяет считывать до 64 байт за 1 запрос. Т.е. нужно выполнить 31 запрос для полного считывания памяти.

SCADAMaster
01.02.2018, 16:56
Про какой протокол идет речь?
Или вы про скрипты? В скриптах запрашивайте как хотите.

daniel23
06.02.2018, 08:59
У прибора свой протокол. В MPS есть ограничение на количество байт в значении тега, а именно в 4 байта? Например делается запрос для получения в TV 6 или 8 байт, но получают ответ только 2 байта. Если же делать запрос на 4 байта, то получаю ответ в 4 байта. Может я что-то делаю не так? Запрос делают так local destMask = {"byte", "byte", "byte", "byte", "byte", "byte", "int64:6:543210", "byte"}; send = {0x55, 0x01, 0xFE, 0x0F, 0x01, 0x03, 0x04, 0x82, 0x06, CS}; TV = string.format ("%02X",dest[LEN-1]);

SCADAMaster
06.02.2018, 09:20
Типа int64 у нас нет.
Вы можете запрашивать как int32 значения, а потом их объединять на верхнем уровне или передавать как строку.

daniel23
06.02.2018, 10:45
Типа int64 у нас нет.
Вы можете запрашивать как int32 значения, а потом их объединять на верхнем уровне или передавать как строку.

Т.е. сделать 2 запроса на 4 и 2 байта соответственно. И объединить их перед выводом в значение тега?

SCADAMaster
06.02.2018, 10:55
можно и в одном запросе. Просто указываете тип - int32, а количество элементов - в два раза больше.
Объеденить их потом можно, но только если в строку, так как тега типа int64 в ОРС сервере нет.

daniel23
06.02.2018, 11:10
Дело в том, что какое бы количество элементов не указывал int32:4:3210 или int32:6:543210 результат в теге не меняется
Когда local destMask = {"byte", "byte", "byte", "byte", "byte", "byte", "int32:4:3210", "byte"};
send = {0x55, 0x01, 0xFE, 0x0F, 0x01, 0x03, 0x04, 0x82, 0x04};
Результат 4 байта
когда local destMask = {"byte", "byte", "byte", "byte", "byte", "byte", "int32:6:543210", "byte"};
send = {0x55, 0x01, 0xFE, 0x0F, 0x01, 0x03, 0x04, 0x82, 0x06};
Результат 2 байта

SCADAMaster
06.02.2018, 11:22
Приложите вашу конфигурацию (оставьте в ней только то, что связано с вашим скриптом), а также лог. Для этого в свойствах сервера включите запись журнала и всех его событий, размер лога задайте равным 10000. Запустите режим исполнения и воспроизведите ошибку. Лог пишется в папку:
c:\ProgramData\InSAT\MasterOPC Universal Modbus Server\SERVERLOGS\
Лог заархивируйте и вышлите нам вместе с конфигурацией.

daniel23
06.02.2018, 11:49
Ошибок так то нет, но вот значения не меняются при изменении int32:4 на int32:6. Это странно

SCADAMaster
06.02.2018, 12:01
А какие значения не меняются?
Что это такое:
"int32:12:1110976543210"
12 переменных типа int32 у вас в ответе нет. А чередование байт вообще не пойми что
Посмотрите внимательно документацию.

daniel23
06.02.2018, 14:28
Я должен принять 6 переменных по 1 байту, сначала поставил 6, потом

а количество элементов - в два раза больше.
поставил 12, видимо не так?
Чередование делал еще таким для 6 байтов - 210543

SCADAMaster
06.02.2018, 14:37
Я должен принять 6 переменных по 1 байту, сначала поставил 6, потом

int32 - это 4 байтовая переменная. Если вы сделаете прием 12 переменных по 4 байта, это сколько байт будет?

daniel23
06.02.2018, 15:26
Я вас понял, спасибо. Делаю так local destMask = {"byte", "byte", "byte", "byte", "byte", "byte", "int16:3:10", "byte"}; и так local destMask = {"byte", "byte", "byte", "byte", "byte", "byte", "int16:1:10", "int32:1:3210", "byte"}; Но в ответе не получаю 6 байт

SCADAMaster
06.02.2018, 15:39
В каком ответе? От устройства?
Потом то что вы с полученным ответом делаете?

daniel23
06.02.2018, 15:51
Да, от устройства. Ответ записывается в тег TV = string.format ("%02X", dest[LEN-1]); Вообщем я пытаюсь время и дату вывести в одном теге, а не в 6.

SCADAMaster
06.02.2018, 16:07
И что у вас возвращается? Почему вы ожидаете 6 байт? У вас вернется значение числа int32.
Лучше сначала просто вывести в server.Message результат всех элементов таблицы dest

daniel23
06.02.2018, 16:48
Когда маска ответа local destMask = {"byte", "byte", "byte", "byte", "byte", "byte", "int16:3:10", "byte"} ответ 218 (номер месяца, год)
Когда маска ответа local destMask = {"byte", "byte", "byte", "byte", "byte", "byte", "int16:1:10", "int32:1:3210", "byte"} ответ 16060218(час, число месяца, номер месяца, год)
При такой маске ответа local destMask = {"byte", "byte", "byte", "byte", "byte", "byte", "int16:1:10", "int32:1:3210", "byte"} вывел через server.Message сначала все элементы dest, затем оставил только нужные
dest7 = string.format("%02X", dest[7]);
dest8 = string.format("%02X", dest[8]);
server.Message ("dest:", " ", dest7, dest8);
получилось так
06-02-2018 16:46:14.191 TESMA_PORT.TESMA_106.TimerMemory.Tag1:dest: 502416060218 (сек, мин, часы, день, месяц, год)
Как все эти числа теперь вывести в тег?

SCADAMaster
06.02.2018, 16:58
Как вариант - получить год, месяц день и прочее, собрать из этого время (есть специальные функции) преобразовать в строку и запихнуть в тег.

daniel23
07.02.2018, 15:41
Как вариант - получить год, месяц день и прочее, собрать из этого время (есть специальные функции) преобразовать в строку и запихнуть в тег.

Можете подсказать, какая именно функция собирает из байтов время? Пробовал time.PackTime, но видимо использую не ту функцию

Даже из примера err,timesec = time.PackTime(2012,5,3,12,31,45);
ответ
07-02-2018 16:37:00.031 TESMA_PORT.TESMA_106.Group1.TIME:time: 1336037505 err: 0
а не 201253123145

Александер2008
07.02.2018, 15:45
Добрый день!
Можно ли изменить приоритет в протоколе Bacnet?
сейчас только 16 идет...

SCADAMaster
07.02.2018, 17:48
Добрый день!
Можно ли изменить приоритет в протоколе Bacnet?
сейчас только 16 идет...
Про какой приоритет идет речь? Опишите подробнее

SCADAMaster
07.02.2018, 17:49
Можете подсказать, какая именно функция собирает из байтов время? Пробовал time.PackTime, но видимо использую не ту функцию

Даже из примера err,timesec = time.PackTime(2012,5,3,12,31,45);
ответ
07-02-2018 16:37:00.031 TESMA_PORT.TESMA_106.Group1.TIME:time: 1336037505 err: 0
а не 201253123145
Именно PackTime и собирает. Только потом нужно ее преобразовать в TimeStamp (TimeToTimeStamp), а потом в строку (TimeStampToString).

daniel23
08.02.2018, 09:34
Именно PackTime и собирает. Только потом нужно ее преобразовать в TimeStamp (TimeToTimeStamp), а потом в строку (TimeStampToString).

Спасибо большое за подсказку, получилось

daniel23
08.02.2018, 11:24
Время получаю правильно, но спустя 1-5 мин выбивает ошибку
08-02-2018 09:45:37.827 TIME:TESMA_PORT.TESMA_106.Group1.TIME >> [string "function CRC8 (ArrayByte)..."]:42: attempt to index local 'dest' (a nil value)
42 строка это dest7 = string.format("%02X", dest[7]); -- сек
без этой строки и других таких же для мин, час и т.д. время выводится некорректно
Весь код такой:
dest7 = string.format("%02X", dest[7]); --сек
dest8 = string.format("%02X", dest[8]); --мин
...
err,timesec = time.PackTime (tonumber (dest12), tonumber (dest11), tonumber(dest10), tonumber(dest9), tonumber(dest8), tonumber(dest7));
ts = time.TimeToTimeStamp(timesec, 0);
stringts = time.TimeStampToString(ts);
TV = stringts;

SCADAMaster
08.02.2018, 11:45
У dest стало равно nil. Возможно запрос не прошел.
Нужно проверять dest на nil перед обработкой

Jolly
12.02.2018, 12:05
Здравствуйте! На компьютере стоит Скада 3.9 и OPC сервер на 500 тегов. С этого компа я управляю двумя стендами(не одновременно). OPC сервер загружает последнюю конфигурацию. Как сделать так, чтоб OPC сервер загружал правильный конфигурационный файл при запуске соответсвующего проекта?

SCADAMaster
12.02.2018, 12:42
Имя конфигурации находится в файле:
c:\ProgramData\InSAT\MasterOPC Universal Modbus Server\SERVERCFG\__startconfigv3__
Вы можете с помощью Bat файла перед стартом выполнять замену этого файла на нужный вам.

Jolly
12.02.2018, 12:54
Можете скинуть шаблон этого Bat файла? Нет времени сейчас вникать в это просто

SCADAMaster
12.02.2018, 13:03
У нас такого шаблона нет.
Ищите примеры в интернете.

daniel23
20.02.2018, 09:34
Добрый день, в скрипте узла написан запрос по опросу устройства. Можно ли внести в теги значения из скрипта в узле? И как?

SCADAMaster
20.02.2018, 10:14
Записать в теги?
Можно - функцией WriteTag, WriteTagByRelativeName, WriteTagByNumber

daniel23
20.02.2018, 10:21
Это нужно прописывать в скрипте узла? И тогда получается в скрипте тега ничего прописывать не нужно?

SCADAMaster
20.02.2018, 10:56
Да, все верно.

daniel23
20.02.2018, 11:52
При опросе ничего не происходит, в логе это
20-02-2018 11:51:33.300 SCRIPT.script:plugin :read
20-02-2018 11:51:32.300 SCRIPT.script:plugin :read
20-02-2018 11:51:31.300 SCRIPT.script:plugin :read
20-02-2018 11:51:31.205 SCRIPT.script:plugin :init
Может все-таки в скрипте тега что-то нужно?

SCADAMaster
20.02.2018, 12:17
Да ничего не нужно. ПРиложите вашу конфигурацию.

daniel23
21.02.2018, 09:01
Конфигурацию прилагаю

SCADAMaster
21.02.2018, 09:26
Так а функцию Query у вас кто вызывает? Никто.
У вас вообще ничего не работает.

RES, dest, LEN = server.SendAndReceiveDataByMask(0, #send, sendMask, send, destMask, 200);
И ответ нужно контролировать - проверять код ошибок, что dest не nil и содержин нужное количество элементов, контрольную сумму считать.
Так у вас при первой же ошибке запроса скрипт повалится.

daniel23
21.02.2018, 09:42
А в какой из функции надо выполнять запрос? OnInit, OnClose, OnBeforeReading, OnAfterReading?
Функцию Query создал, т.к., если выполнять запрос в одной из выше перечисленных функциях сообщается ошибка
SCRIPT:SendAndReceiveDataByMask : функция доджна быть вызвана в контексте устройства

SCADAMaster
21.02.2018, 10:11
А в какой из функции надо выполнять запрос? OnInit, OnClose, OnBeforeReading, OnAfterReading?

Обычно OnBeforeReading



SCRIPT:SendAndReceiveDataByMask : функция доджна быть вызвана в контексте устройства
Правильно. Перенесите этот скрипт в устройство
Или хотя бы ту часть, которая делает обращение к устройству.

daniel23
21.02.2018, 10:12
Но ведь в MPS нет возможности записи скрипта в устройство.

SCADAMaster
21.02.2018, 10:23
Судя по всему это ошибка. Мы с ней разберемся.
Пока сделайте на уровне тега. Потом перенесете.

daniel23
21.02.2018, 10:33
На уровне тега уже сделано. Т.е. в каждом теге находится запрос под определенный адрес для вывода значения. Но т.к. память устройства считывается по маленьким кускам, то опрос происходит долго. Из-за этого было решено считывать память не по маленьким кусочкам, а по 256 байт и выводить нужные значения по тегам. И судя по логике этот запрос должен находиться в скрипте узла (уже устройства). Можно ли как-то еще реализовать задачу?

SCADAMaster
21.02.2018, 11:17
Как вариант - сделать один тег, в нем выполнять запросы, а затем раскладывать значения по другим тегам с помощью WriteTagByRelaitveName.
То есть скрипт будет только в одном теге, а осталные только для записи в них значений

daniel23
22.02.2018, 11:08
И ответ нужно контролировать - проверять код ошибок, что dest не nil и содержин нужное количество элементов

А можете подсказать как это реализовать? Например, чтобы проверить dest на nil пишу:
if (dest == nil) then
- заношу в тег с плохим качеством
else
- заношу в тег с хорошим качеством
Так не работает

SCADAMaster
22.02.2018, 11:45
А что не работает? Нужно еще контролировать первый параметры который возвращается sendandrecive - там код ошибки или количество принятых байт.
Посмотрите описание функции в справке (там есть примеры) и эту документацию:
https://insat.ru/products/Universal_MasterOPC/MU_MasterOPC_Server_API_UG.pdf

daniel23
12.03.2018, 08:56
Добрый день. При запуске опроса устройства, качество тегов меняется только после того, как полностью прочитается скрипт. В скрипте 8 запросов. Например, если во 2 из 8 запросов качество тега изменилось на BAD, то MPC изменит качество с GOOD на BAD только после завершения чтения скрипта. Как сделать, так чтобы после завершения 2 запроса, если он BAD, качество поменялось сразу, а не после чтения остальных запросов?

SCADAMaster
12.03.2018, 10:40
Не совсем понятно что вы имеете ввиду.
У вас есть один скрипт и в нем 8 запросов? Так если один из них был неуспешным, сразу прерывайте скрипт, записываете BAD в теги

daniel23
12.03.2018, 11:42
После прерывания скрипта запросы остановятся? Или вы имеете ввиду при неудачном запросе записывать BAD и продолжать остальные запросы? И как прервать ?

SCADAMaster
12.03.2018, 15:32
В скрипте 8 запросов.
Условно говоря у вас 8 строчек с 8 запросами, так?
Ну вот если один не прошел, то ставьте в тег Bad и делайте return;

daniel23
13.03.2018, 10:35
После каждого запроса сделал return, когда тег Bad, то запрос зацикливается и не переходит на следующий запрос, надо, если один из запросов Bad, то переходим к следующему

SCADAMaster
13.03.2018, 13:01
Ну значит не return, а через if.
Если нет ответа - сразу тег в Bad, и опрашивать следующий.

daniel23
19.03.2018, 11:07
Здравствуйте. В описании к протоколу прибора есть описание адресов. Скриншот приложил. Для 0300 lvolume F[6] это так реализовывается? local destMask = {"float:6:3210"} Без учета контрольной суммы и остальных байт, только адрес 0300.

SCADAMaster
19.03.2018, 11:25
Float - 4 байтовое число. Поэтому не ясно что тут имеется ввиду. Лушче уточнить у разработчика прибора

amaranth
30.03.2018, 08:17
Доброго дня!

Имеем Modbus Universal MasterOPC Server, версия 4.2.9 (https://insat.ru/products/?category=1666) которым надо по Modbus TCP опросить 5 параметров с регистратора многоканального технологического РМТ 59L, версия ПО 2237 от 12.08.2015 (http://www.elemer.ru/production/rmt/nopaper/rmt_59l.php) с 24 аналоговыми входами, описание адресов параметров при опрсое по команде 03 [0х03] начиная со страницы 142 руководства по эксплуатации РМТ 59L НКГЖ.411124.004РЭ (http://www.elemer.ru/files/re/re_rmt_59L.pdf). В OPC сервере указываю IP адрес регистратора РМТ 59L, 502 порт и убираю перестановку байтов в самих тегах. Могу только опросить, например версию ПО, дату выпуска ПО, серийный номер, кол-во устройств ввода-вывода. Для того чтобы опросить текущие значения 24-х каналов, какие адреса надо опрашивать? Спасибо.

SCADAMaster
30.03.2018, 09:36
Лучше уточнить у производителя
Как мы понимаем, адрес формируется из номера пера + константа.

daniel23
30.03.2018, 12:00
Здравствуйте. Есть вопрос относительно функции server.SetDeviceToOnOff
В справке, в примере
val,q=server.ReadCurrentTag(); --получаем значение тега
if val==true then --если значение "true"
server.SetDeviceToOnOff (true); --запускаем опрос устройства
else
server.SetDeviceToOnOff (false); --иначе останавливаем
end;

Как сработает server.SetDeviceToOnOff (true), если к этому моменту при проверки значения тега устройство из опроса будет исключено?

Допустим есть 2 прибора, 1 выключили, 2 работает. После проверки качества тега на BAD исключаем устройство из опроса, которое отключено. После включения устройства как снова начать опрос? Ведь качество тега при исключенном опросе не узнать.

SCADAMaster
30.03.2018, 12:38
Если разместить скрипт в скрипте записи то он отрабатывается даже при выключенном узле

amaranth
30.03.2018, 13:35
Подскажите пожалуйста, а в Modbus Universal MasterOPC Server версии 4.2.9, как из прибора РМТ 59L (http://www.elemer.ru/production/rmt/nopaper/rmt_59l.php) можно прочитать 4-х байтовое float значение пера 1 по адресу 0500 и 0501?
Описание адресов на станице 140 и начиная со страницы 142 в РЭ РМТ 59L (http://www.elemer.ru/files/re/re_rmt_59L.pdf).

SCADAMaster
30.03.2018, 13:42
Добавляете тег, указываете у него адрес 500, тип в устройстве - float

amaranth
30.03.2018, 13:59
Добавляете тег, указываете у него адрес 500, тип в устройстве - float

Что-то не получается - ошибка "OUT OF SERVICE":36322

SCADAMaster
30.03.2018, 14:16
Смотрите на вкладку "Запросы". Скорее всего устройство не отвечает или отвечает с ошибкой.
Пока что опроса у вас вообще нет - все в BAD

amaranth
30.03.2018, 14:32
Смотрите на вкладку "Запросы". Скорее всего устройство не отвечает или отвечает с ошибкой.
Пока что опроса у вас вообще нет - все в BAD
Прилагаю лог файл.
Если опрос последних 2 тегов выключить, то все опрашивается нормально.

SCADAMaster
30.03.2018, 14:57
Прибор возвращает код ошибки:
30-03-2018 14:20:40.840 OMH::1:(IP адрес:502) Rx: [0009] CC 05 00 00 00 03 01 83 04
Но часть параметров опрашивается:
30-03-2018 14:19:09.965 OMH::1:(IP адрес:502) Tx: [0012] 75 05 00 00 00 06 01 03 00 33 00 01
30-03-2018 14:19:09.959 OMH::1:(IP адрес:502) Rx: [0021] 74 05 00 00 00 0F 01 03 0C 50 65 E3 E8 63 F2 70 61 F2 6F 70 00

amaranth
30.03.2018, 15:04
Прибор возвращает код ошибки:
30-03-2018 14:20:40.840 OMH::1:(IP адрес:502) Rx: [0009] CC 05 00 00 00 03 01 83 04

Можете сказать какое значение ошибки? 04? или 03?

SCADAMaster
30.03.2018, 15:17
83 04.
Общее описание:
http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf
страница 48. Что означает у конкретного устройства - лучше уточнить у производителя.
Скорее всего не в тот адрес обращаетесь.

daniel23
02.04.2018, 08:59
Если разместить скрипт в скрипте записи то он отрабатывается даже при выключенном узле

Добавил функцию в скрипт записи, безрезультатно. Дело в том, что необходимо отключать устройство, а не узел. Может из-за этого?

SCADAMaster
02.04.2018, 09:03
Без разницы. Скрипт записи отрабатывается всегда.
Только сделайте тег типа Program, и у него включайте скрипт записи.

daniel23
02.04.2018, 09:39
Без разницы. Скрипт записи отрабатывается всегда.
Только сделайте тег типа Program, и у него включайте скрипт записи.

А как сделать тег типа Program, я пользусюь MPS, в нем есть такое?

SCADAMaster
02.04.2018, 10:44
Multi-Protocol? А какой плагин?

daniel23
02.04.2018, 10:53
Да, Multi-Protocol, плагин script

SCADAMaster
02.04.2018, 11:13
Ну в сркипте все теги Program.
Какая у вас версия? Попробуйте на текущей перепроверить:
https://insat.ru/products/?category=1666

amaranth
04.04.2018, 08:50
Добрый день!

В MasterOPC Universal Modbus Server в коммуникационном узле, который опрашивает РМТ 59L по протоколу Modbus TCP, создаю второе устройства типа PROGRAM. Тут у меня возникло 2 вопроса:
1. При попытке обращения к пользовательскому DSN через odbc возникает ошибка: "04-04-2018 08:42:29.065 Tag1:[string "local host = "MSSQL_CONN"..."]:11: attempt to index global 'odbc' (a nil value)"


local host = "MSSQL_CONN"

local login =""

local password = ""

local env;

local CONN=nil;
function OnInit()
env = odbc.env_create();

host = "MSSQL_CONN" --имя ODBC коннектора (как в среде администрирования)

login ="" -- логин (заполнено своим значением)

password = "" --пароль (заполнено своим значением)

CONN,s = odbc.env_connect(env,host,login,password); --подключение

if(CONN==nil) then

server.Message(s); --вывод сообщения с ошибкой

else
server.Message("Connected");
end
end

2. Возможно ли в этом устройстве PROGRAM брать значения нескольких тегов из другого устройства в том же коммуникационном узле, формировать из этих значений каждые 3 минуты среднее значение по этим тегам и записать в БД через odbc?

Спасибо.

SCADAMaster
04.04.2018, 14:15
В MasterOPC Universal Modbus Server в коммуникационном узле, который опрашивает РМТ 59L по протоколу Modbus TCP, создаю второе устройства типа PROGRAM. Тут у меня возникло 2 вопроса:
1. При попытке обращения к пользовательскому DSN через odbc возникает ошибка: "04-04-2018 08:42:29.065 Tag1:[string "local host = "MSSQL_CONN"..."]:11: attempt to index global 'odbc' (a nil value)"

Судя по всему у вас или бесплатная версия на 32 тега, или ключевая не Unlim - в них нет ODBC.
Нужна или Trial или Unl




2. Возможно ли в этом устройстве PROGRAM брать значения нескольких тегов из другого устройства в том же коммуникационном узле, формировать из этих значений каждые 3 минуты среднее значение по этим тегам и записать в БД через odbc?

Спасибо.
Можно

Hemann
09.04.2018, 22:29
Коллеги, добрый вечер!

В преддверии одной работы, решил попробовать кусочки скрипта (проект в прикреплении). Смысл следующий: пишем в тэг Node1.Device1.Tag1 (программный) некоторое число, а оттуда оно, поделенное на 10, переписывается в Node2.Device2.Tag3 (в устройстве Modbus); читаем данные из Node2.Device2.Tag4 (из устройства Modbus) и переписываем его, умноженное на 5, в Node1.Device1.Tag2 (программный). Так вот, из Tag4 в Tag2 нормально переписываются данные, а из Tag1 в Tag3 - не пишется. Вводил в Tag3 данные вручную - они в устройство передаются нормально.
Где и что я не так делаю?

SCADAMaster
10.04.2018, 06:33
Для записи в устройство, нужно применить две команды - WriteTag и WriteTagToDevice

Hemann
10.04.2018, 07:38
Уважаемый SCADAMaster!

Возможно Вы не заметили, я как раз использую именно WriteTag (см. скрипт OnWrite для Tag1), но запись не происходит. Попробовать WriteTagToDevice?

SCADAMaster
10.04.2018, 10:25
Нужно использовать команды - сперва запись в тег, затем в устройство.

Hemann
11.04.2018, 07:50
Уважаемый SCADAMaster, все получилось! Спасибо за помощь!

SCADAMaster
11.04.2018, 09:57
Сегодня приобрели мастер скаду и ОРС сервер на 500 тегов, загрузка сервера двух объектов 44 тега грузит проц на 15% что не так.
Кто именно грузит комп - ОРС или скада?
Пришлите проект скады (проект - Экспортировать) и конфигурацию ОРС
Также сообщите параметры компьютера

SCADAMaster
11.04.2018, 12:00
Приложите проект и конфигурацию.
Но для Celeron - вообщем то нормальная загрузка.

SCADAMaster
11.04.2018, 18:04
Выложите на файлообменник (Yandex.Disk, Google.Drive), а сюда приложите ссылку

SCADAMaster
11.04.2018, 19:28
Скиньте на почту support(собка)insat.ru

LordMazy
19.04.2018, 07:25
Здравствуйте SCADAMaster.
Пытаюсь опрашивать ТРМ200 через MasterOPC demo 32 build 3.2.18 по Modbus ASCII. Получается немного совсем не ASCII (см. скрин), что не так?

Makc
19.04.2018, 07:35
function OnRead()
a=server.ReadTag("PN_SIMULATOR.PD_SIMULATOR.Tag1");
b=bit.BitNot(a);
server.WriteCurrentTag(b,OPC_QUALITY_GOOD );
end
Изменяю Tag1 (true, false) при этом в тег в котором вызывается выше описанный код не пишется противоположное значение Tag1 .... почему? в чем ошибка?

SCADAMaster
19.04.2018, 08:15
Здравствуйте SCADAMaster.
Пытаюсь опрашивать ТРМ200 через MasterOPC demo 32 build 3.2.18 по Modbus ASCII. Получается немного совсем не ASCII (см. скрин), что не так?
Это устройство так отвечает. Или конвертер искажает (встречали такой на Moxa NPort)

SCADAMaster
19.04.2018, 08:16
function OnRead()
a=server.ReadTag("PN_SIMULATOR.PD_SIMULATOR.Tag1");
b=bit.BitNot(a);
server.WriteCurrentTag(b,OPC_QUALITY_GOOD );
end
Изменяю Tag1 (true, false) при этом в тег в котором вызывается выше описанный код не пишется противоположное значение Tag1 .... почему? в чем ошибка?
Тег программный или связан с реальным регистром?
Если связан, то нужно еще вызывать WriteCurrentTagToDevice

Makc
19.04.2018, 09:46
Тег программный или связан с реальным регистром?
Если связан, то нужно еще вызывать WriteCurrentTagToDevice

тег программный (не привязан к какому либо устройству)

Makc
19.04.2018, 09:49
function OnRead()
a=server.ReadTag("PN_SIMULATOR.PD_SIMULATOR.Tag1") ;
--b=bit.BitNot(a); комментарим
server.WriteCurrentTag(a,OPC_QUALITY_GOOD );
end
в случае если прост опрашиваем Tag1 и переписываем значение в тег в котором работает скрипт, то все работает, а если bitnot добавляем (т.е. пытаемся записывать противоположный бит) не работает.

SCADAMaster
19.04.2018, 11:50
function OnRead()
a=server.ReadTag("PN_SIMULATOR.PD_SIMULATOR.Tag1") ;
--b=bit.BitNot(a); комментарим
server.WriteCurrentTag(a,OPC_QUALITY_GOOD );
end
в случае если прост опрашиваем Tag1 и переписываем значение в тег в котором работает скрипт, то все работает, а если bitnot добавляем (т.е. пытаемся записывать противоположный бит) не работает.
Так вы инверсию написали не правильно.
Посмотрите описание в справке.

Если нужно интвертировать весь тег (то есть у вас идет логический тип), то просто оператор Not

Makc
19.04.2018, 13:04
Так вы инверсию написали не правильно.
Посмотрите описание в справке.

Если нужно интвертировать весь тег (то есть у вас идет логический тип), то просто оператор Not

Спасибо, получилось.

za9c
27.04.2018, 11:17
подскажите пож-та! Постоянно выскакивает ошибка "Access violation at address 500355B8 in module 'BORLNDMM.DLL'. Read of address 000000"! Как её вылечить?

Во время работы со скадой не выскакивает, но во время отладки - постоянно вылазит, и после неё только перезапуск (через CTRL SHIFT ESC) помогает, и соответственно: всё что набрал и не успел сохранить - пропадает!
Появилась ошибка чуть больше года назад, после обновления OPC до 2500 точек!

SCADAMaster
28.04.2018, 09:37
Какая сейчас версия ОРС сервера?
Попробуйте проверить на текущей Trial
https://insat.ru/products/?category=1666

za9c
28.04.2018, 10:51
Какая сейчас версия ОРС сервера?
Попробуйте проверить на текущей Trial
https://insat.ru/products/?category=1666

ВЕРСИЯ 3.2.16. Я на демверсии пишу - потом переношу! На демверсии такого нет!

SCADAMaster
28.04.2018, 11:08
ВЕРСИЯ 3.2.16. Я на демверсии пишу - потом переношу! На демверсии такого нет!
Обновите версию до текущей - направьте запрос scada(собка)insat.ru

za9c
28.04.2018, 11:42
Обновите версию до текущей - направьте запрос scada(собка)insat.ru

Плохо - бесплатный год прошёл!

Makc
03.05.2018, 16:13
Подскажите пожалуйста. столкнулся с проблемой импорта тегов из siemens plc в инсат мультипротокол, создал файл .db, после этого появляется сообщение "номер ДБ", ввожу номер, после этого выскакивает окно : "неизвестный тип данных" и предлагает ввести размер типа данных ввожу 42 байта, в дальнейшем ввожу значения в байтах для остальных пользователдьских данных, после всего этого формируется дерево тегов и все пользовательские типы даннх не определяются, виден только комментарий, имя пользовательской переменной и все, следовательно выбрать ээти теги для "переместить в импорт" возможности нет. как быть? что я делаю не так? неужели нужно вручную вводить все? (создавать группы тегов , формировать состав группы, расставлять адреса для каждого тега в группе), пользовательских переменных ни одна сотня, а в целом тегов набирается несколько тысяч......

SCADAMaster
03.05.2018, 16:27
Пришлите ваш db файл.
Неизвестный тип - это тип данных, который ОРС сервер добавить не может, или его размер может быть не определенным.
Из справки:
Ecли пpи импopтe будeт oбнapужeнa нeпoддepживaeмaя cepвepoм пepeмeннaя, тo oнa будeт oтмeчeнa в дepeвe cпeциaльным знaчkoм, и ee пepeнoc будeт нeвoзмoжeн. Kpoмe тoгo, ecли пpи импopтe будeт oбнapужeнa пepeмeннaя нeизвecтнoгo типa, тo будeт выдaнo cпeциaльнoe okнo, в koтopoм пoльзoвaтeлю нeoбxoдимo ввecти paзмep дaннoй пepeмeннoй в бaйтax – для koppekтнoгo pacчeтa aдpecaции cлeдующиx пepeмeнныx.

a_gricaj
12.05.2018, 15:38
Здравствуйте,
подскажите пж как разобраться с такой ситуацией: OPC-сервер Modbus Universal MasterOPC (демо) опрашивает модули Овен и передает данные в Мастерскаду, при ЗАПУЩЕННОМ сеансе TeamViewer опрос модулей идет отлично (14-20мс), когда сеанс TeamViewer завершаю связь валится (опрос за 60мс), такое впечатление, что TeamViewer выключает что-то. Версии Universal MasterOPC Server использовал и свежую с сайта Инсат, и старую - реакция на TeamViewer одинаковая.
На ПК установленна Виндовс 7 Максимальная.
Как тут быть??

SCADAMaster
13.05.2018, 09:21
А связь валится как? ОРС работает, но устройство перестает отвечать?
Или ОРС закрывается?

a_gricaj
13.05.2018, 10:36
ОРС работает, устройства отвечают, но в окне "сообщения" - вижу изменение времени опроса устройства с TeamViewer опрос до 20мс, без TeamViewer за 60 мс, также замедление опроса видно "на глаз" по миганию светодиодов на модулях ОВЕН.
Опрос улучшается сразу после того как удаленный компьютер пытается подключится по ID, без введения пароля.
Виндовс переустановили несколько раз, с установкой TeamViewer и без установки(просто запуск), проверили драйвера, не помогло...Может какая-то служба на ПК стопорится????

SCADAMaster
13.05.2018, 12:53
То есть происходит замедление опроса?
Попробуйте проверить на текущей версии ОРС сервера. Также уменьшите настройку устройства "Задержка запроса после получения ответа".

a_gricaj
13.05.2018, 14:21
Да, происходит замедление опроса, побывал и на текущей и на старой версии ОРС сервера - реакция одна и та же. "Задержка запроса после получения ответа" стоит 4 мс на всех устройствах, думаю меньше ставить - будет только хуже....

a_gricaj
14.05.2018, 18:50
Да, происходит замедление опроса, побывал и на текущей и на старой версии ОРС сервера - реакция одна и та же. "Задержка запроса после получения ответа" стоит 4 мс на всех устройствах, думаю меньше ставить - будет только хуже....

заменили ПК, все норм, TeamViewer не влияет. Грешим на драйвера, так как после замены винта началась вся эта чехарда.....

a_gricaj
19.05.2018, 14:58
заменили ПК, все норм, TeamViewer не влияет. Грешим на драйвера, так как после замены винта началась вся эта чехарда.....

Попробовали поставить на старый ПК Виндовс ХР, со старыми драйверами и старенькой версией ОРС ..... Ситуация повторилась, с TeamViewer - опрос отличный... без него хуже, причем проблема не только с TeamViewer, похожая ситуация и с интернет браузером. Заметили - если есть сетевая активность - опрос отличный.... и наоборот... Как победить эту проблему, подскажите пж.

a_gricaj
21.05.2018, 15:28
Попробовали поставить на старый ПК Виндовс ХР, со старыми драйверами и старенькой версией ОРС ..... Ситуация повторилась, с TeamViewer - опрос отличный... без него хуже, причем проблема не только с TeamViewer, похожая ситуация и с интернет браузером. Заметили - если есть сетевая активность - опрос отличный.... и наоборот... Как победить эту проблему, подскажите пж.

Попробовали еще один ПК, с Виндовс 7 - сетевая активность влияет на работу ОРС-сервера, итого с трех ПК один работает нормально, два зависимы от сетевой активности. Виндовсы, драйвера, Фраемворки перепробовали...
Может еще есть варианты, что проверить???????

SCADAMaster
21.05.2018, 17:37
У нас предположений нет.
Попробуйте поставить Wireshark и посмотреть какие времена будут в нем. Если на нем задержка будет видна, значит дело в Windows

Hemann
05.06.2018, 16:31
Коллеги, добрый день!

Подскажите, пожалуйста, какая версия MasterOPC Server может работать под WinXP SP2 и где ее можно взять? Новая версия на 32 тэга, скачанная с сайта вчера, работать под этой операционкой не хочет, а проапгрейдить комп и ОС нельзя, т.к. там работает какая-то немецкая прога, которая может жить только на этом компе и дистрибутива ее нет. Сисадмин заказчика боится даже просто ServicePack3 туда накатить, т.к. не знает чем это дело закончится

SCADAMaster
05.06.2018, 17:55
У нас есть патч для XP, подойдет ли он для XP SP2 мы не знаем - не проверяли.
https://insat.ru/blog/modbus-universal-masteropc-patch-dlya-podderzhki-windows-xp/

Hemann
06.06.2018, 09:04
У нас есть патч для XP, подойдет ли он для XP SP2 мы не знаем - не проверяли.
https://insat.ru/blog/modbus-universal-masteropc-patch-dlya-podderzhki-windows-xp/

Спасибо, буду пробовать на SP2.

Hemann
07.06.2018, 14:04
У нас есть патч для XP, подойдет ли он для XP SP2 мы не знаем - не проверяли.
https://insat.ru/blog/modbus-univers...ki-windows-xp/

Попробовал патч на объекте - не помогло. Придется заказчику задуматься о компе, на котором все будет работать

a.smirnov
18.06.2018, 16:57
Добрый день.
Столкнулись с проблемой доступа к данным в OPC сервере Modbus Universal MasterOPC Server.
На пром площадке на одном ПК развернута MasterScada и Modbus Universal MasterOPC Server.
Пытался сегодня подключиться PI OPC Client по сети к указанному OPC серверу, перед этим настроив DCOM, но получил ошибку 80080005. Но после остановки MasterScada я смог успешно подключиться к OPC серверу. Подскажите, пожалуйста, как мне настроить OPC сервер что бы можно было работать с ним с нескольких клиентов( необходимо что бы к OPC серверу локально была подключена MasterScada и по сети PI OPC Interface).
Установленное ПО:
1. Modbus Universal MasterOPC Server 500 - программа MasterOPC. OPC-сервер Modbus RTU/ASCII/TCP на одно рабочее место на 500 тегов с программным ключом защиты
2. MSRT500-NET PRO - программа MasterSCADA. Сетевая исполнительная SCADA-система на 500 внешних точек ввода-вывода. Полная комплектация.

SCADAMaster
18.06.2018, 17:25
Никаких настроек в самом ОРС нет - всем рулит DCOM.
У вас на одном компьютере стоят ОРС и клиенты или на разных? Возможно у вас некорректно настроен DCOM и клиент, возможно, подключается под другим пользователем.
Попробуйте настроить DCOM по инструкции из папки:
c:\Program Files (x86)\InSAT\MasterSCADA\Doc\

a.smirnov
19.06.2018, 08:25
Никаких настроек в самом ОРС нет - всем рулит DCOM.
У вас на одном компьютере стоят ОРС и клиенты или на разных? Возможно у вас некорректно настроен DCOM и клиент, возможно, подключается под другим пользователем.
Попробуйте настроить DCOM по инструкции из папки:
c:\Program Files (x86)\InSAT\MasterSCADA\Doc\
На одном ПК установлен OPC Сервер и MasterScada на другом OPC Client, если Скада остановлена то клиент из сети подключается, значит DCOM настроен, но в это время не возможно запустить скаду т.к. OPC сервер уже занят клиентом. Получается не возможно подключиться одновременно с двух клиентов к OPC серверу. В лицензионном соглашении к OPC серверу присутствует пункт:"Использование в сети. Если MasterOPC установлен на компьютере, доступ к которому возможен через сеть, использование его разными компьютерами одновременно недопустимо. Исключение составляют средства разработки программ расширения для MasterOPC." может ли это означать что сервер можно использовать только монопольно?

SCADAMaster
19.06.2018, 09:24
Нет. Просто он у вас запускается под разными пользователями.
Т.е. первая скада запустила его под пользователем User1, а вторая пытается запустить под пользователем User2.
Настраивайте DCOM - раздел "Удостоверение"

ASo
19.06.2018, 16:27
Может и было в теме, но не нашел.
Можно в этом сервере сделать гарантированную задержку опроса между устройствами?
Задержка пакетов в конфигурации устройства действует только при последовательном опросе данного устройства или распространяется и на последний/единственный запрос к нему?

a.smirnov
19.06.2018, 16:31
Нет. Просто он у вас запускается под разными пользователями.
Т.е. первая скада запустила его под пользователем User1, а вторая пытается запустить под пользователем User2.
Настраивайте DCOM - раздел "Удостоверение"

Проблему решили. Как говорится "дело было не в бабине....", по какой то случайности пропустили DNS сервера. Прописали и все заработало.
Спасибо за подсказку.

SCADAMaster
19.06.2018, 16:52
Может и было в теме, но не нашел.
Можно в этом сервере сделать гарантированную задержку опроса между устройствами?
Задержка пакетов в конфигурации устройства действует только при последовательном опросе данного устройства или распространяется и на последний/единственный запрос к нему?
Такой задержки нет, есть задержка между посылкой нового запроса, после получения ответа.

ASo
19.06.2018, 17:09
Ответа от любого устройства или только указанного?

SCADAMaster
19.06.2018, 17:14
Послал запрос устройства, принял ответ, прошла заданная выдержка, следующий запрос к этому устройству.

amikhailov
26.06.2018, 17:08
MasterOPC, работает в режиме сервера, берет данные из MS SQL и отдает по запросу клиентам (панели Magelis).
С передачей данных в формате int16 проблем нет.

Не понимаю, как нужно настраивать тэги типа string, формат Unicode. Что бы ни делал, в регистр записывается только один символ.

SCADAMaster
26.06.2018, 18:33
Настройку длины строки делали?

amikhailov
26.06.2018, 19:43
Настройку длины строки делали?

А где и как это делается?

P.S. Выставил 8 байт в настройках тэга, но всё равно пишется только один символ.

SCADAMaster
27.06.2018, 08:50
У нас все пишет. Скриншот и конфигурация в приложении.

amikhailov
27.06.2018, 10:32
Так я и прошу научить, как добиться результата.
Обращаю внимание, что речь идёт про Unicode формат и MasterOPC работает в режиме сервера.
P.S. Или Mod Rsim способен работать в режиме клиента и читать регистры сервера?

SCADAMaster
27.06.2018, 10:50
А какая разница - Unicode или нет.
Вы посмотрите в логе запросов - ушел запрос на запись? Если ушел, значит ОРС все отработал.
ModRSSim - просто эмулятор

amikhailov
27.06.2018, 11:35
Прикладываю картинку, что в тэгах сервера MasterOPC и что видит клиент (Modbus Poll).
Обратите внимание на 3-й регистр, он идентичен 1-му, хотя должен содержать 0х5200 и 0х3200
37812

amikhailov
27.06.2018, 12:13
То же самое средствами MasterOPC.
Последовательность '32' отсутствует в пакете Tx:

37813

SCADAMaster
27.06.2018, 18:27
Проверили у нас все корректно.
Но при задании количества байт для строкового типа нужно указывать в 2 раза больше, чем у вас символов.
Т.е. если вы пишите 2 символа, укажите 4 байта.

amikhailov
27.06.2018, 19:33
Я ставил и 8 байт, и 16, и даже 64. В случае одного тэга все равно НЕ РАБОТАЕТ, хранится и отдается только один символ.

Заработало только после того, как к проблемному тэгу с адресом 0 добавил второй тэг с адресом 2, т.е. оставив между ними пустой адрес. Тогда по адресу 1 образовался регистр, содержащий недостающий символ. В общем понятно, что для каждого символа Unicode требуется отдельный свободный адрес. Но зачем затычка в виде закрывающего регистра?

SCADAMaster
28.06.2018, 08:49
Unicode символ занимает 2 байт, то есть 1 Modbus регистр. Поэтому никаких промежуточных адресов делать не нужно.
Смотрите в запросе записи какие значения уходят, и совпадают ли они с таблицей Unicode символов:
https://unicode-table.com/en/

amikhailov
28.06.2018, 14:35
Unicode символ занимает 2 байт, то есть 1 Modbus регистр. Поэтому никаких промежуточных адресов делать не нужно.
Смотрите в запросе записи какие значения уходят, и совпадают ли они с таблицей Unicode символов:
https://unicode-table.com/en/По поводу 2 байт я не спорю. Специально сделал простейшую тестовую конфигурацию, Modbus TCP сервер и 2 тэга с адресами 0х0000 и 0х0004. Тэги настроены одинаково string / Unicode / кол-во байт для строкового типа 8. В первый тэг пишется ABCD, во второй EFGH.

37830

А теперь смотрим содержимое регистров через Modbus Poll. При обращении по адресам 0-4 (окошко Mbpoll1) мы видим все четыре знака первого тэга A-B-C-D и первый знак второго регистра -- символ E.
Если же обратиться по адресам 0-5 -- мы получаем сообщение об ошибке (окошко Mbpoll2).

37831

Отключаем второй тэг через False. Окошко Mbpoll1 сразу выдает ошибку. Единственный доступный регистр по адресу 0х0000 (окошко Mbpoll3), это первая буква A первого тэга. Возможно, где-то что-то настроил не так. Поэтому и прошу помочь.

amikhailov
28.06.2018, 17:50
Был в спортзале, видел ответ из Кирова, что у меня руки кривые.
Добрался до компа, но этот несомненно содержательный пост изчез. Насколько я понял по картинке, товарищ показывал, что MasterOPС прекрасно работает на приём (все данные по строкам Rx:)

Но у меня проблема с передачей, т.е. по Tx:
И что еще странно, данные у меня имеют вид 41 00 42 00 43 00 44 00.

capzap
28.06.2018, 17:59
не тот скрин выложил, поэтому и удалил
На скрине панель мастер, ОРС слейв
в юникоде латиница имеет два нуля вначале относительно аскишного кода

amikhailov
28.06.2018, 18:28
Я так и понял. Но на приведенной вами картинке каждый символ пишется в отдельный тэг. Это слишком просто :-)
А я пытаюсь разобраться, можно ли строку целиком записать в один тэг и чтобы он сам корректно раскидался по регистрам.

Пока получается только при одновременном выполнении двух условий:
1. Должен быть закрывающий тэг-затычка с смещением адреса n, где n=количество символов Unicode в предыдущем теге.
2. В настройках MasterOPC устройство <<MODBUS>> "Максимально допустимый разрыв адресов в запроcе чтения" должно стоять значение >= n-1.

Хотя, конечно, вместо этих костылей должен срабатывать флажок "последний тег в групповом запросе". Я не критикую, просто хочу разобраться.
А сам продукт полностью решает мои задачи -- раздавать из SQL в Magelis (и обратно).

На всякий случай прикладываю свой пример.

SCADAMaster
28.06.2018, 19:26
На данный момент ОРС сервер не может вообще работать со строками в режиме Slave - они не передаются корректно.
Мы реализуем эту функциональность в следующем релизе - в конце этой недели.

capzap
28.06.2018, 19:41
в любом случае слейв должен иметь доступные регистры для запроса, сделав их на каждый символ по слову и пишется и читается нормально

amikhailov
28.06.2018, 19:53
Вот и славно.

capzap
29.06.2018, 05:42
На данный момент ОРС сервер не может вообще работать со строками в режиме Slave - они не передаются корректно.
Мы реализуем эту функциональность в следующем релизе - в конце этой недели.

Если уж будете править, не могли бы тогда поработать с добавлением тегов, сейчас каждый добавляемый копия предыдущего, неплохо было бы менять адрес в соответствии с типом данных

SCADAMaster
29.06.2018, 08:48
Это не актуально, так как теги можно дублировать (тогда адреса постаиваются), а также править через групповые операции.

amikhailov
03.07.2018, 09:37
На данный момент ОРС сервер не может вообще работать со строками в режиме Slave - они не передаются корректно.
Мы реализуем эту функциональность в следующем релизе - в конце этой недели.
Почему молчите? Удалось?