T技术支持ech Support
EtherCAT总线型运动控制系统入门教程(3)

在上一篇《EtherCAT总线型运动控制系统入门教程(2)》(点击进行回顾)中我们介绍了EtherCAT总线型运动控制系统的各类运动控制产品基本操作和如何使用EtherCAT总线的扩展模块,接下来小编要带大家学习如何使用EtherCAT总线型运动控制器。

 

全文4120字,阅读时间约10分钟

 

一.EtherCAT总线型运动控制器BAC332E

 

2019年4月,雷赛公司推出的BAC332E运动控制器最多可以控制32个EtherCAT总线型电机及扩展功能模块。可实现多轴点位运动、直线插补运动、空间圆弧插补、样条曲线插补(PVT函数)、编码器位置检测、IO控制、位置比较、位置锁存等功能。

 

和雷赛的EtherCAT总线型运动控制卡DMCE3032相比,BAC332E运动控制器具有以下特点:

1.BAC332E运动控制器可使用BASIC语言编程,独立运行(不需要PC机);也可以让BAC332E运动控制器作下位机、PC机作上位机并采用高级语言(VB、VC、C#、Delphi、LabVIEW等)编程、通过Ethernet网线控制BAC332E运动控制器。

 

2.可在程序中可载入G代码指令。该功能可用于:金属切割、金属焊接、激光切割、激光雕刻、布料裁剪等加工过程。


3.具有多轴的样条插值功能(PVT函数),可实现复杂的轨迹控制。

BAC332E运动控制器的运动控制函数库功能丰富、易学易用,用户开发应用软件十分方便;并提供BASIC、C#、VB、VC、Delphi、Labview编程语言的例程。随产品免费提供的雷赛运动控制器集成开发软件SMCBASICStudio,不但可以编辑、调试BASIC程序,还可以设置EtherCAT总线参数、总线节点的参数,并且用于控制器及运动控制系统的硬件测试。

 

BAC332E运动控制器的外形如图1.1所示,其主要参数如表1.1所示。

 

 

BAC332E运动控制器的IO接口、编码器接口及驱动软件的安装方法都和普通脉冲型运动控制器相同。详见产品手册。

 

   

与雷赛脉冲型运动控制器不同,BAC332E运动控制器有一个小显示屏,如图1.2所示,可显示控制器状态、输入和输出口状态、控制器版本号、控制器通讯参数等信息。

 

 

BAC332E运动控制器上有一个6位拨码开关,其中SW1和SW2用来设置输出端口的初始电平。SW1设置OUT0 ~OUT5端口、SW2设置OUT6 ~ OUT11端口,拨码开关设置为ON,初始电平为低电平;设为OFF,初始电平为高电平。SW3 ~ SW6功能保留。

 

二.SMCBASICStudio与总线的配置、测试

 

如图2.1所示,本文介绍的EtherCAT总线运动控制系统实验装置的结构和“EtherCAT总线型运动控制系统的特点与应用(上篇)”所介绍的一样。其中各产品的特点、接口电路、参数设置等内容就不再此重复。

 

 

1.PC机与BAC332E运动控制器的连接

首先,用网线将PC机网口与BAC332E运动控制器上的控制器的Eth0接口连接起来。

因为BAC332E的IP地址为192.168.5.11。因此,PC机的IP地址前三段也要设为192.168.5,第四段不能设为11。

修改PC机IP地址的方法为:打开“网络和共享中心”,点击“本地连接”、“属性”,选择“Internet协议版本4”,然后修改IP地址,如图2.2所示。

 


 

2.运行SMCBASICStudio并连接控制器

打开BAC332E运动控制器的光盘中的文件夹“MOTION”,解压文件SMCIDE_2019XXXX后,运行其中的Leadshine.SMC.IDE.exe文件。然后,在主页面上,点击第5个图标,如图2.3所示,使PC机与BAC332E运动控制器连接。

 

 

 

3.自动配置EtherCAT总线

在SMCBASICStudio的菜单中打开“工程”、点击“新建”。输入文件名后,点击“保存”。如图2.4所示。

 

在工程栏中,用鼠标右键点击“解决方案”,选择“添加设备”,点击“添加EtherCAT设备”,如图2.5所示。

 

在工程栏中,点击“设备”前的“+”号,然后用鼠标右键点击“EtherCAT_0”,选择“扫描设备”,如图2.6所示。扫描后的结果如图2.7所示。

 

 

 

 

 

这时,雷赛的步进电机驱动器DM3E-556、AD/DA扩展模块、IO扩展模块自动完成了配置。其他元件还要继续手工配置

 

4.手工配置EtherCAT总线

1)添加轴映射

点击“EtherCAT设备编辑器”界面中的“主站”、打开“主站”页面。在选项卡“轴映射关系”中,点击下面的“添加”按钮,然后在“映射类型”中选“EtherCAT”、在“从站类型”中选“驱动器”、“映射从站”中选“1002”,即雷赛闭环步进电机驱动器CL3-EC507,如图2.8所示。最后,点击左下角的“上移”按钮,将1002节点上移至第2的位置上。即:将闭环步进电机设为轴1。


 

2)添加IO映射

点击选项卡“输出IO映射关系”,点击下面的“添加”按钮,然后在“映射类型”中选“EtherCAT”、在“从站类型”中选“数字IO”、“映射从站”中选“1005”,即雷赛定位模块EM02DP-E1,“映射变量”选“GeneralOutputIO”,点击“确定”,如图2.9所示。这样,定位模块上的8个数字输出接口添加在EtherCAT总线上。

 

 

最后,点击左下角的“上移”按钮,将定位模块上的8个数字输出接口上移至第2的位置上。即:该8个输出口的编号为12~19。

3)添加TxPDO变量

点击选项卡“扩展TxPDO映射关系”,点击下面的“添加”按钮,然后在“映射类型”中选“EtherCAT”、在“映射从站”中选“1003”,即雷赛编码器扩展模块EM03DE-E4,“映射变量”选“Encoder1_Val”,点击“确定”,如图2.10所示。这样,编码器扩展模块上的1号接口可正常使用。

 

  


4)添加从站的过程数据

在工程栏中双击“CL3-EC507”后,“EtherCAT设备编辑器”变为图2.11所示界面。点击选项卡“过程数据”,选中“选择输出”栏中的“ReceivePPDO1”,然后,点击下方的“编辑”按钮。


 


 

在弹出的“PDO编辑”界面中,点击下面的“添加”按钮,然后弹出“PDO项编辑”窗口,如图2.11所示。在“对象字典”框中,找到“DigitalOutputs”,点击其前面的“+”号,然后选择“PhysicalOutputs”,最后点击“确定”按钮,完成“PhysicalOutputs”。

 

再以同样的方法添加“PhysicalOutputs”下面的“BitMask”。完成后,如图2.12所示。添加完这2个PDO参数后,闭环步进电机驱动器CL3-EC507上的通用输出接口即可启用。



以同样的方法为节点1007松下伺服电机驱动器添加这2个PDO参数:PhysicalOutputs和BitMask,使其通用输出接口可控。

 

5)设置总线周期并下载配置文件

在“EtherCAT设备编辑器”界面中,将主站的“周期时间”设为500微秒,如图2.13所示。

之后,点击右侧的“下载配置文件”按钮,下载完成后,软件会自动复位系统。

至此,总线配置工作完成。


 

5.导出配置文件、加载配置文件

如图2.14所示,在“EtherCAT设备编辑器”界面中,点击上方的“导出配置文件”按钮,可将总线的配置文件保存在电脑硬盘上备用。配置文件有2个:ethercat.eni和ethercat.ini。如图2.16所示。

 

 

当使用一个新的BAC332E运动控制器时、或想将总线配置参数恢复到原有状态,可以将电脑上保存的配置文件下载至运动控制器。如图2.15所示,在BasicStudio菜单中,点击“工具”、“EtherCAT总线”、“EtherCAT配置”之后,“EtherCAT配置”窗口打开,如图2.16所示。

 

点击“打开配置文件”按钮,先选择ethercat.eni文件,打开后,点击下方的“下载配置文件”按钮;然后再点击“打开配置文件”按钮,选择ethercat.ini文件,打开后,点击“下载配置文件”按钮。

 

 

 

6.电机参数的设置

使用SMCBasicStudio可以读、写总线上各设备的对象字典中的参数。如图2.15所示,点击菜单中的“工具”、“EtherCAT总线”、“EtherCAT调试”之后,“EtherCAT调试”窗口打开,如图2.17所示。

 

例如:读节点1002雷赛闭环步进电机的每转脉冲数。其对象字典的主索引号为2001H、子索引号为0,参数类型为UINT,即32位无符号。将基本参数填入后,点击“读取参数”按钮,得到电机的每转脉冲为40000。如图2.17所示。

 

将该值改为20000,再点击“写入参数”按钮,参数即写入电机驱动器。

(注:其他参数的定义详见本文“上篇”)

 

 

 

 

7.电机、IO接口的测试

完成总线配置、电机参数修改等工作后,可使用SMCBasicStudio进行总线上各设备及元件的测试。

 

1)电机测试

点击菜单中的“功能测试”,可以看到有多项测试功能。如图2.19所示。点击“单轴测试”,可进行电机的基本功能测试;同时,点击菜单中的“工具”、“轴状态监视”。得到的界面如图2.19所示,电机运动过程中,“轴状态监视”栏中的各参数随电机状态而变化。


 

在“单轴测试”界面中,可进行点位运动、定速运动、在线变速、在线变位等功能的测试。

注意:在进行电机功能测试之前,必须点击菜单右上角的图标,“所有轴使能开”。而且要保证电机限位信号处于未限位状态(参见图2.20)。 

 

2)IO测试

点击菜单中的“工具”、“IO监控”后,有4个选项:通用输入、输出IO监控和专用输入、输出IO监控。如图2.20所示。

当有输入信号时,界面中的输入口图标会变色。用鼠标点击输出口图标,可改变输出口的状态。

 

SMCBasicStudio还有许多测试功能,详见其使用说明书。

 

  


三.雷赛BASIC与BAC332E编程

 

2010年,雷赛公司在国内第一个推出了用于运动控制器的BASIC语言,经过十年不断地改进完善,已经十分成熟,受到用户的好评。雷赛BASIC具有以下特点:

●简单易学:基本指令和Visual BASIC兼容;运动控制指令格式与运动控制卡相同。

●运行稳定安全:运行时不需要PC机,故安全可靠。可以用触摸屏作界面。

●实时多任务:可以同时运行多个子任务。使程序简化、运行效率提高。

●中断响应快:定时器信号、本地的通用数字输入信号、电机限位信号可作为中断源,中断处理程序使控制器的响应速度更快。

●交互性强:程序为解释执行方式,可以实时交互控制,用户可以随时了解程序执行的状态。


在SMCBasicStudio软件中,点击工程栏中的“本地项”、“main.bas”,即进入到Basic程序编辑界面,如图3.1所示。

 

 

例程1:

编写如图2.1所示的EtherCAT总线运动控制系统的控制程序(其中各电机、模块的电路图详见本文“上篇”),实现以下功能:

1)  各电机的参数和状态的初始化。位置单位为度。

 

2)  轴0、1、2、4一个接一个地转动;正转一轮后再反转一轮,持续不断。

当11号输入口的开关闭合,电机运动停止;

当0号输入口的开关闭合,电机运动继续。

 

3)  0~35号输出口运行跑马灯,即每个输出口一个接一个地导通0.2秒、再关闭0.2秒。

当3号输入口的开关闭合,跑马灯停止;

当1号输入口的开关闭合,跑马灯继续。

 

4)  用定时器控制编码器模块读取闭环步进电机的位置;当电机绝对位置大于3996个脉冲时,轴1通用输出口EX-OUT1上的LED灯亮;否则,LED灯灭。

5)  用定时器控制AD/DA模块。D/A转换0号通道不断地、渐变地输出0~10V电压;AD1号通道读取DA0的信号(DA0输出信号已用导线接入到AD1通道上,电路图详见本文“上篇”),当检测到DA0输出的电压大于5V时,轴4的通用输出口EX-OUT1上的LED灯亮;否则,LED灯灭。

 

在程序中,主任务auto(主程序)负责进行电机参数和状态的初始化、电机运动控制、0号输入口的检测。

 

跑马灯功能由子任务(子程序)LedControl完成。

 

编码器模块、AD/DA模块的控制由定时器中断任务(定时中断程序)完成。

 

1、3、11号输入口的检测工作由输入口中断任务(外部信号中断程序)完成。

程序代码如下。

auto: ' 以auto命名的主程序存入flash,控制器上电后可自动运行
undim *
dim distance,i,k
dim motor_flag,led_flag
dim PortNum,NodeNum,Index,Zpos
dim Vout,Vin,getOutput1,getOutput4
dim axis(4),axisEquiv(4)

axis(0)=0  '定义轴号
axis(1)=1
axis(2)=2
axis(3)=4

axisEquiv(0)= 36000 / 360  ' 设置轴的位移单位为度
axisEquiv(1)=  40000 / 360
axisEquiv(2) = 12800 / 360
axisEquiv(3) = 8388608.0 / 360

