Segnetics

Вернуться   Segnetics > Форум Segnetics > Связь с внешним миром

Связь с внешним миром Modbus, RS232, RS485, Lon и другое.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.03.2018, 21:43   #1
kostkost
Senior Member
 
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Modbus, float

читаю по ТСП переменную флоат
запрос
00 00 00 00 00 06 01 04 A0 00 00 02 00
ответ
00 00 00 00 00 0F 01 04 0C 00 00 3F 80

на выходе стоит число 1
насколько я помню там нужно переставлять биты местами или что то такое
напомните вылетело из головы
и где там найти знак числа
может док какой то
дайтен ссыль на документину пож а то кроме инта с остальными у меня проблемы
kostkost вне форума   Ответить с цитированием
Старый 11.03.2018, 01:25   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 017
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Modbas C# - 2Gi

Цитата
Сообщение от kostkost Посмотреть сообщение
читаю по ТСП переменную флоат
запрос
00 00 00 00 00 06 01 04 A0 00 00 02 00
ответ
00 00 00 00 00 0F 01 04 0C 00 00 3F 80

на выходе стоит число 1
насколько я помню там нужно переставлять биты местами или что то такое
напомните вылетело из головы
и где там найти знак числа
может док какой то
дайтен ссыль на документину пож а то кроме инта с остальными у меня проблемы
Гугл или Википедия, IEEE-754.

На форуме, в этом же разделе под вашей темой: http://forum.segnetics.com/showthread.php?t=461

На форуме, в статьях: http://forum.segnetics.com/showthread.php?t=2666


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 11.03.2018, 11:15   #3
kostkost
Senior Member
 
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Modbus, float

Не проблема поменять байты местами как вы написали
FLOAT и LONG побайтно передаются в порядке 3-4-1-2, т.е. число LONG, равное 08403020h передаётся как 30h.20h.08h.40h

В моем случае это на входе 1
на сервере 00 00 3F 80 т е при пересчете 3F 80 00 00(10 ое 1065353216)
как из 1 получается такое 1065353216 ? вот не понимаю я
в двоично- шестнадц.. виде
00 11 11 11 10 00 00 00 00 00 00 00 ...
здесь
первые два ноля это знак числа я так понял
а дальше темный лес
Мне непонятно где найти точку а еще там Е может быть я так понял.
нашел в ОПС сервере такую строку
Перестановка байтов в значении 10325476
Только я не понял там 8 байт а в контроллере 4 же?
Сервер получает теже ответы что и я но у него из 3F 80 00 00 получается 1 а у меня нет ))
Вариант преобразования на стороне контроллера не рассматриваю поскольку контроллер ограничен в ресурсах
kostkost вне форума   Ответить с цитированием
Старый 11.03.2018, 12:45   #4
kostkost
Senior Member
 
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Modbus, float

Вопрос решился

byte[] buf = new byte[8];
// ответ контроллера 50 00 47 C3 (1 2 3 4 )
// в с# должен выгледить так ( 2 1 4 3)
buf[0] = 0x00;
buf[1] = 0x50;
buf[2] = 0xc3;
buf[3] = 0x47;
float x = BitConverter.ToSingle(buf, 0);
textBox3.Text = Convert.ToString(x);
всем спасибо сча буду логику читать не закрывайте пока тему пож
kostkost вне форума   Ответить с цитированием
Старый 11.03.2018, 16:01   #5
kostkost
Senior Member
 
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Modbus, float

остальное все получилось тему можно закрывать
kostkost вне форума   Ответить с цитированием
Старый 21.03.2018, 12:07   #6
kostkost
Senior Member
 
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Modbus, float

Пытаюсь изменить переменную Input status типа bool с адресом 3800h
команда 05 передавая значение FF 00
05 38 00 FF 00
получаю ощибку 85
85 38 00 FF 00
подскажите как задавать запрос на запись bool
kostkost вне форума   Ответить с цитированием
Старый 21.03.2018, 12:53   #7
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 017
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Modbus, float

Цитата
Сообщение от kostkost Посмотреть сообщение
Пытаюсь изменить переменную Input status типа bool с адресом 3800h
команда 05 передавая значение FF 00
05 38 00 FF 00
получаю ощибку 85
85 38 00 FF 00
подскажите как задавать запрос на запись bool
1) Скачать и установить lectus OPC/DDE server www.lectussoft.com

2) Загрузить в него карту памяти http://forum.segnetics.com/showthread.php?t=2231

