Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании

Вопросы о программировании Вопросы, касающиеся программирования на FBD

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2023, 15:34   #1
66666666
Новичок
 
Регистрация: Mar 2023
Адрес: СПБ
Сообщения: 20
Благодарил(а): 3 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Smile Как читать составные переменные?

На эту же тему вопрос по комплектным шкафам с Пикселями, на скаду нужно вывести температуры, на экране контроллера цифры нормальные, а по модбасу от контроллера идут вот такие цифры на скрине (по порядку - наружная, приток, обратка), если по адресам смотреть, то по первому адресу вообще значения скачут в плюс и в минус, второй адрес постабильнее, как вот это преобразовать в нормальное значение температурыв градусах цельсия? каждая температура занимает два адреса какой адрес брать из двух, второй?
Изображения
Тип файла: png температуры.png (27.4 Кбайт, 41 просмотров)
Тип файла: png температуры 2.png (7.2 Кбайт, 23 просмотров)
66666666 вне форума   Ответить с цитированием
Старый 04.07.2023, 15:37   #2
Ilya J.
Сотрудник Сегнетикс
 
Аватара для Ilya J.
 
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 341
Благодарил(а): 0 раз(а)
Поблагодарили: 255 раз(а) в 251 сообщениях
По умолчанию Ответ: Измерение температуры

Цитата:
Сообщение от 66666666 Посмотреть сообщение
На эту же тему вопрос по комплектным шкафам с Пикселями, на скаду нужно вывести температуры, на экране контроллера цифры нормальные, а по модбасу от контроллера идут вот такие цифры на скрине (по порядку - наружная, приток, обратка), если по адресам смотреть, то по первому адресу вообще значения скачут в плюс и в минус, второй адрес постабильнее, как вот это преобразовать в нормальное значение температурыв градусах цельсия? каждая температура занимает два адреса какой адрес брать из двух, второй?
Лектусом пробовали опрашивать?


__________________
Если ничто другое не помогает, прочтите, наконец, инструкцию
Ilya J. вне форума   Ответить с цитированием
Старый 04.07.2023, 15:40   #3
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Измерение температуры

Цитата:
Сообщение от 66666666 Посмотреть сообщение
каждая температура занимает два адреса какой адрес брать из двух, второй?
Используйте примеры, подтягивайте общую теоретическую подготовку.

https://forum.segnetics.com/showthread.php?t=2231


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 04.07.2023, 15:50   #4
66666666
Новичок
 
Регистрация: Mar 2023
Адрес: СПБ
Сообщения: 20
Благодарил(а): 3 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как читать составные переменные?

эта ссылка точно поможет? в моем случае связь идет по modbus tcp на шнайдеровскую скаду, поэтому модсканом и читаю.
66666666 вне форума   Ответить с цитированием
Старый 04.07.2023, 15:58   #5
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как читать составные переменные?

Цитата:
Сообщение от 66666666 Посмотреть сообщение
эта ссылка точно поможет? в моем случае связь идет по modbus tcp на шнайдеровскую скаду, поэтому модсканом и читаю.
- "Научите меня плавать в реке"
- "Купите абонемент в бассейн + занятия с инструктором"
- "Это точно поможет? В моём случае нужно плавать в реке"


У вас проблема с общей теоретической подготовкой, поэтому вы и не понимаете, что вода во всём мире одинаково мокрая. Т.к. здесь не форум по обучению, я дал вам ссылку, как вы быстро можете получить рабочую связку и посмотреть, как и что в ней настроено.

Раз у вас Modbus-TCP, то в примере нужно выбрать не "Прямое подключение", а "TCP/IP подключение". Это позволит установить связь. Но, по большому счёту, связь вам не нужна, вам нужен конфиг, в котором всё правильно настроено по адресам, типам и функциям чтения/записи.


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 04.07.2023, 17:59   #6
66666666
Новичок
 
Регистрация: Mar 2023
Адрес: СПБ
Сообщения: 20
Благодарил(а): 3 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как читать составные переменные?

можно сносить пост, модсканом прошелся еще раз, сдвиг на два адреса нужно было делать, все нормально видно теперь.
66666666 вне форума   Ответить с цитированием
Старый 04.07.2023, 19:16   #7
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 785
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Как читать составные переменные?

Цитата:
Сообщение от 66666666 Посмотреть сообщение
можно сносить пост, модсканом прошелся еще раз, сдвиг на два адреса нужно было делать, все нормально видно теперь.
А зачем вообще что-то сдвигать?
На первой картинке лежат две вполне нормальных температурки по адресам 40995-40998 в float32


__________________
Не являюсь сотрудником Segnetics !!!
ATS вне форума   Ответить с цитированием
Старый 05.07.2023, 09:14   #8
66666666
Новичок
 
Регистрация: Mar 2023
Адрес: СПБ
Сообщения: 20
Благодарил(а): 3 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как читать составные переменные?

Цитата:
Сообщение от ATS Посмотреть сообщение
А зачем вообще что-то сдвигать?
На первой картинке лежат две вполне нормальных температурки по адресам 40995-40998 в float32
чтобы при сканировании и потом в скаде получить нормальное значение, делал сдвиг на 1, как обычно, а для вещественных нужно было на 2 адреса, тогда все хорошо сканится и показывает. в этом случае это 40995, 40997и 40999. куда в принципе и можно было ткнуть носом и пожурить, вместо "купите абонемент в бассейн" и т.п.
66666666 вне форума   Ответить с цитированием
Старый 05.07.2023, 09:55   #9
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 785
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Как читать составные переменные?

Цитата:
Сообщение от 66666666 Посмотреть сообщение
чтобы при сканировании и потом в скаде получить нормальное значение, делал сдвиг на 1, как обычно,
Зачем? В таблицах контроллеров физическая адресация. Логическая может быть больше только на единицу.


