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

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
Maksim Nevmer
Posts: 8
Joined: Wed Jul 04, 2018 12:40 am

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

Post by Maksim Nevmer »

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

Какими функциями склеить 4 байта, принадлежащие каждой переменной для дальнейшей конвертации, и перекодировать значение переменных в формат Real?
CoMod
Site Admin
Posts: 3992
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia

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

Post 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 
Maksim Nevmer
Posts: 8
Joined: Wed Jul 04, 2018 12:40 am

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

Post by Maksim Nevmer »

А я полез в учебники... Решение на поверхности! Спасибо! Хитро, и главное, понятно!
Завтра протестирую.
Answers to FAQs
Faq & Info
Faq & Info
Posts: 178
Joined: Thu Oct 13, 2005 6:42 pm
Location: Frequently Asked Questions – Часто Задаваемые Вопросы

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

Post by Answers to FAQs »

stl code:

Code: Select all

MD100 
CAD 
MD104
Maksim Nevmer
Posts: 8
Joined: Wed Jul 04, 2018 12:40 am

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

Post by Maksim Nevmer »

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

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