Зачем там вообще массив не понятно.
static DWORD ValueDW;
static float RegFloat;
WORD Temp1;
if (GetPSBStatus(318)) {//1
SetPSB(400);//для проверки тоже не загорается
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ValueDW);
ResetPSB(318);
RegFloat= *(float*)(ValueDW);
*(float*)(PSW+318)=RegFloat;//регистр для проверки
RegFloat=RegFloat*10.0;
Temp1=(WORD)RegFloat;
PSW[320]=Temp1;//регистр для проверки
}//1