FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Четверг, 14.12.2017, 13:00
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: support, Сергей, Anydy, Олег 
Форум » Основной » Железо - контроллеры, шилды, датчики и др. » Протоколы » Вопрос по Modbus
Вопрос по Modbus
Sergey2014 Дата: Среда, 14.06.2017, 17:11 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 11
Награды: 1
Репутация: 0
Статус: Offline
Дело в том что считать надо из Input Register данные типа float! В исходнике (при компиляции FlProg) ковырялся, чуть голову не сломал, не много шарю в С++ но того что знаю не хватает для понимания! Отсюда вопрос: может кто нибудь подскажет куда копать?
PS: Не пинайте за орфографию wacko
 
starshoy81 Дата: Среда, 14.06.2017, 20:36 | Сообщение # 2
Подполковник
Группа: Проверенные
Сообщений: 238
Награды: 1
Репутация: 0
Статус: Offline
Sergey2014, считывайте и делите на 100, будет флоат.
 
pan Дата: Среда, 14.06.2017, 21:21 | Сообщение # 3
Генерал-полковник
Группа: Проверенные
Сообщений: 1241
Награды: 41
Репутация: 38
Статус: Offline
starshoy81, ему не преобразовать, а считать нужно переменную флоат
 
starshoy81 Дата: Среда, 14.06.2017, 22:02 | Сообщение # 4
Подполковник
Группа: Проверенные
Сообщений: 238
Награды: 1
Репутация: 0
Статус: Offline
pan, ещё вопрос в каком виде передается эта переменная. У меня есть контроллер солнечных батарей с модбас интерфейсом, так он флоат умножает на 100 и в интеджере передает. И как раз в Input registers.
 
pan Дата: Среда, 14.06.2017, 22:11 | Сообщение # 5
Генерал-полковник
Группа: Проверенные
Сообщений: 1241
Награды: 41
Репутация: 38
Статус: Offline
я не знаю, как написал ТС так я и говорю.
 
Sancho Дата: Четверг, 15.06.2017, 08:43 | Сообщение # 6
Генерал-майор
Группа: Проверенные
Сообщений: 576
Награды: 16
Репутация: 19
Статус: Online
уже проходили, работает     Сообщение # 19 

Добавлено (15.06.2017, 08:43)
---------------------------------------------
Надо будет выложить в пользовательские блоки, чтобы не искать...


Если не получится на контроллере - сделаю на тразисторах и 155/176...

Сообщение отредактировал Sancho - Четверг, 15.06.2017, 15:35
 
Sergey2014 Дата: Четверг, 15.06.2017, 17:32 | Сообщение # 7
Рядовой
Группа: Проверенные
Сообщений: 11
Награды: 1
Репутация: 0
Статус: Offline
Спасибо друзья! Буду копать!

Добавлено (15.06.2017, 17:32)
---------------------------------------------
Подключил блок (спасибо Sancho) на выходе блока 0, данные в регистрах есть (подключал к ОРС серверу). Осциллограф в расшифровке протокола пишет что ошибка контрольной суммы (Invalid Checksum) при опросе  Input Register, Coil читает нормально.
Назрел другой вопрос: как отправить float в Input Register? Прошу не судить строго за вопрос, я понимаю что всё просто, но голова уже забита, а сделать надо!


Сообщение отредактировал Sergey2014 - Четверг, 15.06.2017, 17:45
 
Sancho Дата: Четверг, 15.06.2017, 17:53 | Сообщение # 8
Генерал-майор
Группа: Проверенные
Сообщений: 576
Награды: 16
Репутация: 19
Статус: Online
Цитата Sergey2014 ()
данные в регистрах есть (подключал к ОРС серверу)
ОРС сервер считывает флоат правильно?
На первый вход блока - N регистр, на N+1 второй. Прверенно.
Цитата Sergey2014 ()
Назрел другой вопрос: как отправить float в Input Register?
В INPUT REG другого усройства ОТПРАВИТЬ!!! ничего нельзя, поэтому они так и называются. В них раполагаются значения, считанные с датчиков, вычисленные значения, например мощности.
Их можно создать на устройстве-слэйве, что-бы мастер мог считать показания.

Добавлено (15.06.2017, 17:53)
---------------------------------------------
Проект приложи, посмотрим...


Если не получится на контроллере - сделаю на тразисторах и 155/176...

Сообщение отредактировал Sancho - Четверг, 15.06.2017, 17:55
 
