Заодно подскажите, как сформировать float в СП270. В данном проекте на экране СП270 отображается "123,4", а в СМИ2 "1234".
Вид для печати
Заодно подскажите, как сформировать float в СП270. В данном проекте на экране СП270 отображается "123,4", а в СМИ2 "1234".
Да передача на СМИ2 идет из макроса floatом на адрес 4х16 обратите на это внимание.
Спасибо! Буду пробовать вечером.
Что-то я на четность не обратил внимания, упустил...
В Prog написано
Write(PLC,3,MODBUS_RTU_REG_4X,26,0,TYPE_DWORD,Ct);
Я так понимаю запись в 26 регистр? А если нужно 27? В СМИ2 float расположен в 27, 28 регистрах (изменить нельзя).
Да и еще у вас в функции копирования были 4 группы регистров на которых уходило по 150мс.
Вот пара примеров.
Код:BOOL Pusk;float Ct;
Ct=*(float*)(PSW+300);
Pusk=GetPSBStatus(256);
if(Pusk)Ct=Ct+0.1;
Write(HMI_LOCAL_MCH,0,TYPE_PSW,300,0,TYPE_DWORD,Ct);
Write(PLC,3,MODBUS_RTU_REG_4X,26,0,TYPE_DWORD,Ct);
return;
Код:BOOL Pusk;float Ct;
Ct=(float)PSW[256]/10;
if(Pusk)Ct=Ct+0.1;
PSW[280]=(WORD)(Sp*10);
Write(PLC,3,MODBUS_RTU_REG_4X,26,0,TYPE_WORD,Ct);
return;
Что не так, подскажите?
Код:BOOL Pusk; float Ct; WORD T; WORD M; DWORD P;
Pusk=GetPSBStatus(256);
Ct=*(float*)(PSW+258);
T=PSW[256];
M=PSW[257];
P=*(DWORD*)(PSW+260);
if (Pusk) Ct=Ct+0.1;
Write(HMI_LOCAL_MCH,0,TYPE_PSW,258,0,TYPE_DWORD,Ct);
Write(PLC,3,MODBUS_RTU_REG_4X,17,0,TYPE_WORD,T);
Write(PLC,3,MODBUS_RTU_REG_4X,27,0,TYPE_DWORD,Ct);
Write(PLC,3,MODBUS_RTU_REG_4X,33,0,TYPE_DWORD,P);
Write(PLC,3,MODBUS_RTU_REG_4X,35,0,TYPE_WORD,M);
return;
Все просто 4х17+50мс 4х27+50мс 4х33,4х35+50мс =150 это только на запись плюс на чтение наверное столько же.