Вопрос по Modbus
-
- Рядовой
- Сообщения: 11
- Зарегистрирован: 14 июн 2017, 17:01
Вопрос по Modbus
Дело в том что считать надо из Input Register данные типа float! В исходнике (при компиляции FlProg) ковырялся, чуть голову не сломал, не много шарю в С++ но того что знаю не хватает для понимания! Отсюда вопрос: может кто нибудь подскажет куда копать?
PS: Не пинайте за орфографию
PS: Не пинайте за орфографию
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Вопрос по Modbus
Sergey2014, считывайте и делите на 100, будет флоат.
Вопрос по Modbus
starshoy81, ему не преобразовать, а считать нужно переменную флоат
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Вопрос по Modbus
pan, ещё вопрос в каком виде передается эта переменная. У меня есть контроллер солнечных батарей с модбас интерфейсом, так он флоат умножает на 100 и в интеджере передает. И как раз в Input registers.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
Вопрос по Modbus
уже проходили, работает Сообщение # 19
Добавлено (15.06.2017, 08:43)
---------------------------------------------
Надо будет выложить в пользовательские блоки, чтобы не искать...
Добавлено (15.06.2017, 08:43)
---------------------------------------------
Надо будет выложить в пользовательские блоки, чтобы не искать...
Последний раз редактировалось Sancho 15 июн 2017, 15:35, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Рядовой
- Сообщения: 11
- Зарегистрирован: 14 июн 2017, 17:01
Вопрос по Modbus
Спасибо друзья! Буду копать!
Добавлено (15.06.2017, 17:32)
---------------------------------------------
Подключил блок (спасибо Sancho) на выходе блока 0, данные в регистрах есть (подключал к ОРС серверу). Осциллограф в расшифровке протокола пишет что ошибка контрольной суммы (Invalid Checksum) при опросе Input Register, Coil читает нормально.
Назрел другой вопрос: как отправить float в Input Register? Прошу не судить строго за вопрос, я понимаю что всё просто, но голова уже забита, а сделать надо!
Добавлено (15.06.2017, 17:32)
---------------------------------------------
Подключил блок (спасибо Sancho) на выходе блока 0, данные в регистрах есть (подключал к ОРС серверу). Осциллограф в расшифровке протокола пишет что ошибка контрольной суммы (Invalid Checksum) при опросе Input Register, Coil читает нормально.
Назрел другой вопрос: как отправить float в Input Register? Прошу не судить строго за вопрос, я понимаю что всё просто, но голова уже забита, а сделать надо!
Последний раз редактировалось Sergey2014 15 июн 2017, 17:45, всего редактировалось 1 раз.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
Вопрос по Modbus
ОРС сервер считывает флоат правильно?Sergey2014 писал(а):данные в регистрах есть (подключал к ОРС серверу)
На первый вход блока - N регистр, на N+1 второй. Прверенно.
В INPUT REG другого усройства ОТПРАВИТЬ!!! ничего нельзя, поэтому они так и называются. В них раполагаются значения, считанные с датчиков, вычисленные значения, например мощности.Sergey2014 писал(а):Назрел другой вопрос: как отправить float в Input Register?
Их можно создать на устройстве-слэйве, что-бы мастер мог считать показания.
Добавлено (15.06.2017, 17:53)
---------------------------------------------
Проект приложи, посмотрим...
Последний раз редактировалось Sancho 15 июн 2017, 17:55, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Рядовой
- Сообщения: 11
- Зарегистрирован: 14 июн 2017, 17:01
Вопрос по Modbus
Дело в том, что давненько уже сделал переходник (обманку) на основе Arduino + FlProg. Есть Скада ( в неё лезть нельзя) к ней подключены много приборов разделённые по группам. Так вот там есть старые приборы (их уже не выпускают) и одну группу приборов я уже давно поменял на новые с помощью переходника (там просто Input Reg считал с одного адреса и отправил в другой), а вот сейчас уже подошла другая группа приборов и вот у них блин (чтоб не за матерится) этот флоат!
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Вопрос по Modbus
Sergey2014, так флоат эти приборы передают одним или двумя регистрами?
Если одним то смотрите сообщение №2
если двумя, то надо сделать конструкцию вида
где H -старший регистр, а L младший.
Если одним то смотрите сообщение №2
если двумя, то надо сделать конструкцию вида
где H -старший регистр, а L младший.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
Вопрос по Modbus
Идея, поправте если я не прав, в том, чтобы предоставить для скады прибор( ардуино, из которого скада будет читать) в котором будут находится эти самые инпут регистры с типом переменных флоат?Sergey2014 писал(а):Дело в том, что давненько уже сделал переходник (обманку) на основе Arduino + FlProg. Есть Скада ( в неё лезть нельзя) к ней подключены много приборов разделённые по группам. Так вот там есть старые приборы (их уже не выпускают) и одну группу приборов я уже давно поменял на новые с помощью переходника (там просто Input Reg считал с одного адреса и отправил в другой), а вот сейчас уже подошла другая группа приборов и вот у них блин (чтоб не за матерится) этот флоат!
Если так, сделаем обратный блок,раскладывающий флоат на два инпут регистра с типом интегер.
Как вариант, считывать регистры попарно и перекладывать по другим адресам. Уточните суть процесса.
starshoy81, там не интегер, умноженный на сто, там FLOAT(REAL).
Последний раз редактировалось Sancho 16 июн 2017, 08:41, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Рядовой
- Сообщения: 11
- Зарегистрирован: 14 июн 2017, 17:01
Вопрос по Modbus
starshoy81 Спасибо буду разбираться дальше! Sancho всё абсолютно так! Скада сама по себе считывает данные с OPC сервера на который ей указываешь. В моём случае связка MasterOPC Universal Modbus Server + MasterSCADA работает исключительно хорошо со всеми приборами которые работают по Modbas! И свои приборчики делал, на основе нашей любимой FlProg + Arduino nano 328 всё работает на ура! Но вот не всегда всё хорошо и гладко! Блок для раскладки флоат на два интеджера хорошо бы, если не трудно!
Последний раз редактировалось Sergey2014 16 июн 2017, 13:23, всего редактировалось 1 раз.
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Вопрос по Modbus
Sergey2014, всё таки, каким количеством регистров передается флоат этими старыми приборами?
-
- Рядовой
- Сообщения: 11
- Зарегистрирован: 14 июн 2017, 17:01
Вопрос по Modbus
Собственно вот из документа на прибор. Беда в том что попробовал считать Холдинг Регистры как в описании и ... везде 0.00 вот это да, ОРС сервер считывает всё правильно, и настройки тоже прилагаю
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Рядовой
- Сообщения: 11
- Зарегистрирован: 14 июн 2017, 17:01
Вопрос по Modbus
ОРС сервер. Да ещё кстати странно что адреса в ОРС начинаются с 0, если считываю как в описании выдаёт ошибку!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Sergey2014 16 июн 2017, 14:09, всего редактировалось 1 раз.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
Вопрос по Modbus
Если есть доступ к ОРС то может быть проще поменять в нём в нужных тэгах тип регистра с Input Register на Holding Reg с установкой ReadOnly? И без заморочек использовать наш FLPRog с этими самыми холдинг рестрами, поддерживающими float?Sergey2014 писал(а):Sancho всё абсолютно так! Скада сама по себе считывает данные с OPC сервера на который ей указываешь. В моём случае связка MasterOPC Universal Modbus Server + MasterSCADA работает исключительно хорошо со всеми приборами которые работают по Modbas!
Добавлено (16.06.2017, 15:05)
---------------------------------------------
Такое бывает, и на это, как правило, производители ОРС серверов обращают внимание, у одних приборов начало в описании регистров с 0, у других с 1. Я привык считать с 0. А в твоём случае как раз с 1. засады бывают, когда адрес, например 4176, а ты не можешь считать, землю роешь. Сдвигаешь на 1 - и всё ОК.Sergey2014 писал(а):ОРС сервер. Да ещё кстати странно что адреса в ОРС начинаются с 0, если считываю как в описании выдаёт ошибку!
Разобрался - уже хорошо.
Добавлено (16.06.2017, 15:07)
---------------------------------------------
Только почему у тебя(на картинке) типы данных в устройстве и сервере разные?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Рядовой
- Сообщения: 11
- Зарегистрирован: 14 июн 2017, 17:01
Вопрос по Modbus
Да Скада- лицензия, ОРС скрыт, а для опытов я у себя уже установил Скаду и ОРС (бесплатные). Для меня уже спортивный интерес определить как эта гадина передаёт данные. Сейчас вот получилось считать Холдинг регистры только тип переменных типа Long Integer. Число 60.0 отправляет прибор в флоат, а я его принимаю как 17008 Long.
PS: Сам не верю что этим занимаюсь, ещё и умных людей отвлекаю
PS: Сам не верю что этим занимаюсь, ещё и умных людей отвлекаю
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Вопрос по Modbus
Sergey2014, ну вот, смотрите мою картинку в сообщении №10. И адреса которые у Вас в документации указаны, переводите из 16-й системы в 10-ю. Флпрог использует 10-ю адресацию.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
Вопрос по Modbus
Попробуй считать два соседних регистра как инт16.Отпишись какие цифры.
Добавлено (16.06.2017, 15:17)
---------------------------------------------
starshoy81, флоат -число с плавающей запятой, а никак не умноженное на 10, 100. Никогда не знаешь точное количество цифр после запятой.
Добавлено (16.06.2017, 15:17)
---------------------------------------------
starshoy81, флоат -число с плавающей запятой, а никак не умноженное на 10, 100. Никогда не знаешь точное количество цифр после запятой.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Рядовой
- Сообщения: 11
- Зарегистрирован: 14 июн 2017, 17:01
Вопрос по Modbus
Да работает и так и так, поэтому в лом менять!Sancho писал(а):Только почему у тебя(на картинке) типы данных в устройстве и сервере разные?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость