Modbus TCP и Scada сервер

Использование протоколов Modbus, SPI, I2c и прочих, проблемы и решения
Ответить
bars
Рядовой
Сообщения: 26
Зарегистрирован: 27.11.2015{, 05:59}
Репутация: 0

Modbus TCP и Scada сервер

#1

Сообщение bars » 14.11.2016{, 10:04}

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

Аватара пользователя
Evgesha
Лейтенант
Сообщения: 460
Зарегистрирован: 29.10.2015{, 09:57}
Репутация: 14
Откуда: Kazakhstan
Имя: Evgesha

Modbus TCP и Scada сервер

#2

Сообщение Evgesha » 14.11.2016{, 16:40}

вы здесь были ?

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

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

может чем поможет
Последний раз редактировалось Evgesha 14.11.2016{, 16:42}, всего редактировалось 1 раз.
ПОМОЩЬ ПРОЕКТУ FLPROG:
http://flprog.ru/pomoshh-proektu/

Аватара пользователя
Rovki
Полковник
Сообщения: 2803
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 85
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Modbus TCP и Scada сервер

#3

Сообщение Rovki » 14.11.2016{, 16:56}

Так и указывайете  ОПС адрес 1 и 5 ,а он сам считает сколько надо  .Только порядок чередования слов и байт надо соблюсти .
Электронщик до мозга костей и не только

Аватара пользователя
Sancho
Полковник
Сообщения: 3152
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 396
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Modbus TCP и Scada сервер

#4

Сообщение Sancho » 14.11.2016{, 17:20}

И ещё. Если в ардуино не заняты регистры между 2 и 5, то в настройках тэгов ставь галку" последний тэг в груповом запросе", иначе будут ошибки.
Старайся заполнять в слэйвах все регистры подряд, например сначала Holding- и, а потом Coil-ы, тогда ОРС будет читать всё за два запроса.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

bars
Рядовой
Сообщения: 26
Зарегистрирован: 27.11.2015{, 05:59}
Репутация: 0

Modbus TCP и Scada сервер

#5

Сообщение bars » 15.11.2016{, 07:07}

Спасибо за ответы, но:
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 или где?

Аватара пользователя
Dev1
Капитан
Сообщения: 996
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 53
Откуда: Гондурас

Modbus TCP и Scada сервер

#6

Сообщение Dev1 » 15.11.2016{, 08:23}

Вот ТУТ есть настройка Modbus Universal MasterOPC сервера.
Win7-64 FLProg v5.3 Portable, external IDE 1.8.10 + Last Libs :fie:

Аватара пользователя
Sancho
Полковник
Сообщения: 3152
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 396
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Modbus TCP и Scada сервер

#7

Сообщение Sancho » 15.11.2016{, 09:57}

Посмотри, если подкоректируешь параметры связи под свои - попробуешь.

Добавлено (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 отдельно.
Вложения
Float_Integ.flp
(78.39 КБ) 38 скачиваний
Последний раз редактировалось Sancho 15.11.2016{, 10:00}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

bars
Рядовой
Сообщения: 26
Зарегистрирован: 27.11.2015{, 05:59}
Репутация: 0

Modbus TCP и Scada сервер

#8

Сообщение bars » 17.11.2016{, 06:40}

Огромное спасибо!!! Всё понятно!!! Вот всегда бы так доходчиво.....

JonyBest
Рядовой
Сообщения: 18
Зарегистрирован: 18.11.2015{, 22:42}
Репутация: 0

Modbus TCP и Scada сервер

#9

Сообщение JonyBest » 05.07.2017{, 21:57}

Sancho писал(а):Посмотри, если подкоректируешь параметры связи под свои - попробуешь.
Прошу посмотреть. Чуть подправил Ваш пример, но значения типа fload не передаются.
Пробовал и по ТСР и по сом, разницы нет.
Вложения
3396385.jpg
fload.flp
(91.64 КБ) 33 скачивания
Последний раз редактировалось JonyBest 05.07.2017{, 22:40}, всего редактировалось 1 раз.

Аватара пользователя
Dev1
Капитан
Сообщения: 996
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 53
Откуда: Гондурас

Modbus TCP и Scada сервер

#10

Сообщение Dev1 » 06.07.2017{, 08:45}

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


Вложения
3241540.jpg
9133479.jpg
Win7-64 FLProg v5.3 Portable, external IDE 1.8.10 + Last Libs :fie:

Аватара пользователя
Sancho
Полковник
Сообщения: 3152
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 396
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Modbus TCP и Scada сервер

#11

Сообщение Sancho » 06.07.2017{, 09:11}

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

JonyBest
Рядовой
Сообщения: 18
Зарегистрирован: 18.11.2015{, 22:42}
Репутация: 0

Modbus TCP и Scada сервер

#12

Сообщение JonyBest » 06.07.2017{, 09:19}

Огромное спасибо! Вечером буду пробовать.

Всё чётко заработало.
Последний раз редактировалось JonyBest 06.07.2017{, 20:35}, всего редактировалось 1 раз.

bars
Рядовой
Сообщения: 26
Зарегистрирован: 27.11.2015{, 05:59}
Репутация: 0

Modbus TCP и Scada сервер

#13

Сообщение bars » 19.07.2017{, 07:01}

Уважаемые знатоки, подскажите, как переlать переменную типа String из Ардуино по МодБас протоколу?

Аватара пользователя
Sancho
Полковник
Сообщения: 3152
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 396
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Modbus TCP и Scada сервер

#14

Сообщение Sancho » 19.07.2017{, 08:23}

bars писал(а):Уважаемые знатоки, подскажите, как переlать переменную типа String из Ардуино по МодБас протоколу?
В чистом виде - никак, не для этого он.
Посмотри в стороны MQTT - там только string.
Последний раз редактировалось Sancho 19.07.2017{, 08:25}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

pan
Полковник
Сообщения: 2846
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 190
Имя: noname

Modbus TCP и Scada сервер

#15

Сообщение pan » 19.07.2017{, 08:50}

bars писал(а):как переlать переменную типа String
 хотите сказать вы можете принять стринг?

Аватара пользователя
Dev1
Капитан
Сообщения: 996
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 53
Откуда: Гондурас

Modbus TCP и Scada сервер

#16

Сообщение Dev1 » 19.07.2017{, 09:07}

Достаточно передавать № события. А дальше уже привязать № события к определенному сообщению, например из массива.
Win7-64 FLProg v5.3 Portable, external IDE 1.8.10 + Last Libs :fie:

Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 376
Зарегистрирован: 06.09.2015{, 16:04}
Репутация: 4
Откуда: Маркс-Энгелс
Имя: Alexander

Modbus TCP и Scada сервер

#17

Сообщение Grafsaxar » 19.07.2017{, 10:34}

Ардуино нано быстро устаёт при передачи нескольких Float

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

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

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

как только меняю из 15 тёгов 3 на Float бобик сдыхает:)))
Последний раз редактировалось Grafsaxar 19.07.2017{, 10:36}, всего редактировалось 1 раз.
Качество — это делать что-либо правильно, даже когда никто не смотрит

Ответить

Вернуться в «Протоколы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость