技术论坛

 用报文3或报文102读取V90单圈绝对值编码器的绝对位置

返回主题列表
作者 主题
真心便笺
游民

经验值:58
发帖数:5
精华帖:0
楼主    2019-12-18 16:14:42
主题:用报文3或报文102读取V90单圈绝对值编码器的绝对位置

需要:前些天做项目,需要完成扭矩控制,及电机轴的绝对位置读取。

采购:买的V90PN的驱动器,单圈绝对值的电机。

方案:更改FB285,V90用速度模式,配102报文。

扭矩控制:102报文中PZD5为扭矩减少,可通过此值限制扭矩,达到恒扭矩的控制。可参考官方文档https://support.industry.siemens.com/cs/document/109745698/-sinamics-v90-pn%E9%80%9F%E5%BA%A6%E6%8E%A7%E5%88%B6%E6%A8%A1%E5%BC%8F%E4%B8%8B%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E8%BD%AC%E7%9F%A9%E9%99%90%E5%B9%85%E5%8A%9F%E8%83%BD?dti=0&lc=zh-CN。

绝对位置读取:

问题 : 由于设备会断电,如断电后,电机轴运动,再次上电,要更新为轴的实际位置。假如电机轴一圈为0-360°,每个位置要始终对应相应的角度。此时读取G1_XIST1中的实际位置就无法实现了。

解决:102报文PZD6为编码器控制字,其中bit13为请求绝对值周期。官方介绍:request of additional cyclic transmission of the absolute actual position in G1_XIST2,if no other data needs to be transferred due to commands or errors the absolute position value will be transmitted automatically.请求额外循环发送G1_XIST2中的绝对实际位置,如果由于命令或错误而无需传输其他数据,则绝对位置值将自动发送。

设置bit13为1,此时读取G1_XIST2,即为编码器的绝对位置。

附更改的FB285。

扭矩控制:

    #prTorque := (#RefTorque*#TorqueLimit-#TorqueSp)/ (#RefTorque*#TorqueLimit) * 16384.0

    #sxSendBuf.MOMRED := INT_TO_WORD(REAL_TO_INT(#prTorque));

位置转换:

    #Position := DINT_TO_REAL(DWORD_TO_DINT(#sxRecvBuf.G1_XIST2));

角度转换:

    IF #Position <= #TruncatedPosition THEN

        #ActAngle := ((#TruncatedPosition - #Position) / 2097152.0)*360;

    ELSE

        #ActAngle := 360-(((#Position - #TruncatedPosition) / 2097152.0)*360);

    END_IF;


您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。