Просмотр полной версии : 2 переменные word в 1 lint
Всем доброго времени суток.
Вопрос такой. Передаю из ардуинки long integer. двумя переменными word. как их сложить обратно в кодесисе? ))
Ну на счет переменных я в курсе. Интересует команда преобразования. по типу такой: 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.
Правильно ли я понял, что перед Вами стоит следующая задача:
по сети передаются переменные типа word, которые необходимо объединить в long int (DINT в CODESYS)?
Если так, то в документе СПК. Протокол Modbus доступном в ветке форума http://www.owen.ru/forum/showthread.php?t=23897
есть п. 4.4 Преобразование данных (REAL, DWORD, STRING) в котором описаны все возможные способы "склейки" данных в CODESYS.
Спасибо! Помогло)
Блин, а просто поставить два регистра рядом в нужной последовательности а считать из памяти просто dword уже не судьба ? если не ошибаюсь, то CDS это должен позволять. Просто через массивы например.
Всем доброго времени суток.
Вопрос такой. Передаю из ардуинки 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);
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot