Modbus TCP и Scada сервер
Modbus TCP и Scada сервер
У меня вопрос к знатокам, как передать, а точнее как настроить Modbus OPC сервер для получения данных от датчика DHT-11 в Scada систему. Суть вопроса вот в чём, при создании переменной модбас с типом данных Float в FlProg переменной присваивается два адреса (например 1,2 или 5,6) но при получении этой переменной в ModBus OPC сервере при установке типа переменной Float можно поставить только один адрес. Я использую Modbus UniversalMasterOPCServer 32 от компании ИнСат.
-
- Лейтенант
- Сообщения: 537
- Зарегистрирован: 29 окт 2015, 09:57
- Откуда: Kazakhstan
- Имя: Evgesha
Modbus TCP и Scada сервер
вы здесь были ?
http://arduinoprom.ru/arduino....no.html
http://arduinoprom.ru/arduino....ru.html
может чем поможет
http://arduinoprom.ru/arduino....no.html
http://arduinoprom.ru/arduino....ru.html
может чем поможет
Последний раз редактировалось Evgesha 14 ноя 2016, 16:42, всего редактировалось 1 раз.
- Rovki
- Полковник
- Сообщения: 5725
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Modbus TCP и Scada сервер
Так и указывайете ОПС адрес 1 и 5 ,а он сам считает сколько надо .Только порядок чередования слов и байт надо соблюсти .
Электронщик до мозга костей и не только
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Modbus TCP и Scada сервер
И ещё. Если в ардуино не заняты регистры между 2 и 5, то в настройках тэгов ставь галку" последний тэг в груповом запросе", иначе будут ошибки.
Старайся заполнять в слэйвах все регистры подряд, например сначала Holding- и, а потом Coil-ы, тогда ОРС будет читать всё за два запроса.
Старайся заполнять в слэйвах все регистры подряд, например сначала Holding- и, а потом Coil-ы, тогда ОРС будет читать всё за два запроса.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Modbus TCP и Scada сервер
Спасибо за ответы, но:
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 или где?
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
- Майор
- Сообщения: 1045
- Зарегистрирован: 12 июл 2016, 18:04
- Откуда: Гондурас
- Поблагодарили: 3 раза
Modbus TCP и Scada сервер
Вот ТУТ есть настройка Modbus Universal MasterOPC сервера.
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x 

- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Modbus TCP и Scada сервер
Посмотри, если подкоректируешь параметры связи под свои - попробуешь.
Добавлено (15.11.2016, 09:48)
---------------------------------------------
будет пытаться прочитать все 11 за один запрос. Ардуино на попытку прочитать несуществующий 6-й выдаст ошибку и ничего ВООБЩЕ не прочитается.
Поэтому на 5-м в ОРС ставим галочку"последний...", и он будет читать в два запроса 0-5, 7-10.
Надеюсь, сейчас стало яснее?
Добавлено (15.11.2016, 09:57)
---------------------------------------------
Поэтому старайся после окончания написания программы упорядочить все регистры - с 0 и без пропусков. И Holding Reg и Coil.
OPC для чтения этих регистров использует разные запросы, поэтому Holding Reg будут читаться отдельно и в один проход( при отсутсвии пропусков), а Coil отдельно.
Добавлено (15.11.2016, 09:48)
---------------------------------------------
Если между регистрами в ардуино есть незанятое пространство, не обоначеное в программе( например есть от 0 до 10, но нет 6-го), ОРС программа без галочки на 5-мbars писал(а):3. Немного не понятно про не занятые регистры, галочку ставить при настройке регистра 5 или где?
будет пытаться прочитать все 11 за один запрос. Ардуино на попытку прочитать несуществующий 6-й выдаст ошибку и ничего ВООБЩЕ не прочитается.
Поэтому на 5-м в ОРС ставим галочку"последний...", и он будет читать в два запроса 0-5, 7-10.
Надеюсь, сейчас стало яснее?
Добавлено (15.11.2016, 09:57)
---------------------------------------------
Поэтому старайся после окончания написания программы упорядочить все регистры - с 0 и без пропусков. И Holding Reg и Coil.
OPC для чтения этих регистров использует разные запросы, поэтому Holding Reg будут читаться отдельно и в один проход( при отсутсвии пропусков), а Coil отдельно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Sancho 15 ноя 2016, 10:00, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Сержант
- Сообщения: 269
- Зарегистрирован: 18 ноя 2015, 22:42
- Откуда: Близко к Ставрополю
- Имя: Евгений
- Поблагодарили: 2 раза
Modbus TCP и Scada сервер
Прошу посмотреть. Чуть подправил Ваш пример, но значения типа fload не передаются.Sancho писал(а):Посмотри, если подкоректируешь параметры связи под свои - попробуешь.
Пробовал и по ТСР и по сом, разницы нет.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось JonyBest 05 июл 2017, 22:40, всего редактировалось 1 раз.
- Dev1
- Майор
- Сообщения: 1045
- Зарегистрирован: 12 июл 2016, 18:04
- Откуда: Гондурас
- Поблагодарили: 3 раза
Modbus TCP и Scada сервер
Цитата JonyBest () Прошу посмотреть. Чуть подправил Ваш пример, но значения типа fload не передаются.
На OPC сервере в настройках флоата, строка - перестановка байтов в значении поставьте старшим словом вперед.
На OPC сервере в настройках флоата, строка - перестановка байтов в значении поставьте старшим словом вперед.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x 

- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Modbus TCP и Scada сервер
JonyBest, это один из ньюансов модбас флоат в Ардуино. Ничего страшного, нужно просто запомнить и учитывать. И это не эксклюзив - ардуино. Как видите, ОРС сервер готов к любой очереди байт от разных производителей...Dev1 писал(а):поставьте старшим словом вперед
Последний раз редактировалось Sancho 06 июл 2017, 09:14, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Сержант
- Сообщения: 269
- Зарегистрирован: 18 ноя 2015, 22:42
- Откуда: Близко к Ставрополю
- Имя: Евгений
- Поблагодарили: 2 раза
Modbus TCP и Scada сервер
Огромное спасибо! Вечером буду пробовать.
Всё чётко заработало.
Всё чётко заработало.
Последний раз редактировалось JonyBest 06 июл 2017, 20:35, всего редактировалось 1 раз.
Modbus TCP и Scada сервер
Уважаемые знатоки, подскажите, как переlать переменную типа String из Ардуино по МодБас протоколу?
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Modbus TCP и Scada сервер
В чистом виде - никак, не для этого он.bars писал(а):Уважаемые знатоки, подскажите, как переlать переменную типа String из Ардуино по МодБас протоколу?
Посмотри в стороны MQTT - там только string.
Последний раз редактировалось Sancho 19 июл 2017, 08:25, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Modbus TCP и Scada сервер
хотите сказать вы можете принять стринг?bars писал(а):как переlать переменную типа String
- Dev1
- Майор
- Сообщения: 1045
- Зарегистрирован: 12 июл 2016, 18:04
- Откуда: Гондурас
- Поблагодарили: 3 раза
Modbus TCP и Scada сервер
Достаточно передавать № события. А дальше уже привязать № события к определенному сообщению, например из массива.
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x 

- Grafsaxar
- Лейтенант
- Сообщения: 377
- Зарегистрирован: 06 сен 2015, 16:04
- Откуда: Маркс-Энгелс
- Имя: Alexander
Modbus TCP и Scada сервер
Ардуино нано быстро устаёт при передачи нескольких Float
У меня парится и передаёт часто с ошибками.
решил проблему таким образом:
Число от датчика умнажаешь на 100= потом блоком переводишь с Float = Integer
и отсылаешь по модбасу. перед графическим отображением делю число на 100 уже в самой Скаде ресурсами компа:))
Таким образом нано у меня передаёт 15 тэгов .
как только меняю из 15 тёгов 3 на Float бобик сдыхает:)))
У меня парится и передаёт часто с ошибками.
решил проблему таким образом:
Число от датчика умнажаешь на 100= потом блоком переводишь с Float = Integer
и отсылаешь по модбасу. перед графическим отображением делю число на 100 уже в самой Скаде ресурсами компа:))
Таким образом нано у меня передаёт 15 тэгов .
как только меняю из 15 тёгов 3 на Float бобик сдыхает:)))
Последний раз редактировалось Grafsaxar 19 июл 2017, 10:36, всего редактировалось 1 раз.
Качество — это делать что-либо правильно, даже когда никто не смотрит
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость