信捷PLC(XDH-60T4-E)-EtherCAT通讯32个轴程序写法

B站影视 韩国电影 2025-03-29 22:14 2

摘要:信捷XDH系列运控器采用集中式运动控制方案,支持提供4轴、10轴脉冲输出,更集成EtherCAT运动总线功能,实现多样化运动控制,适用于多轴的复杂运动控制组线设备。

用信捷 XDH-60T4-E 型号的 PLC 和信捷 DS5C 系列的伺服来搞 EtherCAT 通讯。

信捷XDH系列运控器采用集中式运动控制方案,支持提供4轴、10轴脉冲输出,更集成EtherCAT运动总线功能,实现多样化运动控制,适用于多轴的复杂运动控制组线设备。

EtherCAT运动总线控制以EtherCAT总线为基础,提高了带宽利用率,系统结构更加灵活,控制轴数多达32轴且控制周期短≤1ms,实现了高智能化与自治性。其强大的系统扩展性、开放性以及减少布线节省安装费用等突出优势,为终端用户降本增效。

主要性能特点

(1)4MB超大程序容量;

(2)配备双网口,兼备EtherCAT通讯与Ethernet通讯功能;

(3)4路高速计数,单相&AB相两种模式,频率可达200KHz;

(4)4轴同步高速定位,频率高达100KHz;

(5)支持运动控制,包括直线插补、圆弧插补、随动等;

(6)适用所有XD系列扩展模块以及模拟量扩展ED模块;

(7)适用于多轴的复杂运动控制组线设备。

软件方面呢,有信捷 PLC 编程工具软件(去信捷官网下载就行啦),当然,XS studio 也能用。办法挺多的,像信捷 PLC 常用的总线指令。要是你用传统梯形图来写,那就得自己手打命令。

咱们常用的单轴命令包括:使能、停止、绝对位置、相对位置、速度控制、回原点。差不多能满足咱们平常使用的要求。

咱们用伺服的时候,一定得先使能伺服电机,然后才能进行位置控制操作。

速度控制指令经常用在点动操作上。

回原点指令有两个,分别是 Home 和 ZRN 。

这两个指令的区别在于回原点的方式不一样。

ZRN 通常会以比较高的速度运动到接近原点开关的位置,然后变成爬行速度,等离开原点开关后就停止脉冲轴,并且把当前脉冲轴的位置清零。

Home 有好多回原点的方式,比如说绝对式直接设定新的绝对坐标;相对式在现有的坐标基础上做调整;被动式轴的位置值就是参数“Position”的值;主动式先以比较高的速度运动到限位,再反向运动去找原点等等。当然啦,这也不是绝对的,不同 PLC 的定义会有一点点差别。

信捷 PLC 和 EtherCAT 通讯设置这,创建工程这块我就不操作啦,咱们点 EtherCATMaster 进行伺服扫描,就能扫到咱们的伺服了。轴配置这呢,是我轴的参数配置,轴类型的选项有虚轴和实轴两个,虚轴就是虚拟轴的意思,实轴就是咱们真实现场的轴。

从站号就是咱们当前这个轴的地址,默认是从 0 开始的,代表第一个轴。要是有第二个轴,那从站号就是 1 ,依此类推。功能映射这边咱们得勾选上,这样咱们才能对真实的伺服进行操作。

单位换算这边是对伺服每发一个脉冲转几圈的设置,可以选择脉冲模式和 mm 模式。比如说在空运的时候,咱们设置每 100 个脉冲转一圈,意思就是发 100 个脉冲电机就转动一圈。当然啦,这是在空运的时候,实际情况得结合现场的丝杆算出来。要是有启动电机,那也得打开。


模式参数这边是用来设置伺服的软位操作的,看这图就行啦,字面意思,没多复杂。


ZRN 和 Home 这两个回原点设置,包括回原点方式、速度、限位的选择操作。有一点得提醒您,您在这边设置好了,如果在程序上面使用的时候没有设置新的参数,那它默认会采用这边设置的参数。


需要注意的是,在用轴的时候,得先把伺服状态设置成 OP ,要不然就没法用。


