登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:codesys_单轴运动控制_关于绝对值编码器偏执(清零)的疑问。顺便分享一波codesys_树莓派_EtherCAT_伺服动起来的程序(欧姆龙R88D-1SN)

点击:12423 回复:20

硬件配置:
树莓派4B,自带网口作为ECAT口,USB转网口作为编程监控网卡。
HMI是 威纶通 在线模拟方式和树莓派通讯,方便测试,玩。 好像叫做codesys OPC服务来来着,做HMI编程很方便,获取标签就可以了。不用对PLC绝对地址。
附件 001.jpg
附件 1.jpg
附件 2.jpg
附件 3.jpg
附件 4.jpg
疑问1:实际转速和伺服软件不一致,codesys里面设置的是3000.实际才1400,
疑问2:电机实际转一圈,codesys 读取位置值在128.00左右。
疑问3: 在实际应用中,需要给绝对值伺服设置原点(0点),避免每次开机复位找原点。
        我找了一个MC_Setposition,这个可以设定为你想要的位置值(CODESYS_读取值),但是重启以后就会变成绝对值编码器的值!
      PS:当然,原点(0点)可以用伺服驱动器软件设置一次就OK了,但是实际中应该很少这样操作吧,M2总线的安川伺服驱动器我试过可以用PLC设置0点、
顺便分享我拼凑出来的CODESYS程序吧,菜鸟玩可以看看,编译前要添加欧姆龙驱动器设备库文件XML的吧,R88D-1SN,官网有下载。
编译提示其它库文件报错啥的,下载缺失的库就可以了。(这个好像常规操作吧?)
PLC+HMI:
附件:
[本地下载]
自己有实物记得改ECAT 配置的MAC IP地址啥的,包括HMI的IP地址
20-05-08 21:38
补充一楼:
CODESYS设置的比例缩放为原始状态,1:1.
伺服的电子尺也是默认1:1
欧姆龙伺服是绝对值23位的。
附件 V}LNDC@Z{D~2KWQBH【3_4{S.jpg
附件 `C~%S1UPI2Q{F(NHBFC8B3J.jpg
20-05-08 21:48
附件 QQ图片20200508223340.jpg
附件 QQ图片20200508223406.jpg
看视频解决问题: 1,正确设置编码器分辨率,我的是23位的 对应的8388608,
                2,设置应用的单元(就是工程量吧)我假设工程是电机带丝杆运动,螺距是10mm,精度um,10.000mm,设置的10,000,经过测试,设置0点,绝对移动目标10,000刚好是一圈,目测的,我估计是OK了。转速也OK了。
············
今晚睡觉了,不知道绝对值编码器如何置零。。。哈哈哈哈哈哈
最后修改:2020/5/8 22:38:49
20-05-08 22:37
感谢分享,可以参加活动的呀,这个标题,我还在想怎么简化一下。表情
20-05-09 09:09
大家好,如果想要详细的了解树莓派带运动控制,可以关注CODESYS官网(www.codesys.cn "CODESYS社区")有公开课内容,也可以关注CODESYS公众号“CODESYS-China”
20-05-09 10:08
树莓派是什么呀!这段时间论坛里听看到了好几次,难道是我太落后了吗?
20-05-09 10:22
MC_HOME也不行哦。
搞不定了,欧姆龙客服说MC_HOME就可以,我实际测试不行。哎。
有没有大神说下啊
MC_Setposition   在伺服锁定和非锁定都可以清除读取到的位置值,伺服重启位置不为0,为之前的位置。
mc_home,只有在伺服锁定状态才可以启动,不然ERR报错,锁定状态执行后,busy-done-读取位置为0,伺服重启后位置又是之前的位置。
先执行MC_Setposition,显示值为0,在执行mc_home,显示值为之前值的负值,
显示位置:200.00,MC_Setposition之后显示为0.00,在执行mc_home,显示值为-200.00.。。。无语了。
最后修改:2020/5/9 20:49:21
20-05-09 19:41
老司机,带带路啊。
伺服回零点方式设置了 当前原点预设。
codesys里面不知道咋整了,或者说这个伺服不支持?
最后修改:2020/5/9 21:00:21
20-05-09 21:00
附件 1.jpg
附件 2.jpg
附件 3.jpg
附件 4.jpg
附件 5.jpg
看的心里哇凉哇凉的。
简单的设置原点搞的好复杂的样子。
20-05-10 16:37
找到一点眉目了。
MC_POWER打开伺服:
1,伺服参数里面先把 返回原点-原点偏移设置为0,默认不偏移才能读取实际位置。
2,读取当前伺服位置。
3.把伺服位置值取反值传送到MC_home 功能块输入的位置值里面。
3,伺服软件里刷新驱动器的值,把整个值传送到伺服。。。。
重启无异常。
但是单纯的codesys里面操作不能保存这个值。不解。不解。
20-05-10 16:54

上一页下一页

工控新闻

更多新闻资讯