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

调试记录:

硬件配置表:

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

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

调试完成的功能:

1、利用绝对式编码器,编码器位置记录,不用每次进行回零操作。

a、首先确认绝对式编码器型号的电机和伺服驱动器型号

b、驱动器开启绝对值

参考链接:绝对位置模式简单应用介绍 - 通用伺服(单传) - 汇川技术官网-水滴社区 - Powered by Discuz! (inovance.com)

 

 

2、设置扭矩模式下伺服电机的运动速度,利用扭矩速度限制进行控制。

 

 

3、利用正运动的板卡进行位置模式和扭矩模式切换,完成挤压力控制

a、设置电机的电子齿轮比,改型号的驱动器,要通过EtherCat总线函数进行电子齿轮比设置,再进行正运动卡组态时完成电子齿轮比的设置。

 完整的函数如下:


'*******************************************************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)= 30					'设置PROFILE功能
					disable_group(Bus_AxisStart+i)								'每轴单独分组
					SDO_WRITE(0,Bus_AxisStart+i,$6091,1,7,2^23)
					SDO_WRITE(0,Bus_AxisStart+i,$6091,2,7,10000)

'					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

注意:当时遇到的问题是脉冲当量设的太大了,导致发的脉冲太大时,电机无法运动,将脉冲当量限制在1000以内。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值