Как считать 4хбайтовое слово по модбасу?
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Как считать 4хбайтовое слово по модбасу?
У меня есть ЗУ от солнечных батарей Epsolar tracer 3215bn, в котором есть возможность выдавать параметры по модбас рту. Сделал проект с выдачей инфо на вебстраницу. С 2хбайтовыми регистрами все работает и показывает отлично. Затык с четырехбайтовыми словами. По описанию протокола ЗУ, данные передаются двумя двухбайтовыми словами, младшим и старшим из которых и надо собрать 4хбайтовое слово.
вот картинка пояснение
вот адреса для примера
Перепробовал все типы переменных для регистра, пробовал пользовательские блоки преобразования типов данных. Результат все время "0". Причем значение там точно есть, оно отображается на комплектном дисплее-контроллере.
Есть ли возможность в штатными средствами флпрога вытащить эти регистры?
Еще интересно каким образом получить вот такую информацию:
Приложил файл с описанием протокола.
вот картинка пояснение
вот адреса для примера
Перепробовал все типы переменных для регистра, пробовал пользовательские блоки преобразования типов данных. Результат все время "0". Причем значение там точно есть, оно отображается на комплектном дисплее-контроллере.
Есть ли возможность в штатными средствами флпрога вытащить эти регистры?
Еще интересно каким образом получить вот такую информацию:
Приложил файл с описанием протокола.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось starshoy81 02 мар 2017, 08:57, всего редактировалось 1 раз.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Как считать 4хбайтовое слово по модбасу?
Один регистр = 2 байта = 16 бит.
Два регистра = 4 байта = 32 бита.
4 байта = одна переменная типа флоат или long(word, int)/
Так что никаких проблем возникнуть не должно, я думаю.
P.S.
Попробуй считать, если уж совсем не получается, эти данные с помощью компьютера и проги Modbus Universal MasterOPC Server 32 СКАЧАТЬ
Проверил из примера в pdf пункт 4 - всё правильно, там longint( или DINT, как кому больше нравиться)
Примерная конфигурация для тебя к Modbus Universal MasterOPC Server 32
Два регистра = 4 байта = 32 бита.
4 байта = одна переменная типа флоат или long(word, int)/
Так что никаких проблем возникнуть не должно, я думаю.
P.S.
Попробуй считать, если уж совсем не получается, эти данные с помощью компьютера и проги Modbus Universal MasterOPC Server 32 СКАЧАТЬ
Проверил из примера в pdf пункт 4 - всё правильно, там longint( или DINT, как кому больше нравиться)
Примерная конфигурация для тебя к Modbus Universal MasterOPC Server 32
Последний раз редактировалось Sancho 02 мар 2017, 09:23, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Как считать 4хбайтовое слово по модбасу?
Sancho, я пробовал все типы переменных, они все показывают 0. Вопрос в том в каком порядке флпрог интепретирует эти байты. А спецпрограммой я и так могу считать, мне нужно в флпроге.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Как считать 4хбайтовое слово по модбасу?
У тебя получилось считывать стороними прогами?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Как считать 4хбайтовое слово по модбасу?
Вы точно уверены, что у вас ModBas в этом устройстве активирован?starshoy81 писал(а):Sancho, я пробовал все типы переменных, они все показывают 0.
Еще, надо правильно МодБас шины соединять. Через дренажные резисторы минусы соединять нужно, либо внимательно само подключение посмотреть.
У меня такая же история была, МодБас ничего передавать не хотел, потом соединил по одной из схем (с дренажным резистором) и все сразу заработало...
Последний раз редактировалось Max 02 мар 2017, 09:42, всего редактировалось 1 раз.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Как считать 4хбайтовое слово по модбасу?
Если не читает эти регтстры как Holding, тогда читай как Input, потом High reg * 65536 + Low reg = Uns long int
Не забывай переводить адреса из Hex в Dec для FLPRog
Добавлено (02.03.2017, 09:43)
---------------------------------------------
Max,
Не забывай переводить адреса из Hex в Dec для FLPRog
Добавлено (02.03.2017, 09:43)
---------------------------------------------
Max,
starshoy81 писал(а):С 2хбайтовыми регистрами все работает и показывает отлично. Затык с четырехбайтовыми словами.
Последний раз редактировалось Sancho 02 мар 2017, 09:49, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Как считать 4хбайтовое слово по модбасу?
Sancho,
Вот это попробую.Sancho писал(а):Если не читает эти регтстры как Holding, тогда читай как Input, потом High reg * 65536 + Low reg = Uns long int
- nalnik
- Подполковник
- Сообщения: 1320
- Зарегистрирован: 14 май 2016, 17:12
- Откуда: Кисловодск
- Имя: Александр
Как считать 4хбайтовое слово по модбасу?
starshoy81
Почитай, я делаю так;
таи и чтение и передача
http://forum.flprogwiki.ru/viewtopic.php?f=5&t=1795
И обрати внимание на Адраса
Почитай, я делаю так;
таи и чтение и передача
http://forum.flprogwiki.ru/viewtopic.php?f=5&t=1795
И обрати внимание на Адраса
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось nalnik 02 мар 2017, 10:44, всего редактировалось 1 раз.
Я хочу быть добрее, но люди сами нарываются.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Как считать 4хбайтовое слово по модбасу?
nalnik, у starshoy81 пока проблема с чтением - прога читает input регистры по одному, ситать одно long значение из двух регистров не получается.
А для флоат однозначно надо блок пользователя организовывать, для long тоже можно сделать, что-бы меньше места на плате занимало.
А для флоат однозначно надо блок пользователя организовывать, для long тоже можно сделать, что-бы меньше места на плате занимало.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Как считать 4хбайтовое слово по модбасу?
Этот совет попал в яблочкоSancho писал(а):Если не читает эти регтстры как Holding, тогда читай как Input, потом High reg * 65536 + Low reg = Uns long int

