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
Re: Как собрать значения отдельных переменных из пакета байт
Posted: Thu Jul 19, 2018 12:49 pm
by Maksim Nevmer
Когда начал разбираться с задачей, прибор был "из коробки" без времени наработки вообще, поэтому я получил пустой пакет байт. На данный момент я доступа к расходомеру не имею, его увезли накапливать значения расхода на объект.
Сделал в проекте пока так - одному адресу присвоил разные типы данных:
MD100 - Real, которое я хочу получить
MB100 - байт 1 из расходомера (младший)
MB101 - байт 2 из расходомера
MB102 - байт 3 из расходомера
MB103 - байт 4 из расходомера
Хочу поиграться с порядком присвоения адресов байтам, думаю, что всё получится.