PDA

Просмотр полной версии : Преобразование кусков IP адреса в шестнадцатиричное число



Seyran
25.11.2019, 07:27
в четырех регистрах хранятся части IP адреса передаваемого с панели вайнтек на ПЛК, как преобразовать эти 4 части в число вида 16#C0A87B59

A.Simonov
25.11.2019, 11:05
в четырех регистрах хранятся части IP адреса передаваемого с панели вайнтек на ПЛК, как преобразовать эти 4 части в число вида 16#C0A87B59

Добрый день.

Уверен, что есть более изящное решение, но сходу пришло только это:
45790

Мы имеем 4 байта (в них лежат части IP). Склеиваем их в строковую переменную, предварительно приведя их к HEX виду, с помощью функции BYTE_TO_STRH.

Функция BYTE_TO_STRH находится в библиотеке oscat basic
https://ftp.owen.ru/CoDeSys23/05_Library/02_Library/oscat_basic_333.lib

Результат:
45791

Для наглядности результат можно отобразить как HEX.
Для этого необходимо перейти во вкладку Проект > Опции
И выбрать соответствующее представление.
45792

Результат в HEX:
45793




PROGRAM PLC_PRG
VAR
wIP1: BYTE;
wIP2: BYTE;
wIP3: BYTE;
wIP4: BYTE;
stIP: STRING;
dwIP: DWORD;
END_VAR




wIP1:=16#AA;
wIP2:=16#BB;
wIP3:=16#CC;
wIP4:=16#DD;

stIP:='16#';
stIP:=CONCAT(stIP, BYTE_TO_STRH(wIP1));
stIP:=CONCAT(stIP, BYTE_TO_STRH(wIP2));
stIP:=CONCAT(stIP, BYTE_TO_STRH(wIP3));
stIP:=CONCAT(stIP, BYTE_TO_STRH(wIP4));

dwIP:=STRING_TO_DWORD(stIP);