Sergey2014 Дата: Четверг, 15.06.2017, 18:26 | Сообщение # 9
Рядовой
Группа: Проверенные
Сообщений: 11
Награды: 1
Репутация: 0
Статус: Offline
Дело в том, что давненько уже сделал переходник (обманку) на основе Arduino + FlProg. Есть Скада ( в неё лезть нельзя) к ней подключены много приборов разделённые по группам. Так вот там есть старые приборы (их уже не выпускают) и одну группу приборов я уже давно поменял на новые с помощью переходника (там просто Input Reg считал с одного адреса и отправил в другой), а вот сейчас уже подошла другая группа приборов и вот у них блин (чтоб не за матерится) этот флоат!
 
starshoy81 Дата: Четверг, 15.06.2017, 20:46 | Сообщение # 10
Подполковник
Группа: Проверенные
Сообщений: 238
Награды: 1
Репутация: 0
Статус: Offline
Sergey2014, так флоат эти приборы передают одним или двумя регистрами?
Если одним то смотрите сообщение №2
если двумя, то надо сделать конструкцию вида

где H -старший регистр, а L младший.
Прикрепления: 5179832.png(5Kb)
 
Sancho Дата: Пятница, 16.06.2017, 08:39 | Сообщение # 11
Генерал-майор
Группа: Проверенные
Сообщений: 576
Награды: 16
Репутация: 19
Статус: Online
Цитата Sergey2014 ()
Дело в том, что давненько уже сделал переходник (обманку) на основе Arduino + FlProg. Есть Скада ( в неё лезть нельзя) к ней подключены много приборов разделённые по группам. Так вот там есть старые приборы (их уже не выпускают) и одну группу приборов я уже давно поменял на новые с помощью переходника (там просто Input Reg считал с одного адреса и отправил в другой), а вот сейчас уже подошла другая группа приборов и вот у них блин (чтоб не за матерится) этот флоат!
Идея, поправте если я не прав, в том, чтобы  предоставить для скады прибор( ардуино, из которого скада будет читать) в котором будут находится эти самые инпут регистры с типом переменных флоат?
Если так, сделаем обратный блок,раскладывающий флоат на два инпут регистра с типом интегер.
Как вариант, считывать регистры попарно и перекладывать по другим адресам. Уточните суть процесса.
starshoy81, там не интегер, умноженный на сто, там FLOAT(REAL).


Если не получится на контроллере - сделаю на тразисторах и 155/176...

Сообщение отредактировал Sancho - Пятница, 16.06.2017, 08:41
 
Sergey2014 Дата: Пятница, 16.06.2017, 13:19 | Сообщение # 12
Рядовой
Группа: Проверенные
Сообщений: 11
Награды: 1
Репутация: 0
Статус: Offline
starshoy81 Спасибо буду разбираться дальше! Sancho всё абсолютно так! Скада сама по себе считывает данные с OPC сервера на который ей указываешь. В моём случае связка MasterOPC Universal Modbus Server + MasterSCADA работает исключительно хорошо со всеми приборами которые работают по Modbas! И свои приборчики делал, на основе нашей любимой FlProg + Arduino nano 328  всё работает на ура! Но вот не всегда всё хорошо и гладко! Блок для раскладки флоат на два интеджера хорошо бы, если не трудно!

Сообщение отредактировал Sergey2014 - Пятница, 16.06.2017, 13:23
 
starshoy81 Дата: Пятница, 16.06.2017, 13:43 | Сообщение # 13
Подполковник
Группа: Проверенные
Сообщений: 238
Награды: 1
Репутация: 0
Статус: Offline
Sergey2014, всё таки, каким количеством регистров передается флоат этими старыми приборами?
 
Sergey2014 Дата: Пятница, 16.06.2017, 14:05 | Сообщение # 14
Рядовой
Группа: Проверенные
Сообщений: 11
Награды: 1
Репутация: 0
Статус: Offline
Собственно вот из документа на прибор. Беда в том что попробовал считать Холдинг Регистры как в описании и ... везде 0.00 вот это да, ОРС сервер считывает всё правильно, и настройки тоже прилагаю
Прикрепления: 9107415.jpg(49Kb)
 
Sergey2014 Дата: Пятница, 16.06.2017, 14:07 | Сообщение # 15
Рядовой
Группа: Проверенные
Сообщений: 11
Награды: 1
Репутация: 0
Статус: Offline
ОРС сервер. Да ещё кстати странно что адреса в ОРС начинаются с 0, если считываю как в описании выдаёт ошибку!
Прикрепления: 1308597.jpg(66Kb) · 4051895.jpg(55Kb) · 7700186.jpg(49Kb)


Сообщение отредактировал Sergey2014 - Пятница, 16.06.2017, 14:09
 
Форум » Основной » Железо - контроллеры, шилды, датчики и др. » Протоколы » Вопрос по Modbus
Страница 1 из 212»
Поиск:

FLProg © 2017
Яндекс.Метрика