正运动三轴运动控制卡ECI3320控制汇川EtherCat伺服

调试记录,硬件配置表:

正运动三轴控制卡型号:ECI3320

汇川伺服驱动器型号:SV630NS2R8I,伺服电机型号:MS1H4-40B30CB Type:T331Z

其中伺服电机Type型号里T3代表18位多圈编码器,改值可以反应电机转动一圈需要多少个脉冲,即2的18次方=262144,表示262144个脉冲一圈,在电子齿轮比都为1的情况下。可以根据电子齿轮比的设置来缩小一圈的脉冲数。

 电子齿轮比设置又驱动器下面参数决定,出自《SV630N系列伺服用户手册》:

 1、操作正运动控制卡连接总线伺服

正运动控制卡使用ZDevelop V3.10.07连接后,先操作范例程序里的“正运动\光盘资料v1.6.3\8.PC函数\函数库2.1\windows平台\64位库\C#\例程\例程8-总线控制运动\总线初始化BASIC程序”


'*******************************************************ECAT总线初始化
'''''''''

global CONST BUS_TYPE = 0				 '总线类型。用于上位机区分当前模式
global CONST MAX_AXISNUM = 8			 '最大轴数
global CONST Bus_Slot	= 0				'槽位号0
global CONST Bus_AxisStart	 = 0		'总线轴起始轴号

global Bus_InitStatus			'总线初始化完成状态
Bus_InitStatus = -1
global  Bus_TotalAxisnum		'检查扫描的总轴数

delay(3000)				'延时3S等待驱动器上电
'**********************初始化ECAT总线 
Ecat_Init()

end

global sub Ecat_Init()
	for i=0 to MAX_AXISNUM - 1		'初始化还原轴类型					
		AXIS_ENABLE(i) = 0
		atype(i)=0	
	next
		
	Bus_InitStatus = -1
	Bus_TotalAxisnum = 0	
	SLOT_STOP(Bus_Slot)
	delay(200)
	slot_scan(Bus_Slot)											'开始扫描
	if return then 
		
		?"总线扫描成功","连接设备数:"NODE_COUNT(Bus_Slot)
		?
		?"开始映射轴号"
		for i=0 to NODE_COUNT(Bus_Slot)-1						'遍历总线下所有从站节点

			if NODE_AXIS_COUNT(Bus_Slot,i) <>0 then			'判断当前节点是否有电机
				for j=0 to NODE_AXIS_COUNT(Bus_Slot,i)-1
					AXIS_ADDRESS(Bus_AxisStart+i)=Bus_TotalAxisnum+1			'映射轴号
					ATYPE(Bus_AxisStart+i)=65									'设置控制模式 65-位置 66-速度 67-转矩 
					DRIVE_PROFILE(Bus_AxisStart+i)= 4							'设置PROFILE功能
					disable_group(Bus_AxisStart+i)								'每轴单独分组

'					DRIVE_IO(Bus_AxisStart+i) = 128 + (Bus_AxisStart+i)*16		'映射驱动器上的IO状态
'					REV_IN(Bus_AxisStart+i) = 128 + (Bus_AxisStart+i)*16 
'					FWD_IN(Bus_AxisStart+i) = 129 + (Bus_AxisStart+i)*16
'					DATUM_IN(Bus_AxisStart+i) = 130 + (Bus_AxisStart+i)*16
'					INVERT_IN(128 + (Bus_AxisStart+i)*16,ON)
'					INVERT_IN(129 + (Bus_AxisStart+i)*16,ON)
'					INVERT_IN(130 + (Bus_AxisStart+i)*16,ON)
					
					Bus_TotalAxisnum=Bus_TotalAxisnum+1							'总轴数+1
				next
			endif
			
		next
		
		?"轴号映射完成","连接总轴数:"Bus_TotalAxisnum
		wa 2000
		
		SLOT_START(Bus_Slot)						'启动总线
		if return then 
			?"总线开启成功"
			
			?"开始清除驱动器错误(根据驱动器数据字典设置)"
			for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1 
				
				DRIVE_CONTROLWORD(i)=128					'根据驱动器数据字典
				wa 100
				DRIVE_CONTROLWORD(i)=6
				wa 100
				DRIVE_CONTROLWORD(i)=15
				wa 100
			next
			
			?"驱动器错误清除完成"
			wa 100

			?"清除控制器错误"
			datum(0)
			DRIVE_CLEAR(0)
			?"控制器错误清除完成"
			wa 100
						
			?"轴使能准备"
			for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1
				base(i)
				AXIS_ENABLE=1
			next
			wdog=1											'使能总开关
			Bus_InitStatus  = 1
			?"轴使能完成"
		else
			?"总线开启失败"
			Bus_InitStatus = 0
		endif
		
	else
		?"总线扫描失败"
		Bus_InitStatus = 0
	endif
end sub

打开该程序后,根据运动控制卡型号,修改global CONST MAX_AXISNUM = 8             '最大轴数

之后下载程序到rom中,即可完成对EtherCat总线伺服的绑定通讯。

2、对于轴的操作参考范例程序

“E:\硬件资料\正运动\光盘资料v1.6.3\8.PC函数\函数库2.1\windows平台\64位库\C#\例程\例程8-总线控制运动\test_function8”

参考1:

2500ppr说的是该伺服电机里内藏了一个增量型编码器。2500脉冲一圈。

这里ppr的意思是pulse per revolution:每转脉冲数。

17bit说的是该伺服电机里内藏了一个绝对式编码器。它的分辨率为17比特。这相当于360度被分割成2的17次方份。

20bit则分辨率为20比特。相当于360度被分割成2的20次方份。所以,位数越高的编码器的精度越高。

伺服系统(servo mechanism)是使物体的位置、方位、状态等输出被控量能够跟跟随输入目标(或给定值)的任意变化的自动控制系统。伺服主要靠脉冲来定位,基本上可以这样理解,伺服电机接收到1个脉冲,就会旋转1个脉冲对应的角度,从而实现位移。

参考2:

您好,这是由伺服驱动器的电子齿轮设置决定的,例如,编码器是10000pps,电子齿轮比设为1,则电机一圈需要10000PPS。若设为2,则电机一圈需5000PPS。简单说就是,10000=(电子齿轮比)*(PLC发的脉冲数)。而伺服电机上的编码器精度是固定的,比如伺服电机转一圈,编码器10000个脉冲,可以改变驱动器上的电子齿轮比改变控制精度。

参考3:

问题描述:
汇川伺服电机常见编码器分辨率是多少?

解决方法:
对于串行编码器,电机分辨率=2^n(p/r),n为串行编码器位数:20位串行编码器分辨率为2^20,即编码器分辨率为1048576,23位编码器分辨率为2^23,即编码器分辨率为8388608; 对于正交增量式编码器,编码器分辨率=编码器线数*4:2500线正交增量编码器分辨率为10000。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值