__________________
Не являюсь сотрудником Segnetics !!!
ATS вне форума   Ответить с цитированием
Старый 05.07.2023, 10:43   #10
66666666
Новичок
 
Регистрация: Mar 2023
Адрес: СПБ
Сообщения: 20
Благодарил(а): 3 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как читать составные переменные?

Цитата:
Сообщение от ATS Посмотреть сообщение
Зачем? В таблицах контроллеров физическая адресация. Логическая может быть больше только на единицу.
особенности ОРС сервера - переключение между реальной адресацией и логической.
66666666 вне форума   Ответить с цитированием
Старый 05.07.2023, 10:48   #11
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 785
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Как читать составные переменные?

Цитата:
Сообщение от 66666666 Посмотреть сообщение
особенности ОРС сервера - переключение между реальной адресацией и логической.
Уверены что данные не путаете?


__________________
Не являюсь сотрудником Segnetics !!!
ATS вне форума   Ответить с цитированием
Старый 05.07.2023, 10:57   #12
66666666
Новичок
 
Регистрация: Mar 2023
Адрес: СПБ
Сообщения: 20
Благодарил(а): 3 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как читать составные переменные?

Цитата:
Сообщение от ATS Посмотреть сообщение
Уверены что данные не путаете?
нет, перепроверял вчера сканером на этих трех температурах, сегодня тоже на уставке температуры холдинг регистр и значение инпут регистр приточной температуры, все меняется и считывается при сдвиге на 2 адреса
66666666 вне форума   Ответить с цитированием
Старый 05.07.2023, 14:56   #13
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 785
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Как читать составные переменные?

Цитата:
Сообщение от 66666666 Посмотреть сообщение
нет, перепроверял вчера сканером на этих трех температурах, сегодня тоже на уставке температуры холдинг регистр и значение инпут регистр приточной температуры, все меняется и считывается при сдвиге на 2 адреса
Можно легко нарваться с float32 на проблему при обратном порядке регистров. Будете читать чужое младшее слово и даже этого не заметите.


__________________
Не являюсь сотрудником Segnetics !!!
ATS вне форума   Ответить с цитированием
Старый 05.07.2023, 16:16   #14
66666666
Новичок
 
Регистрация: Mar 2023
Адрес: СПБ
Сообщения: 20
Благодарил(а): 3 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как читать составные переменные?

Цитата:
Сообщение от ATS Посмотреть сообщение
Можно легко нарваться с float32 на проблему при обратном порядке регистров. Будете читать чужое младшее слово и даже этого не заметите.
в моем случае исключено, на установках используется по 3 датчика, последних двух нет, по адресам и названиям соседних переменных можно прийти к выводу, что температуры и адреса соответствуют
Изображения
Тип файла: png коды температур.png (70.3 Кбайт, 16 просмотров)
66666666 вне форума   Ответить с цитированием
Старый 05.07.2023, 16:41   #15
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 785
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Как читать составные переменные?

Цитата:
Сообщение от 66666666 Посмотреть сообщение
в моем случае исключено, на установках используется по 3 датчика, последних двух нет, по адресам и названиям соседних переменных можно прийти к выводу, что температуры и адреса соответствуют
Боюсь неправильный это вывод. Откуда у вас взялось это 1.57e-041?

Цифры будут почти правильные путается только младшая часть мантиссы и на первые три значащих цифры результата она не влияет.

mbs.png

Вместо зеленого читаете красное и путаетесь с порядком слов.


__________________
Не являюсь сотрудником Segnetics !!!

Последний раз редактировалось ATS, 05.07.2023 в 17:02
ATS вне форума   Ответить с цитированием
Старый 05.07.2023, 17:25   #16
66666666
Новичок
 
Регистрация: Mar 2023
Адрес: СПБ
Сообщения: 20
Благодарил(а): 3 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как читать составные переменные?

Цитата:
Сообщение от ATS Посмотреть сообщение
Боюсь неправильный это вывод. Откуда у вас взялось это 1.57e-041?

Цифры будут почти правильные путается только младшая часть мантиссы и на первые три значащих цифры результата она не влияет.

Вложение 11824

Вместо зеленого читаете красное и путаетесь с порядком слов.
вот второй скрин для успокоения души. три пары и четные адреса без свапа, перед этим было со свапом и на одинадрес больше. только что сравнил, одинаковые температуры получаются в обоих случаях. как по мне - скада второй вариант понимает и ладно, цель достигнута.
Изображения
Тип файла: png коды температур 2.png (43.4 Кбайт, 9 просмотров)
66666666 вне форума   Ответить с цитированием
Старый 05.07.2023, 18:33   #17
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 785
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Как читать составные переменные?

Цитата:
Сообщение от 66666666 Посмотреть сообщение
олько что сравнил, одинаковые температуры получаются в обоих случаях.
Объяснял выше
16870 = 0x41E6

0x41E60000 = 01000001 11100110 00000000 00000000
дает температуру 28.75

0x41E6FFFF = 01000001 11100110 11111111 11111111
дает температуру 28.8749980926513671875

Совсем незаметно разницу

А так примерно получается Ваш мусор выше
46331 = 0xB4FB

0x0000B4FB = 00000000 00000000 10110100 11111011
дает 6.49235591506330997129673153234E-41


Цитата:
как по мне - скада второй вариант понимает и ладно, цель достигнута.
Вот при таком подходе 737-е потом в гробы и преращаются. (И так сойдет...)

Ну и при попытке прочитать так long жопа наступит сразу


__________________
Не являюсь сотрудником Segnetics !!!
ATS вне форума   Ответить с цитированием
Ответ


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

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



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


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