咱们简单看看一轴的快速配置,还有同时控制 32 个轴的封装程序。要是咱们只有一个轴,那可以一个一个地去配置它,因为就这一个,咱们也不需要写很多程序。可要是咱们有 32 个甚至 100 个轴,那该咋办?难道一个一个地手写重复的命令吗?比如说 1 轴要使能,我这边就得写“ld m0 A_Power hd0 hd1 k0”,下个轴还得这样写,咱们的工作就会变得特别繁琐。这时候呢,咱们就可以使用 FB 块功能,把咱们重复用到的东西写成一个功能块,然后再进行调用。就像这样,咱们要使能就使能对应的开关量,想控制哪个就控制哪个,把这个 FB 块弄出来就行啦。


使能 FB 块。我们把使能变量 Power 设为 InPut 类型,Axis 设为输入输出双类型,最后输出一个使能完成就行啦。节省点时间,这边我就直接说变量功能,这边得有一定的 FB 基础,不然还真看不懂。

点动 FB 块。点动会用到一些变量,我在这边给以下变量取了名字并输入:JOG_F 表示点动正方向、JOG_B 表示点动反方向、JOG_E 表示点触发、Axis 表示轴名字、JOG_VEL 表示点动速度、JOG_ACC 表示点动加速度。使用到的功能块是:BMC_A_VelMove

停止 FB 块。会用到一些变量,我在这边给以下变量取了名字并输入:JOG_E 表示点触发,STOP_E 表示停止按钮,Axis 表示轴名字。使用到的功能块是:BMC_A_Stop

绝对定位 FB 块。会用到一些变量,我在这边给以下变量取了名字并输入:MOVEA_E 表示绝对定位启动、Axis 表示轴名字、MOVEA_POS 表示绝对定位位置、MOVEA_VEL 表示绝对位置速度、MOVEA_ACC 表示绝对位置加速度。输出是:MOVEA_OK 表示绝对定位 OK 。使用到的功能块是:BMC_A_MoveA

相对定位 FB 块。会用到一些变量,我在这边给以下变量取了名字并输入:MOVER_E 表示相对定位启动、Axis 表示轴名字、MOVER_POS 表示相对定位位置、MOVER_VEL 表示相对位置速度、MOVER_ACC 表示相对位置加速度。输出是:MOVEA_OK 表示绝对定位 OK 。使用到的功能块是:BMC_A_MoveR

Home 回原点 FB 块。会用到一些变量,我在这边给以下变量取了名字并输入:HOME_E 表示 HOME 回原启动、Axis 表示轴名字。输出是:HOME_OK 表示 Home 回原 OK 。使用到的功能块是:BMC_A_Home

ZRN 回原点会用到变量,我在这边给以下变量取了名字并输入:E_ZRN 表示回原启动,Axis 表示轴名字。输出是:ZRN_OK 表示回原 OK 。使用到的功能块是:BMC_A_ZRN

轴复位 FB 块会用到变量,我在这边给以下变量取了名字并输入:RESET_E 表示启动,Axis 表示轴名字。输出是:RESET_OK 表示复位完成。使用到的功能块是:BMC_A_Reset

WRITE 位置设定 FB 块会用到变量,我在这边给以下变量取了名字并输入:WRITE 表示启动,Axis 表示轴名字。使用到的功能块是:BMC_A_Write

轴的状态显示。轴的状态显示这一块,我这边用 C 语言写了一个 FB 功能块。为啥要这么用呢?因为我们好多触摸屏不支持双精度位数,所以我才转换了一次。要记住,不是 64 转 32 哦。

轴的状态这一块,我这边在内部使用每个输出的“忙”状态,用“Busy”来表示。这样不管是哪个块在使用,都能显示出来了。

轴的位置显示 FB 块,这边调用的是已经做好的数据转换块。也就是咱们常说的 FB 调用 FB 块。Axis.Act.Pos 这个参数是需要调用系统轴的配置的,它是只读的,不能写,属于 Axis 结构体的类型。至于啥是结构体,大家可以去百度,那里讲得比我好。


其它轴的参数输出

关于 FB 块的使用,我们已经做好了 FB 块。要使用它的话,必须给它实例化,把轴实例化后给到 FB 块,有几个轴就使用几个数组数就可以了。在使用 FB 的时候,我们只需要输入对应的轴号就行。

信捷PLC-EtherCAT通讯32个轴程序写法 PLC论坛-全力打造可编程控制器专业技术论坛 -

来源:PLC技术玩一点号

相关推荐