Заодно подскажите, как сформировать 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 это только на запись плюс на чтение наверное столько же.