Показать сообщение отдельно
Старый 25.01.2024, 17:55   #27
nick86
Senior Member
 
Аватара для nick86
 
Регистрация: Feb 2022
Сообщения: 128
Благодарил(а): 20 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Таблица с регистрами для Deep Sea Electronics, для подключения модбас рту

Цитата:
Сообщение от младшой Посмотреть сообщение
Дело не в том, что контроллер "как-то неправильно показывает данные", а в том, что ваше устройство отдает контроллеру.

Например, 32767 в двоичном виде выглядит 0111 1111 1111 1111 .
Тут явно Deep Sea просто заполняет регистр единицами и нулем, и это отдает контроллеру.
То же самое со значением -1 - в двоичном виде выглядит 1111 1111 1111 1111 .

И какой "тип данных" должен поддерживать контроллер, чтобы показать вам что-то осмысленное?
Я понятия не имею. Дело в том что у них есть своя скада https://www.deepseaelectronics.com/g...ools/dse-scada
но заказчику нужно что бы дгу через контролер диспетчеризации (smh4) заводился в общую скаду на мастерскаде 4д. Понятно дело, что в мастерскаду завести не сложно, а вот получить данные с дгу на плк, вот тут то и проблема, потому что у них типа какой-то свой протокол GenComm.

Сам пдф - https://disk.yandex.ru/i/7bJg5rHmj_19-g


"Дело не в том, что контроллер "как-то неправильно показывает данные", а в том, что ваше устройство отдает контроллеру." Я понимаю, что он отдает какую то ерунду, понятное ему и его скаде наверное, типа если -1 это как null что ли. Просто как мне понимать -1 в конкретном случае что на скришоте.
У 16 бит и есть диапазон -32767 - 32767. Т.е. он просто показывает максимальное значение 32767,когда оно должно быть ограниченно диапазон указанным в pdf -50 - 200. Возможно 32767 в данном случае приравнивается к null что ли тоже, либо я просто нереально туплю.

Что то мне кажется что так и есть, у 16s null = 32767, а у 16u = -1, по крайней мере в этом есть какая-то закономерность. Типа обрыв датчика, вот он и показывает вместо -50 - 200, null. Просто у меня есть чувство, что с дгу что то не так.



Добавлено через 5 минут

Цитата:
Сообщение от ATS Посмотреть сообщение
Модбас вообще ничего не знает о типах данных. Только 16-ти битовые регистры. Остальное это уже представление данных.
Просто что тогда 16, 16S, 16U, 32, 32s
16 понятно что int, 32 это long, а что делать с 16S, 16U, 32S, как получить из них реальное значения, я не понимаю.

Последний раз редактировалось nick86, 25.01.2024 в 18:25
nick86 вне форума   Ответить с цитированием