【正文】
PLC 控制伺服电机用到的最多的方式就是脉冲控制,也就是 PLC 发送脉冲,伺服驱动器接收脉冲。现在呢,我们需要通过 modbus 协议,PLC 用 RS485 通信来读取绝对位置伺服电机的当前位置值。先了解用 RS485 通信(以下简称 485)读取电机
当前位置的作用:
PLC 控制伺服电机运动,可以通过编程来设定电机的速度和位移,一旦 PLC 断电,再次上电运行时,我们就不能确定电机在 PLC 掉电前的位置,所以只能做上电回零的处理,那这样操作的话,设备就必须从头开始运行。
类似这样上电回零再运行的设置方式,对于个别行业是不适用的,因此我们需要记录 PLC 掉电前的电机实际位置,所以 PLC 必须要用到掉电记忆的功能,为了精准的采集到电机的当前位置,就需要 PLC 的掉电记忆以及跟伺服电机的 485 通信来达
到实时读取电机位置的目的。
我们现在侧重于 PLC 与绝对位置伺服电机的设置方式。此处 PLC 与绝对位置型的伺服电机通信,我们这里以纳智伺服电机为例:
一、PLC 程序设置:
1.PLC 控制伺服电机运行的启动程序:
在触摸屏界面做点动启动,用 M1 作为电机启动的按钮(按钮功能:交替)。程序中对应的电机运动方式:按下 M1 按钮,电机正转,松开 M1 按钮,电机停止;再按一次 M1 按钮,电机反转,松开 M1 按钮,电机停止;如此往复循环。
2.PLC 中的 485 通信设置程序:
请注意,电机驱动器内部通信数据为 16 进制,PLC 的通信数据为10 进制,所以两者之间的通信必须要进行进制转换。
① PLC 内部 Modbus_RTU 通信配置:添加两条通信程序,如下图:
指令解析:
序号 0:检测标志 M80,M80 作为显示屏上采集伺服电机绝对位置的启动键;本机资料 W0,表示将读取到的电机编码器位置,保存在 PLC的 W0 寄存器里面;传输方向是双字,读取,用于读取伺服电机位置,因为用的 W0 寄存器来保存位置值
的,所以是用双字节的读取方式;从机资料:4xd4127。(详细说明,见下方进制换算的解说)其中 M80 的启动程序需要用到一个环编辑,用 M0 启动标志 M80的程序。
在 PLC 与电机的通信过程中,用的是标准的 modbus 协议,所以是以“次”为单位计算的,每次通信,M80 都会自动断开一次,如果 M0 一直有信号,就会一直触发 M80 通。
序号 1:检测标志 M81,M81 作为显示屏上对电机位置的清零键;本机资料 G0,表示将清零的数据通过寄存器 G0 直接写入到电机驱动器里面,从而实现清零的操作;传输方向是写入,也就是写入清零的数据,
因为用的是 G0 寄存器,所以是单字节的写入方式;从机资料 4x4096。(详细说明,见下方进制换算的解说)
二、伺服电机参数对照-进制换算:伺服电机的数据是 16 进制,需要换算成 10 进制数据,才能对应到 PLC,从而实现通信。
1、PLC 读取伺服电机的绝对位置设置:
这个数据是读取伺服电机绝对位置的,我们需要将 16 进制的 0x101F,换算成 10 进制的数据,再写进 PLC 程序中。
进制换算小助手
进制换算可以借助电脑的智能计算器
⬇⬇⬇
选择进入“程序员”的界面后,直接在“HEX”这一栏中输入 101F,计算器的“HEX”一栏,表示 16 进制,在这里输入伺服电机的位置地址单元 101F(地址单元是 0x101F,只要输入 101F);。
输入 101F 后,下面的“DEC”一栏就会自动的生成相对应的 10 进制地址值:4127,也就是 PLC 通过 485 方式读取的位置地址,在 PLC 中是 0x4127,编辑程序的时候将地址值写成 4127 即可。
对应的 PLC 程序解析:
电机的多圈位置,是 32 位地址,对应到 PLC 的数据必须要用到双字节,PLC 内部关于位置的双字节寄存器就是 W32 位寄存器,也就是用到W 寄存器显示电机的绝对位置。
①M80:实时读取的启动键;
②主机资料:0,表示寄存器的 ID;
③数据类型:选择的是:双字;写 4xD,这个对应的是 PLC 的 W32位寄存器,因为 W 寄存器是双字节的,所以表示 W 寄存器;对应到主机资料 0,这条指令就是用的 W0 寄存器。
④从机资料:4127,就是 PLC 读取的伺服电机位置的 10 进制地址值;
2、伺服电机多圈位置清零设置:
多圈位置清零:伺服驱动器对应的清零地址单元是 0x1000,清零写入的数据是 0x1111。
用智能计算器进行进制换算,写入 PLC 内部通信的 10 进制的地址以及数据,分别是:
进制换算小助手
进制换算可以借助电脑的智能计算器
1>地址换算:伺服电机驱动器清零对应地址是 0x1000。
计算器的“HEX”一栏,表示 16 进制,在这里输入伺服电机的清零地址单元 1000(地址单元是 0x1000,只要输入 1000);输入 1000 后,下面的“DEC”一栏就会自动的生成相对应的 10 进制地址值:4096,也就是 PLC 通过 485 方式读取的清零地
址,在 PLC 中是 0x4096,编辑程序的时候将地址值写成 4096 即可。
对应的 PLC 程序解析:
添加指令后,只要填写属性中打勾部分的参数,其他的默认。
①M81:清零键
②主机资料:0,表示寄存器的 ID;
③数据类型:选择的是:字;写 4x,这个对应的是 PLC 的 G_16 位寄存器,因为 G 寄存器是单字节的,所以表示 G 寄存器;对应到主机资料 0,这条指令就是针对 G0 的数据写入。
④从机资料:4096,就是 PLC 识别的伺服电机清零位置的 10 进制地址值;
2>数据换算:伺服电机驱动器清零对应数据是 0x1111。
伺服电机清零的数据是 0x1111 换算成十进制就是 4369,也就是 G0的数值是 4369,我们可以直接在寄存器值那里填写 4369。
以上所述,读取绝对值伺服电机的位置以及清零多圈位置,也就是PLC 的寄存器 W0 显示电机的绝对位置,寄存器 G0 数据表示清零。这样对应写好,就能实现对绝对式伺服电机的位置读取以及对电机的多圈
位置清零的操作。
请注意,必须填写对应的数据,否则读取或者清零都是无效的。将设置好程序下载进 PLC,PLC 与伺服电机用 485 通信线连接,就可以检验设置的成果了。