PDA

Просмотр полной версии : 2 переменные word в 1 lint



stumex
08.04.2017, 12:00
Всем доброго времени суток.
Вопрос такой. Передаю из ардуинки long integer. двумя переменными word. как их сложить обратно в кодесисе? ))

melky
08.04.2017, 14:32
в CodeSys есть DWORD

stumex
10.04.2017, 08:07
Ну на счет переменных я в курсе. Интересует команда преобразования. по типу такой: word_to_lint.
Сейчас складываю так:

test3:=(test1*65536)+test2;
test4:=((65536*65536)-test3)*(-1);
IF test1>32768 THEN test5:=test4; ELSE test5:=test3; END_IF;
где test1,2. входные значения.

Евгений Кислов
10.04.2017, 08:10
Ну на счет переменных я в курсе. Интересует команда преобразования. по типу такой: word_to_lint.

Как вариант, в библиотеке CAA Memory есть функция PackWordsToDword. На выходе, соответственно, DWORD, и его уже конвертируем с помощью DWORD_TO_DINT.

Осинский Алексей
10.04.2017, 08:57
Правильно ли я понял, что перед Вами стоит следующая задача:
по сети передаются переменные типа word, которые необходимо объединить в long int (DINT в CODESYS)?

Если так, то в документе СПК. Протокол Modbus доступном в ветке форума http://www.owen.ru/forum/showthread.php?t=23897
есть п. 4.4 Преобразование данных (REAL, DWORD, STRING) в котором описаны все возможные способы "склейки" данных в CODESYS.

stumex
10.04.2017, 12:07
Правильно ли я понял, что перед Вами стоит следующая задача:
по сети передаются переменные типа word, которые необходимо объединить в long int (DINT в CODESYS)?

Если так, то в документе СПК. Протокол Modbus доступном в ветке форума http://www.owen.ru/forum/showthread.php?t=23897
есть п. 4.4 Преобразование данных (REAL, DWORD, STRING) в котором описаны все возможные способы "склейки" данных в CODESYS.

Спасибо! Помогло)

melky
10.04.2017, 14:58
Блин, а просто поставить два регистра рядом в нужной последовательности а считать из памяти просто dword уже не судьба ? если не ошибаюсь, то CDS это должен позволять. Просто через массивы например.

BVA
29.05.2018, 12:18
Всем доброго времени суток.
Вопрос такой. Передаю из ардуинки long integer. двумя переменными word. как их сложить обратно в кодесисе? ))

Товарищи, доброго времени суток! Прошу прощения за дилетантский вопрос. я просто только начинаю разбираться с codesys и пытаюсь понять как это работает. Есть 2 переменные типа WORD из них необходимо сделать одну переменную типа DWORD. пожалуйста объясните как можно это сделать.
Заранее благодарю.

Евгений Кислов
29.05.2018, 12:22
Самый простой вариант - добавить в проект библиотеку CAA Memory и использовать ее ФБ PackWordsToDword:



VAR
wLow: WORD := 16#851F;
wHigh: WORD := 16#4133;

dwVar: DWORD;
END_VAR


dwVar := MEM.PackWordsToDword(wHigh, wLow);