PDA

Просмотр полной версии : Как Float 32 разложить на 2 int 16



Serrk
26.07.2019, 17:47
Подскажите пожалуйста. Как вывести в модуле МУ110-6У выходную величину. Как я понял нужно Float 32 разложить на два int 16 и послать их в регистры 0000 и 0001Dec. А вот как его разложить не соображу.

Собрать
pi1:=ADR(Inpit_1);
pi2:=ADR(Inpit_2);
P:=ADR(output);
P^[0]:=pi2^[0];
P^[1]:=pi2^[1];
P^[2]:=pi1^[0];
P^[3]:=pi1^[1];

так. А как на оборот? Или есть простой способ?

capzap
26.07.2019, 18:00
Подскажите пожалуйста. Как вывести в модуле МУ110-6У выходную величину. Как я понял нужно Float 32 разложить на два int 16 и послать их в регистры 0000 и 0001Dec. А вот как его разложить не соображу.

Собрать
pi1:=ADR(Inpit_1);
pi2:=ADR(Inpit_2);
P:=ADR(output);
P^[0]:=pi2^[0];
P^[1]:=pi2^[1];
P^[2]:=pi1^[0];
P^[3]:=pi1^[1];

так. А как на оборот? Или есть простой способ?

Реал через указатель на dword, дальше через смещение и маску в два слова

_Mikhail
27.07.2019, 15:40
Подскажите пожалуйста. Как вывести в модуле МУ110-6У выходную величину. Как я понял нужно Float 32 разложить на два int 16 и послать их в регистры 0000 и 0001Dec. А вот как его разложить не соображу.

Собрать
pi1:=ADR(Inpit_1);
pi2:=ADR(Inpit_2);
P:=ADR(output);
P^[0]:=pi2^[0];
P^[1]:=pi2^[1];
P^[2]:=pi1^[0];
P^[3]:=pi1^[1];

так. А как на оборот? Или есть простой способ?

43778
Какой Float?
В модуле МУ110-6У используется INT.
0000 - это канал 1
0001 - это канал 2
Зачем их смешивать?
Читайте внимательно инструкцию

Валенок
27.07.2019, 16:53
LIN_TRAFO + REAL_TO_INT

Serrk
29.07.2019, 07:20
Спасибо. Ступил.

Sulfur
29.07.2019, 08:03
Serrk
Переменная Real в проекте должна быть преобразована в INT в диапазоне 0..1000, что соответствует 0..100% выхода МУ.

Алексей Васильев
22.09.2019, 05:54
Ивините, а не подскажете как это делается?