Карбофос
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;Но сейчас столкнулся с проблемой, ПЛК периодически перезагружается по вотчдогу, есть подозрение, что виной этому использование указателей, хотелось бы от них избавиться.
Вопрос такой: нужно считать по модбасу несколько переменных типа 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;Но сейчас столкнулся с проблемой, ПЛК периодически перезагружается по вотчдогу, есть подозрение, что виной этому использование указателей, хотелось бы от них избавиться.