Страница 1 из 1

Modbus TCP и Scada сервер

Добавлено: 14.11.2016{, 10:04}
bars
У меня вопрос к знатокам, как передать, а точнее как настроить Modbus OPC сервер для получения данных от датчика DHT-11 в Scada систему. Суть вопроса вот в чём, при создании переменной модбас с типом данных Float в FlProg переменной присваивается два адреса (например 1,2 или 5,6) но при получении этой переменной в ModBus OPC сервере при установке типа переменной Float можно поставить только один адрес. Я использую Modbus UniversalMasterOPCServer 32 от компании ИнСат.

Modbus TCP и Scada сервер

Добавлено: 14.11.2016{, 16:40}
Evgesha
вы здесь были ?

http://arduinoprom.ru/arduino....no.html

http://arduinoprom.ru/arduino....ru.html

может чем поможет

Modbus TCP и Scada сервер

Добавлено: 14.11.2016{, 16:56}
Rovki
Так и указывайете  ОПС адрес 1 и 5 ,а он сам считает сколько надо  .Только порядок чередования слов и байт надо соблюсти .

Modbus TCP и Scada сервер

Добавлено: 14.11.2016{, 17:20}
Sancho
И ещё. Если в ардуино не заняты регистры между 2 и 5, то в настройках тэгов ставь галку" последний тэг в груповом запросе", иначе будут ошибки.
Старайся заполнять в слэйвах все регистры подряд, например сначала Holding- и, а потом Coil-ы, тогда ОРС будет читать всё за два запроса.

Modbus TCP и Scada сервер

Добавлено: 15.11.2016{, 07:07}
bars
Спасибо за ответы, но:
1. В представленных выше ссылках на сайт, Грачик получая данные от DHT-11 данные типа Float конвертирует в Integer и затем передаёт по Modbus. И я так пока делаю, но в некоторых случаях это не удобно. Переменной типа Integer в FlProg присваивается адрес одинарный (1 или 2 и т. д.) а вот переменной типа Float присваивается двойной адрес (5,6 или 8,9 и т. д.). В OPC сервере при настройке тега в поле адрес вписываем значение адреса 1 или 2 или 3 в зависимости от адреса переменной. И вот тут то и загвоздка, что в этом поле я не могу прописать двойной адрес (5,6 или 8,9 и т.д.) сервер выдаёт ошибку. Даже если я выставляю тип данных Float результат тот-же.
2. Может при вводе адреса в OPC сервере нужно ставить какой то разделительный знак, типа запятая или двоеточия ?
3. Немного не понятно про не занятые регистры,  галочку ставить при настройке регистра 5 или где?

Modbus TCP и Scada сервер

Добавлено: 15.11.2016{, 08:23}
Dev1
Вот ТУТ есть настройка Modbus Universal MasterOPC сервера.

Modbus TCP и Scada сервер

Добавлено: 15.11.2016{, 09:57}
Sancho
Посмотри, если подкоректируешь параметры связи под свои - попробуешь.

Добавлено (15.11.2016, 09:48)
---------------------------------------------
bars писал(а):3. Немного не понятно про не занятые регистры,  галочку ставить при настройке регистра 5 или где?
Если между регистрами в ардуино есть незанятое пространство, не обоначеное в программе( например есть от 0 до 10, но нет 6-го), ОРС программа без галочки на 5-м
будет пытаться прочитать все 11 за один запрос. Ардуино на попытку прочитать несуществующий 6-й выдаст ошибку и ничего ВООБЩЕ не прочитается.
Поэтому на 5-м в ОРС ставим галочку"последний...", и он будет читать в два запроса 0-5, 7-10.
Надеюсь, сейчас стало яснее?

Добавлено (15.11.2016, 09:57)
---------------------------------------------
Поэтому старайся после окончания написания программы упорядочить все регистры - с 0 и без пропусков. И Holding Reg и Coil.
OPC для чтения этих регистров использует разные запросы, поэтому Holding Reg будут читаться отдельно и в один проход( при отсутсвии пропусков), а Coil отдельно.

Modbus TCP и Scada сервер

Добавлено: 17.11.2016{, 06:40}
bars
Огромное спасибо!!! Всё понятно!!! Вот всегда бы так доходчиво.....

Modbus TCP и Scada сервер

Добавлено: 05.07.2017{, 21:57}
JonyBest
Sancho писал(а):Посмотри, если подкоректируешь параметры связи под свои - попробуешь.
Прошу посмотреть. Чуть подправил Ваш пример, но значения типа fload не передаются.
Пробовал и по ТСР и по сом, разницы нет.

Modbus TCP и Scada сервер

Добавлено: 06.07.2017{, 08:45}
Dev1
Цитата JonyBest () Прошу посмотреть. Чуть подправил Ваш пример, но значения типа fload не передаются.
На OPC сервере в настройках флоата, строка - перестановка байтов в значении поставьте старшим словом вперед.



Modbus TCP и Scada сервер

Добавлено: 06.07.2017{, 09:11}
Sancho
Dev1 писал(а):поставьте старшим словом вперед
JonyBest, это один из ньюансов модбас флоат в Ардуино. Ничего страшного, нужно просто запомнить и учитывать. И это не эксклюзив - ардуино. Как видите, ОРС сервер готов к любой очереди байт от разных производителей...

Modbus TCP и Scada сервер

Добавлено: 06.07.2017{, 09:19}
JonyBest
Огромное спасибо! Вечером буду пробовать.

Всё чётко заработало.

Modbus TCP и Scada сервер

Добавлено: 19.07.2017{, 07:01}
bars
Уважаемые знатоки, подскажите, как переlать переменную типа String из Ардуино по МодБас протоколу?

Modbus TCP и Scada сервер

Добавлено: 19.07.2017{, 08:23}
Sancho
bars писал(а):Уважаемые знатоки, подскажите, как переlать переменную типа String из Ардуино по МодБас протоколу?
В чистом виде - никак, не для этого он.
Посмотри в стороны MQTT - там только string.

Modbus TCP и Scada сервер

Добавлено: 19.07.2017{, 08:50}
pan
bars писал(а):как переlать переменную типа String
 хотите сказать вы можете принять стринг?

Modbus TCP и Scada сервер

Добавлено: 19.07.2017{, 09:07}
Dev1
Достаточно передавать № события. А дальше уже привязать № события к определенному сообщению, например из массива.

Modbus TCP и Scada сервер

Добавлено: 19.07.2017{, 10:34}
Grafsaxar
Ардуино нано быстро устаёт при передачи нескольких Float

У меня парится и передаёт часто с ошибками.

решил проблему таким образом:

Число от датчика умнажаешь на 100= потом блоком переводишь с Float = Integer
и отсылаешь по модбасу. перед графическим отображением делю число на 100 уже в самой Скаде ресурсами компа:))
Таким образом нано у меня передаёт 15 тэгов .

как только меняю из 15 тёгов 3 на Float бобик сдыхает:)))