酷德网

Kx-m3酷自造发布!
查看: 749|回复: 4

电液控制求助

[复制链接]

该用户从未签到

发表于 2017-1-16 11:55:51 | 显示全部楼层 |阅读模式
力士乐变量泵        电流控制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;



回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2017-1-16 11:56:34 | 显示全部楼层
大家有没有比较好的控制方式与方法   ,希望给予帮助
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2017-1-17 10:28:05 | 显示全部楼层
工程机械行走控制,大家谁做过类似的项目,可以共同探讨一下
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-6-19 11:22:39 | 显示全部楼层
本帖最后由 Hero 于 2018-6-19 11:24 编辑

这样写代码,可读性太差,没人原意看,没救了
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-1-23 09:17
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2018-8-17 13:29:34 | 显示全部楼层
    你用方块图啊,有专门PID模块  这个控制很简单啊,你不就是在马达上带了速度传感器  然后做闭环控制马达转速恒定嘛。有问题可以加微信76369809
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|小黑屋|手机版|Archiver|酷德论坛 ( 苏ICP备16065247号 )|网站地图

    GMT+8, 2018-11-15 23:00 , Processed in 0.274551 second(s), 27 queries , MemCache On.

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

    快速回复 返回顶部 返回列表