3) Посмотреть в логе лектуса, как всё должно работать


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 21.03.2018, 13:56   #8
kostkost
Senior Member
 
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Modbus, float

лектус использует 15 команду на запись и она тоже не работает )
а команда 05 вобще поддерживается?

Типы команд Modbus TCP

Приведем таблицу с кодами функций чтения и записи регистров Modbus TCP.
Код функции Что делает функция Тип значения Тип доступа
01 (0x01) Чтение DO Read Coil Status Дискретное Чтение
02 (0x02) Чтение DI Read Input Status Дискретное Чтение
03 (0x03) Чтение AO Read Holding Registers 16 битное Чтение
04 (0x04) Чтение AI Read Input Registers 16 битное Чтение
05 (0x05) Запись одного DO Force Single Coil Дискретное Запись
06 (0x06) Запись одного AO Preset Single Register 16 битное Запись
15 (0x0F) Запись нескольких DO Force Multiple Coils Дискретное Запись
16 (0x10) Запись нескольких AO Preset Multiple Registers 16 битное Запись

он не реагирует не на ff 00
00 ff
00 01
01 00
ff ff
вобщем ни как создается впечатление что команда одиночной записи койла не поддерживается

Последний раз редактировалось kostkost, 21.03.2018 в 14:17
kostkost вне форума   Ответить с цитированием
Старый 21.03.2018, 15:00   #9
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 017
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Modbus, float

Цитата
Сообщение от kostkost Посмотреть сообщение
а команда 05 вобще поддерживается?

вобщем ни как создается впечатление что команда одиночной записи койла не поддерживается
Прикрепите ваш проект, пожалуйста.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 21.03.2018, 15:26   #10
kostkost
Senior Member
 
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Modbus, float

скинул
Вложения
Тип файла: psl Untitled.psl (12.3 Кбайт, 29 просмотров)
kostkost вне форума   Ответить с цитированием
Старый 21.03.2018, 15:38   #11
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 017
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Modbus, float

Цитата
Сообщение от kostkost Посмотреть сообщение
скинул
Где вы в этом проекте нашли койлы по адресу 3800h?
Миниатюры
Нажмите на картинку для увеличения

Название:  Безымянный.png
Просмотров: 144
Размер:  47.5 Кбайт  


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 21.03.2018, 15:40   #12
kostkost
Senior Member
 
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Modbus, float

старую карту нажмите
там койлы 3с 00
kostkost вне форума   Ответить с цитированием
Старый 21.03.2018, 15:44   #13
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 017
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Modbus, float

Цитата
Сообщение от kostkost Посмотреть сообщение
старую карту нажмите
там койлы 3с 00
Я ничего нажимать не буду. Вы должны были прислать тот проект, что загружаете, безо всяких "смотрите туда, не смотрите сюда".

Пришлите тот проект, с которым коннектитесь. Мне неинтересно испытывать то, что работает без проблем. Мне нужно найти вашу ошибку. Для этого мне нужен ваш проект.

PS. Пишете койлы 3800h, теперь говорите 3C00h. Похоже я начинаю понимать вашу проблему.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 21.03.2018, 15:50   #14
kostkost
Senior Member
 
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Modbus, float

да похоже когда тестил 05 писал 3800
а когда перешел на 0F наал писать 3с 00
вобщем исправил
05 3с 00 ff 00 ставит в 1
05 3с 00 00 00 ставит в 0
сори если что
kostkost вне форума   Ответить с цитированием
Старый 21.03.2018, 15:57   #15
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 017
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Modbus, float

Цитата
Сообщение от kostkost Посмотреть сообщение
да похоже когда тестил 05 писал 3800
а когда перешел на 0F наал писать 3с 00
вобщем исправил
05 3с 00 ff 00 ставит в 1
05 3с 00 00 00 ставит в 0
сори если что
Если бы вы с самого начала сделали по картинкам из моей ссылки, то и ошибку свою нашли бы быстрее.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
карта переменных MODBUS serg_19 Вопросы о программировании 15 18.12.2017 16:32
Honeywell MVC80-DH10M LordN Связь с внешним миром 30 28.11.2016 14:21
Форматы передачи "длинных" регистров MODBUS Arsie Библиотека 0 20.06.2016 12:30
Конвертер карты памяти в файл конфигурации Modbus Universal MasterOPC Server 32 Arsie Библиотека макросов 0 25.04.2016 13:38


Часовой пояс GMT +4, время: 14:37.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023