通过Modbus RTU读取迈信伺服电机绝对位置
供稿:武汉迈信电气技术有限公司
- 关键词:迈信伺服电机,Modbus RTU
- 作者:技术中心
- 摘要:伺服电机编码器是安装在电机上用来测量磁极位置和伺服电机转角及转速的一种传感器,从物理介质的不同来分,伺服电机编码器可以分为光电编码器和磁电编码器,另外旋转变压器也算一种特殊的伺服编码器。
迈信伺服电机支持2500线增量编码器17位绝对值编码器,23位绝对值编码器,25位绝对值编码器,其中绝对式编码器有每一个位置绝对唯一、抗干扰性强、掉电记忆等特点,在定位方面优于增量编码器,已经越来越广泛地应用于各种工业系统中。本文将介绍如何使用MC运动控制器读取电机的绝对位置供大家参考。
1、配置电缆
准备mc运动控制器,EP1C Plus伺服驱动,迈信绝对式伺服电机,按照说明配置好电缆,示意图如下:
2、连接伺服驱动器与控制器电缆
制作伺服驱动与控制器的通讯电缆并连接,驱动器通讯接口为X5、X6,控制器通讯接口为绿色端子标注的485A、485B处。
3、将编程软件连接到控制器
打开“Maxsine Motion2.69 ”编程软件,连接控制器,新建项目,新建BASIC程序,添加到项目:
4、查找RS485,port通道号
不同型号的控制器支持的通道数不同,使用在线命令?*port查看。
>>?*PORT
Port:0-COM.
Port:1-COM.
Port:2-ETH.
Port:3-ETH.
5、设置驱动器的通讯参数
迈信EP1C Plus驱动器通讯参数为P300,站号,P301,波特率,P302,通讯协议。例程中设置分别为P300=1 ,P301=1,P302=4。
6、编写通讯程序
1)设置运动控制器的com参数
SETCOM(9600,8,1,2,1,14,0,1000)'vr和modbus,超时是1000毫秒
WA(20)
MODBUSM_DES(1,1)'设置485端口,对方站号1
2)测试通讯连接
MODBUSM_REGGET(4120,1,0)'读报警代码
WAIT UNTIL MODBUSM_STATE <> 1'等待消息结束
?MODBUSM_STATE'打印通讯结果
IF MODBUSM_STATE=0 THEN
? "MODBUS PORT opened ok"
ELSEIF MODBUSM_STATE=2 THEN
? "MODBUS PORT timeout"
ELSEIF MODBUSM_STATE=3 THEN
?"error, MODBUS server NOT found"
ENDIF
3)添加读取绝对值单圈多圈信息程序并合成32bit数据的用户函数
GLOBAL SUB READ_ABS_POS()
'read absolute position from 1014h and 1015h
MODBUSM_REGGET($1014,2,single_pos)
WA(200)
WAIT UNTIL MODBUSM_STATE <> 1
'combine two 16-bit signed positions to a 32-bit signed position
IF VR(single_pos)<0 THEN
VR(abs_pos)=(65536+VR(single_pos))+(VR(single_pos+1)<<16)
ELSE
VR(abs_pos) = VR(single_pos) + (VR(single_pos+1)<<16)
ENDIF
?"当前绝对位置是" VR(abs_pos)
END SUB