|
Связь с внешним миром Modbus, RS232, RS485, Lon и другое. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
10.03.2018, 21:43 | #1 |
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 насколько я помню там нужно переставлять биты местами или что то такое напомните вылетело из головы и где там найти знак числа может док какой то дайтен ссыль на документину пож а то кроме инта с остальными у меня проблемы |
11.03.2018, 01:25 | #2 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 017
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Modbas C# - 2Gi
На форуме, в этом же разделе под вашей темой: http://forum.segnetics.com/showthread.php?t=461 На форуме, в статьях: http://forum.segnetics.com/showthread.php?t=2666 __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
11.03.2018, 11:15 | #3 |
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 а у меня нет )) Вариант преобразования на стороне контроллера не рассматриваю поскольку контроллер ограничен в ресурсах |
11.03.2018, 12:45 | #4 |
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); всем спасибо сча буду логику читать не закрывайте пока тему пож |
11.03.2018, 16:01 | #5 |
Senior Member
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Modbus, float
остальное все получилось тему можно закрывать
|
21.03.2018, 12:07 | #6 |
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 |
21.03.2018, 12:53 | #7 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 017
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Modbus, float
2) Загрузить в него карту памяти http://forum.segnetics.com/showthread.php?t=2231 3) Посмотреть в логе лектуса, как всё должно работать __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
21.03.2018, 13:56 | #8 |
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 |
21.03.2018, 15:00 | #9 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 017
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Modbus, float
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
21.03.2018, 15:26 | #10 |
Senior Member
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Modbus, float
скинул
|
21.03.2018, 15:38 | #11 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 017
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Modbus, float
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
21.03.2018, 15:40 | #12 |
Senior Member
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Modbus, float
старую карту нажмите
там койлы 3с 00 |
21.03.2018, 15:44 | #13 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 017
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Modbus, float
Пришлите тот проект, с которым коннектитесь. Мне неинтересно испытывать то, что работает без проблем. Мне нужно найти вашу ошибку. Для этого мне нужен ваш проект. PS. Пишете койлы 3800h, теперь говорите 3C00h. Похоже я начинаю понимать вашу проблему. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
21.03.2018, 15:50 | #14 |
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 сори если что |
21.03.2018, 15:57 | #15 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 017
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Modbus, float
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
карта переменных 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 |