用报文3或报文102读取V90单圈绝对值编码器的绝对位置需要:前些天做项目,需要完成扭矩控制,及电机轴的绝对位置读取。采购:买的V90PN的 驱动器,单圈绝对值的电机。方案:更改FB285,V90用速度模式,配102报文。扭矩控制:102报文中PZD5为扭矩减少,可通过此 值限制扭矩,达到恒扭矩的控制。可参考官方文档https://support.industry.siemens.com/cs/doc ument/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%B 0%E8%BD%AC%E7%9F%A9%E9%99%90%E5%B9%85%E5%8A%9F%E8%83%BD?dti=0&lc= zh-CN。绝对位置读取:问题:由于设备会断电,如断电后,电机轴运动,再次上电,要更新为轴的实际位置。假如电机轴一圈为0-36 0°,每个位置要始终对应相应的角度。此时读取G1_XIST1中的实际位置就无法实现了。解决:102报文PZD6为编码器控制字,其中 bit13为请求绝对值周期。官方介绍:requestofadditionalcyclictransmissionoft heabsoluteactualpositioninG1_XIST2,ifnootherdataneedsto betransferredduetocommandsorerrorstheabsolutepositionv aluewillbetransmittedautomatically.请求额外循环发送G1_XIST2中的绝对实际位置,如 果由于命令或错误而无需传输其他数据,则绝对位置值将自动发送。设置bit13为1,此时读取G1_XIST2,即为编码器的绝对位置。附 更改的FB285。扭矩控制:#prTorque:=(#RefTorque#TorqueLimit-#TorqueSp)/ (#RefTorque#TorqueLimit)16384.0#sxSendBuf.MOMRED:=INT_TO_W ORD(REAL_TO_INT(#prTorque));位置转换:#Position:=DINT_TO_REAL(DWORD _TO_DINT(#sxRecvBuf.G1_XIST2));角度转换:IF#Position<=#TruncatedPo sitionTHEN#ActAngle:=((#TruncatedPosition-#Position)/2097 152.0)360;ELSE#ActAngle:=360-(((#Position-#TruncatedPositi on)/2097152.0)360);END_IF; |
|