Имеется данная панель, с контроллера получаю данные в формате float через макрос и пишу во внутреннюю переменную.
WORD ArrValue[2];
DWORD dwVar=0;
BYTE byVar1=0;
BYTE byVar2=0;
BYTE byVar3=0;
BYTE byVar4=0;
float fValue;
Reads(DOWNLOAD, 205, MODBUS_RTU_REG_4X, 20, 2, &ArrValue);
fValue = *(float*)(ArrValue);
*(float*)(PSW+300) = fValue;
byVar1 = LOBYTE(PSW[300]);
byVar2 = HIBYTE(PSW[300]);
byVar3 = LOBYTE(PSW[301]);
byVar4 = HIBYTE(PSW[301]);
PSW[500] = MAKEWORD(byVar2,byVar1);
PSW[600] = MAKEWORD(byVar4,byVar3);
dwVar=MAKEDWORD(PSW[500],PSW[600]);
*(DWORD*)(PSW+350)= dwVar;

Вопрос вот в чем, мне надо сравнить полученное значение ( с больше 0, меньше 0 и равно 0) и соответственно к примеру зажигать один из трех соответствующих внутренних битов . Но у меня никак не получается получить отрицательное значение, кто сможет подсказать , в чем моя проблема (Пробовал уже и местами менять, и то и се) ?
P.S. прошу сильно не ругаться, первый раз работаю с овеном и этой панелью.