plcforum.uz.ua
http://plcforum.uz.ua/

Как собрать значения отдельных переменных из пакета байт?
http://plcforum.uz.ua/viewtopic.php?f=9&t=26234
Page 1 of 1

Author:  Maksim Nevmer [ Mon Jul 16, 2018 10:15 am ]
Post subject:  Как собрать значения отдельных переменных из пакета байт?

Расходомер US800 присылает пакет данных 19 байт, состоящий из данных о расходе, накопленном расходе, времени наработки, состоянии расходомера и др.
Значения переменных закодированы в шестнадцатеричном формате и занимают по 4 байта.
В документации к расходомеру есть пометка "что младшие байты помещены вперёд".

Какими функциями склеить 4 байта, принадлежащие каждой переменной для дальнейшей конвертации, и перекодировать значение переменных в формат Real?

Author:  CoMod [ Mon Jul 16, 2018 12:17 pm ]
Post subject:  Re: Как собрать значения отдельных переменных из пакета байт

В Степ7 в Таблице Символов можно одному адресу присвоить разные типы данных:
MD100 //16#3bbbe741 = 3b bb e7 41
MB100
MB101
MB102
MB103
отсюда пересыл MOVE байт 3b bb e7 41
сюда в нужном порядке 41 e7 bb 3b
MB104
MB105
MB106
MB107
MD104 // и читать результат тут 41 e7 bb 3b = 28.96
для наглядности можешь в статике отладить функцию в PLCSIM
Code:
16#3bbbe741 => 41 e7 bb 3b  = 28.96

Author:  Maksim Nevmer [ Mon Jul 16, 2018 2:10 pm ]
Post subject:  Re: Как собрать значения отдельных переменных из пакета байт

А я полез в учебники... Решение на поверхности! Спасибо! Хитро, и главное, понятно!
Завтра протестирую.

Author:  Answers to FAQs [ Tue Jul 17, 2018 3:02 pm ]
Post subject:  Re: Как собрать значения отдельных переменных из пакета байт

stl code:
Code:
MD100
CAD
MD104

Author:  Maksim Nevmer [ Thu Jul 19, 2018 3:49 pm ]
Post subject:  Re: Как собрать значения отдельных переменных из пакета байт

Когда начал разбираться с задачей, прибор был "из коробки" без времени наработки вообще, поэтому я получил пустой пакет байт. На данный момент я доступа к расходомеру не имею, его увезли накапливать значения расхода на объект.

Сделал в проекте пока так - одному адресу присвоил разные типы данных:
MD100 - Real, которое я хочу получить
MB100 - байт 1 из расходомера (младший)
MB101 - байт 2 из расходомера
MB102 - байт 3 из расходомера
MB103 - байт 4 из расходомера
Хочу поиграться с порядком присвоения адресов байтам, думаю, что всё получится.

Page 1 of 1 All times are UTC + 3 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/