Bosch Rexroth DEFAULT
DEFAULT.DFR**** Hidden Message ***** xuexi xuexi 看看是啥好东西
学习学习
aaaaaaaaaaaaaaaa 不错不错不错
不错不错 力士乐变量泵 电流控制200ma - 560ma 变量泵带马达 想用pid 使马达转速稳定3000转每分钟 想用codesys编写,LeftRam( Resistance:=EEVale.LeftRamResistance , (*左抛投泵的电阻==*)
DLMax:=EEVale.LeftRam_PumpDLMax , (*左抛投 泵的最大电流 560*)
DLMin:=EEVale.LeftRam_PumpDLMin , (*左抛投 泵的最小电流 200*)
MaxSp:=EEVale.Left_MotoMaxSp , (* 左抛投泵最大转速 可按实际值标定3000*)
MixSp:=EEVale.Left_MotoMixSp , (* 左抛投泵最小转速 可按实际值标定500*)
ShijiRPM:=midvar.u_LeftRamHeadSP, (*实际左抛投转速 midvar.u_LeftRamHeadSP*)
setmax_xianzhiSP:=3000 , (*左抛投限制最大转速数值 可以调整的*)
setmix_xianzhiSP:=300 ,
OutPwm=> );
LeftRamHead_out:=LeftRam.OutPwm; (*左抛投PWM XM2.3==*)
VAR_INPUT
Resistance:UINT; (*电阻*)
DLMax:UINT; (*最大电流*)
DLMin:UINT; (*最小电流*)
MaxSp:UINT; (*最大转速*)
MixSp:UINT; (*最小转速*)
ShijiRPM:UINT; (*实际转速*)
setmax_xianzhiSP:UINT; (*设置最大限制转速值*)
setmix_xianzhiSP:UINT; (*设置最小限制转速值*)
END_VAR
VAR_OUTPUT
OutPwm:UINT; (*pwm输出*)
END_VAR
VAR
S_MaxCurrent:UINT; (*系统最大电流*)
M_CurrentBuf:REAL;(*电流缓存*)
A:REAL; (*系数*)
Buf:INT;
addcurrent:BYTE;(*增加电流值*)
END_VAR
S_MaxCurrent:=REAL_TO_UINT( (WORD_TO_REAL (Voltage/10)*1000.0)/ UINT_TO_REAL(Resistance) ); (*系统最大电流 ma*)
(*A:=UINT_TO_REAL ( (MaxSp - MixSp) / (DLMax - DLMin ) ) ; (* 转速差/ 电流差 *)*)
A:=UINT_TO_REAL ( (DLMax - DLMin ) / (MaxSp - MixSp) ) ; (* 电流差 转速差/ 3000-500 / 560-200 6.94*)
(*
M_CurrentBuf:=A* UINT_TO_REAL( (ShijiRPM - MixSp ) ) + UINT_TO_REAL( DLMin); (*缓存电流*)
*)
addcurrent:= REAL_TO_BYTE( UINT_TO_REAL((MaxSp-ShijiRPM))/10.0/100.0 * A ); (*。可根据实际情况调整 这个值是人为 加的一个 值*)
IF ShijiRPM >=setmax_xianzhiSP THEN (*如果抛投实际转速大于 3300转,关闭抛投*)
M_CurrentBuf:=0;
ELSIF ShijiRPM<3000 THEN
M_CurrentBuf:=A* UINT_TO_REAL( (ShijiRPM - MixSp ) ) + UINT_TO_REAL( DLMin)+ addcurrent; (*缓存电流*)
END_IF
Buf:=REAL_TO_INT( ( M_CurrentBuf / UINT_TO_REAL(S_MaxCurrent) ) *32767.0 );
OutPwm:=Buf; 非常感谢,线控底盘底盘调试,学习中 瞧一瞧看一看 :(:(:(:(:(:(
页:
[1]
2