我希望值在值 A 到值 B 之间变化需要一定的时间。它以这种方式工作,但我受到 BYTE (255) 的限制,如果我想使用更大的数字,这会使比例变差。我不知道怎么做。
因此,我需要帮助来解决这个问题。
提前致谢!
TX = Internal timer in MS
// fbScale scales a value from one to another.
fbScale[1](nIn := nIn, nInLow := nLow, nInHi := nHi, nOutLow := 0, nOutHi := 255, nOut =>);
IF fbScale[1].nOut > Out_INT AND InitU AND bEn THEN
TR := T#60S;
IF (Out_INT <> 255) THEN
IF tx - tl < TR THEN
Out_INT := MIN(TO_BYTE(SHL(TO_DWORD(tx - tl), 8) / TO_DWORD(TR)), (BYTE#255 - Start));
Out_INT := Start + Out_INT;
ELSE
Out_INT := 255;
END_IF
END_IF
bBusy := TRUE;
InitD := FALSE;
ELSIF fbScale[1].nOut < Out_INT AND InitD AND bEn THEN
TR := SEL(ChangeLowHi, DWtoSec(nRTD), T#0S);
IF (Out_INT <> 0) THEN
IF tx - tl < TR THEN
Out_INT := MIN(TO_BYTE(SHL(TIME_TO_DWORD(tx - tl), 8) / TO_DWORD(TR)), Start);
Out_INT := Start - Out_INT;
ELSE
Out_INT := 0;
END_IF;
END_IF
bBusy := TRUE;
InitU := FALSE;
ELSE
tl := tx;
InitU := TRUE;
InitD := TRUE;
Start := Out_INT;
END_IF
fbScale[2](nIn := Out_INT, nInLow := 0, nInHi := 255, nOutLow := nLow, nOutHi := nHi, nOut => nOut)