led_flag=1
Vout=0
distance=360
PortNum = 2   'EtherCAT端口号
NodeNum = 1003   '编码器模块节点号
Index = 24577   '编码器1的主索引号

nmcsSetNodeOd(PortNum, NodeNum, Index, 1, 8, 0)  '写对象字典,0: AB相4倍频模式
nmcsSetNodeOd(PortNum, NodeNum,Index, 2, 8, 1)   ' 1: 正方向
nmcsSetNodeOd(PortNum, NodeNum,Index,3, 32, 0)   ' 设置Encoder1的值为0
nmcsWriteRxpdoExtra( 2, 4, 1, 1)   ' 写PDO参数,AD/DA使能打开
 

int_enable(1)   '中断使能:开
run1,LedControl
timer_start(0, 100)   '开启0号定时器,定时时间为100毫秒
 

for i=0to3   '设置电机运动参数和状态
smcSetEquiv(axis(i), axisEquiv(i))   '设置脉冲当量
smcSetPositionUnit(axis(i), 0)       '位置清零
smcSetSprofile( axis(i),0,0.05)      '设置S段时间
smcSetProfileUnit(axis(i), 100, 2000, 0.1, 0.1, 100)  '设置起始速度、运行速度、停止速度、加速时间、减速时间
 

NMCSSetAxisEnable(axis(i))  '电机使能开
next i
 

motor_flag=1
whiletrue
 

for i=0to3
if motor_flag=1then
smcPmoveUnit(axis(i), distance, 0)       '电机旋转1圈
whilesmcCheckdone(axis(i))=0 '等待电机停止
 

wend
endif
next i
if distance=360then

distance=-360
else
distance=360
endif
 

ifSMCReadInBit(0)=0then  ' 检测输入口0开关是否闭合
smcSetPositionUnit(1, 0)   ' 轴1位置清零
nmcsSetNodeOd(PortNum, NodeNum,Index,3,32,0) ' 设置Encoder1的值为0
motor_flag=1
 

endif
wend
end

LedControl:  ' 跑马灯程序(子任务)
whiletrue
for k=0to35
if led_flag=1then
SMCWriteOutBit(k,0)  ' 输出口k的指示灯亮
delay(200)  ' 延时200毫秒
 

SMCWriteOutBit(k,1)   ' 输出口k的指示灯灭 

delay(200)
endif
next k
wend
end

ontimer0:  ' 0号定时器中断处理入口
nmcsReadTxpdoExtra( 2, 9, 2,Zpos)  ' 读2号节点PDO参数,编码器1的值
nmcsGetAxisIoOut(1, getOutput1)   ' 读1号轴的输出口

ifabs(Zpos)>3996then 

getOutput1= set_bit (18,getOutput1)   '  输出口第18位置1,LED亮

else

getOutput1=  clear_bit (18,getOutput1)   '输出口第18位清零

endif

nmcsSetAxisIoOut(1, getOutput1)  ' 写1号轴的输出口
nmcsWriteRxpdoExtra(2, 0, 2, Vout) '写2号节点PDO参数,DA的0号通道输出电压信号
Vout = Vout + 2000
if Vout >100000then  'DA的输出电压为0~10V
Vout = 0
 

endif

nmcsReadTxpdoExtra(2,2,2, Vin)   'A/D转换,读AD的1号通道
print"Zpos =",Zpos,  ";    Vin =",Vin
nmcsGetAxisIoOut(4, getOutput4)    ' 读4号轴的输出口
 

if Vin>50000then  ' 如果电压高于5V

getOutput4= set_bit (16,getOutput4)    ' 输出口第16位置1,LED亮
else
getOutput4=  clear_bit (16,getOutput4)  ' 输出口第16位清零
endif
nmcsSetAxisIoOut(4, getOutput4)
   ' 写4号轴的输出口
 

timer_start(0, 100)    ' 再次开启1号定时器
end
 

oninon1:   ' 输入口IN1触发中断处理入口
led_flag=1  '跑马灯开始

end

oninon3:   ' 输入口IN3触发中断处理入口

led_flag=0  '跑马灯停止 

end

oninon11:  ' 输入口IN11触发中断处理入口
SMCEmgStop  ' 所有轴急停止

motor_flag=0
end

 

想要获取完整文章内容及“附录例程代码”可点击文末“阅读原文

 

上一条:EtherCAT总线型运动控制系统入门教程(2)
下一条:EtherCAT总线型运动控制系统入门教程(4)