В общем моя первая ошибка была в том, что я считывал регистры не из той области памяти (вместо инпут читал холдинг).
Вторая заключается в том, что я забыл чему меня учили когда то

Слепил простенький блок пользователя для двух математических операций, чтобы меньше занимало места на экране.
На 100 делю т.к. в ЗУ видимо счет ведёт целочисленными и выдает в интерфейс данные целочисленные.
Адреса в InpReg
блок пользователя в приложении.
Всем спасибо за советы
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Как считать 4хбайтовое слово по модбасу?
Можно подниму тему. Вот считал я со счетчика показания напряжения. Указанным методом. Имею на выходе число 436a2b41. По описанию число в формате IEEE 754 . В онлайн калькуляторе я его могу перевести в десятичный вид. А как мне его в FLprog перевести? Может кто сталкивался?
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Как считать 4хбайтовое слово по модбасу?
Kit, Вы считали указанным способом значения двух регистров, а Вам, как я понимаю, нужен флоат?
Данный пример был необходим для получения переменной типа long integer/
Вам необходимо просто указать переменную типа флоат и адрес первого регистра. И всё, всё остальное сделает программа.
Данный пример был необходим для получения переменной типа long integer/
Вам необходимо просто указать переменную типа флоат и адрес первого регистра. И всё, всё остальное сделает программа.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Как считать 4хбайтовое слово по модбасу?
Не совсем так. Значение хранится в двух регистрах. Поэтому и считывал оба.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Как считать 4хбайтовое слово по модбасу?
Вот пример из инструкции.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Как считать 4хбайтовое слово по модбасу?
Ну и весь мануал. Там есть про представление числа. Но с математикой у меня чего то туго.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Как считать 4хбайтовое слово по модбасу?
Kit, Вы меня недопоняли/недоуслышали - при чтении флоат переменных АВТОМАТИЧЕСКИ читаются ДВА регистра. Необходимо лишь указать первый.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Как считать 4хбайтовое слово по модбасу?
Но это если Holding регистры? А у меня данные хранятся в Input регистрах.
Там считывается только один регистр. Или я чего то не понял?
Там считывается только один регистр. Или я чего то не понял?
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Как считать 4хбайтовое слово по модбасу?
Сори, вспомнил о модбасе FLPRog.
Сейчас придумаем.
Добавлено (17.05.2017, 17:34)
---------------------------------------------
Если таких преобразований будет несколько в проекте, то правильней будет создать не пользовательский блок , а функцию.
Сейчас придумаем.
Добавлено (17.05.2017, 17:34)
---------------------------------------------
Если таких преобразований будет несколько в проекте, то правильней будет создать не пользовательский блок , а функцию.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Как считать 4хбайтовое слово по модбасу?
Прошу попробовать
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей