Есть массив: M: array [0..1] of word в его регистрах содержится число типа REAL;
Есть переменная: R1:REAL;
Как правильно присвоить содержимое массива переменной R1?
CopyMemory
А можно поподробнее, если не трудно
Функция виндовая 3 атрибута (откуда ,куда ,скока байт) Для примеров есть google
Функция копирования памяти есть и в самой CoDeSys, но вот непонятно - зачем значение REAL держать в массиве WORD ?!?!
С уважением, SAN
например два регистра MODBUS, в них число с плавающей точкой нужно преобразовать в REAL
FUNCTION DWORD_AS_REAL : REAL
VAR_INPUT
IN: DWORD;
END_VAR
VAR
pt: POINTER TO REAL;
END_VAR
pt := ADR(IN);
DWORD_AS_REAL := pt^;
Аналогичная функция в библиотеке Oscat называется DW_TO_REAL. Ну а как модифицировать её для двух WORD, сами догадаетесь?
Инженер-системотехник
+7 (916) 477 3925
Именно так всегда и делал, но иногда использование указателей вешает Ваго 841, с чем связано не знаю. Или тут есть ошибка?
Var M: array [0..1] of word R1:REAL; pt: POINTER TO REAL;
end_var
pt:=ADR(M[0]); R1:=pt^;
Ошибки здесь не вижу. Этот код вызывает зависание контроллера?
С проблемой зависания контроллера из-за использования указателей я не сталкивался. Но опыт подсказывает, что причиной всяких неполадок при использовании указателей обычно бывает собственная невнимательность. Указатели, кроме прочего, позволяют легко допустить ошибку с непредсказуемыми последствиями. Поэтому кусок кода, использующий указатели, необходимо хорошо протестировать и спрятать в отдельную процедуру.
Инженер-системотехник
+7 (916) 477 3925
Во первых - почему массив of wordof word ?! если число RealReal. По короткому кусочку нельзя ничего сказать, но несоответствие типов - уже нехорошее начало, где-то как-то компилятор не так сыграет (хотя и не выдаст ошибку) тем более через указатели, а о времени выполнения и говорить нечего ! Самые распространенные зависания с реалами - деление на ноль
Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме