Page 1 of 1

Как собрать значения отдельных переменных из пакета байт?

Posted: Mon Jul 16, 2018 7:15 am
by Maksim Nevmer
Расходомер US800 присылает пакет данных 19 байт, состоящий из данных о расходе, накопленном расходе, времени наработки, состоянии расходомера и др.
Значения переменных закодированы в шестнадцатеричном формате и занимают по 4 байта.
В документации к расходомеру есть пометка "что младшие байты помещены вперёд".

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

Re: Как собрать значения отдельных переменных из пакета байт

Posted: Mon Jul 16, 2018 9:17 am
by CoMod
В Степ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: Select all

16#3bbbe741 => 41 e7 bb 3b  = 28.96 

Re: Как собрать значения отдельных переменных из пакета байт

Posted: Mon Jul 16, 2018 11:10 am
by Maksim Nevmer
А я полез в учебники... Решение на поверхности! Спасибо! Хитро, и главное, понятно!
Завтра протестирую.

Re: Как собрать значения отдельных переменных из пакета байт

Posted: Tue Jul 17, 2018 12:02 pm
by Answers to FAQs
stl code:

Code: Select all

MD100 
CAD 
MD104

Re: Как собрать значения отдельных переменных из пакета байт

Posted: Thu Jul 19, 2018 12:49 pm
by Maksim Nevmer
Когда начал разбираться с задачей, прибор был "из коробки" без времени наработки вообще, поэтому я получил пустой пакет байт. На данный момент я доступа к расходомеру не имею, его увезли накапливать значения расхода на объект.

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