PDA

Просмотр полной версии : Поменять местами регистры Float без указателей



Карбофос
04.03.2020, 15:24
Добрый день!

Вопрос такой: нужно считать по модбасу несколько переменных типа float, но устройство отдает их регистры не в том порядке, в каком ждет его ПЛК110, т.е. в считанном значении еще нужно поменять местами два слова. Вопрос в следующем: можно л исделать это без применения указателей? Через библиотеку какую-нибудь?

Почему возник вопрос: я для этого использовал функцию со следующим кодом:

FUNCTION PERENOS :REAL
VAR_INPUT
input_real: REAL;
END_VAR
VAR
output_real: REAL;
input_real_p: POINTER TO ARRAY [0..1] OF WORD;
output_real_p: POINTER TO ARRAY [0..1] OF WORD;
END_VAR

input_real_p:=ADR(input_real);
output_real_P:=ADR(output_real);
output_real_p^[0]:=input_real_p^[1];
output_real_p^[1]:=input_real_p^[0];

PERENOS := OUTPUT_REAL;Но сейчас столкнулся с проблемой, ПЛК периодически перезагружается по вотчдогу, есть подозрение, что виной этому использование указателей, хотелось бы от них избавиться.

capzap
04.03.2020, 15:38
а в библиотеке можно пользоваться указателями?

petera
04.03.2020, 15:38
Добрый день!

Вопрос такой: нужно считать по модбасу несколько переменных типа float, но устройство отдает их регистры не в том порядке, в каком ждет его ПЛК110, т.е. в считанном значении еще нужно поменять местами два слова. Вопрос в следующем: можно л исделать это без применения указателей? Через библиотеку какую-нибудь?

Почему возник вопрос: я для этого использовал функцию со следующим кодом:

FUNCTION PERENOS :REAL
VAR_INPUT
input_real: REAL;
END_VAR
VAR
output_real: REAL;
input_real_p: POINTER TO ARRAY [0..1] OF WORD;
output_real_p: POINTER TO ARRAY [0..1] OF WORD;
END_VAR

input_real_p:=ADR(input_real);
output_real_P:=ADR(output_real);
output_real_p^[0]:=input_real_p^[1];
output_real_p^[1]:=input_real_p^[0];

PERENOS := OUTPUT_REAL;Но сейчас столкнулся с проблемой, ПЛК периодически перезагружается по вотчдогу, есть подозрение, что виной этому использование указателей, хотелось бы от них избавиться.

Просто в конфигурации для UMD поменяй порядок слов
Trace mode на Native
47739
и все,
ни какого кода!

Карбофос
04.03.2020, 15:59
а в библиотеке можно пользоваться указателями?
Ну дык предполагается, что библиотеку писали люди менее криворукие, чем я:)


Просто в конфигурации для UMD поменяй порядок слов
Trace mode на Native
47739
и все,
ни какого кода!

Вот спасибо!