This is topic Как сделать Канал_HEX32 из двух HEX16? in forum Редактор проекта TRACE MODE 6 / at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/32/t/000866.html

Posted by Selya (Участник № / Member № 6591) on :
 
Здравствуйте, AdAstra!
Имеется устройство, передающее по modbus некоторые данные:

Адрес Название
116 DP_TENS_G (натяжение в граммах первые 2 байта из 4)
117 DP_TENS_G (натяжение в граммах вторые 2 байта из 4)

Com-порт настроил.

В "Источники/Приёмники" добавил два компонента "Rout_Word(3)", читаю данные с адресов 116 (74hex) и 117 (75hex), данные идут следующие: "a08 c".

Если "перевернуть" эти данные (000c 0a08), то получится нужное мне правильное число 789000.

Так вот, подскажите пожалуйста, как мне "перевернуть" эти данные, чтобы получилось правильное число, и потом поделить его на 1000, чтобы было в килограммах.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Про "переворот"
http://forum.adastra.ru/cgi-bin/ultimatebb.cgi/ubb/get_topic/f/55/t/000001.html

quote:
При получении данных по протоколу Modbus значение приходит, но отображается в некорректном виде. Не соответствует порядок следования байт. Как его изменить?

Для изменения порядка следования байт в MODBUS RTU используется конфигурационный *.cnf файл. Для примера для FLOAT используется ключ
MDB_FRMT_FLOAT=x,y . x – номер COM-порта, начиная с 0, y – номер перестановки 0,1,2 или 3. Полное описание есть в справке:
Обмен с контроллерами и УСО -> Обмен по встроенным протоколам -> Обмен по MODBUS (RTU)

Для изменения порядка следования байт в MODBUS TCP в проекте для отдельного Источника/Приемника Modbus в строке IP-адрес через точку с запятой задается ключ
FRMT=SWAPy; y – номер перестановки 0,1,2 или 3. Полное описание есть в справке:
Обмен с контроллерами и УСО -> Обмен по встроенным протоколам -> Обмен по встроенным протоколам по сети (TCP)

Номера перестановки:
0 –> 3-2-1-0
1 –> 0-1-2-3
2 –> 1-0-3-2
3 –> 2-3-0-1

Делить на 1000 можно программно или с помощью "Обработка" (Канал Float - Редактирование - Множитель)
 
Posted by Selya (Участник № / Member № 6591) on :
 
Спасибо. Хотелось бы уточнить. При создании в «Источники/Приёмники»-MODBUS_1 компонента Rout_Word(3), а затем перетаскивание его drag&drop-ом в каналы будет создан канал Rout_Word(3), размерностью в 16 бит. Как мне из двух последовательных компонентов Rout_Word(3) «склеить» один канал HEX32, причём сначала идёт второй канал, потом первый. Об этом шла речь. Создавать FBD-программу?
 
Posted by Selya (Участник № / Member № 6591) on :
 
Ответ нашёл здесь:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/32/t/000687.html#000001
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2