Цитата Сообщение от 1exan Посмотреть сообщение
Вот здесь

Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ArrValueDW);

Уверены, что нужен "&" ?
Ведь ArrValueDW это массив, и его имя уже является указателем (если проводить аналогию с С)
Зачем там вообще массив не понятно.

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