汇川PLC单位换算及电子齿轮比

本文以汇川H5U为例进行说明轴控的单位换算,经过改进后,H5U的设置界面更加合理及容易理解,汇川中型PLC-AM400/AM600系列的设置与此类似,界面也相同。

H5U支持本地轴控(发脉冲)和EtherCAT轴控,轴控设置界面是一样的,如下图:

在使用过程中,大家对这两个参数都存在疑惑,是啥意思?要怎么设置?

电机/编码器旋转一圈的脉冲数设的是多少脉冲让伺服转一圈;

        对于总线伺服,这里设置的是电机的编码器分辨率;

        对于脉冲伺服,这里设置的是多少位置指令时电机转一圈。

这里勾选与否,只是进制不同而已,AM系列默认十六进制数,所以注意转化:

工作台旋转一圈的移动量设置的是电机旋转一圈与机械移动量的对应关系,这样设置之后就把单位换算成机械单位了。

换算前,我们都是按照发多少脉冲、多快的脉冲频率来控制电机的位置、速度。换算后,我们就可以按照机械单位,比如毫米来控制机械。比如让丝杠以多少毫米每秒的速度,走多少毫米的距离。

 

1.Unit是什么意思?

Unit是"用户单位"的意思,它其实相当于一副“马甲”,可以当成是mm、um、nm、角度、英寸、脉冲等等机械单位。

比如电机直连丝杠,导程10mm,也就是说,电机转一圈,丝杠移动10mm。这里设置为10mm,那么这里的unit就等同于mm!

而如果我们带的机构是旋转台,想用角度,比如电机转一圈,旋转台转360度,那么就可以设置为

 那么这里的unit就等同于度°!

2.控制总线伺服的情况

以SV660N为例,对应的电机编码器精度为23位,分辨率为2^23(8388608),假设电机不带减速机,直连丝杠,丝杠导程是10mm。那么参数设置如下:

有些人会问,我用脉冲伺服的时候,不是一般发10000脉冲伺服转一圈吗?

不应该这样设置吗:电机/编码器旋转一圈的脉冲数:10000指令脉冲?(这是错误的!)

这里的电机编码器分辨率是8388608,也就是说,要让伺服电机转一圈,需要发送8388608个脉冲。如果是SV630N系列伺服,对应的电机是18位编码器,那电机编码器旋转一圈的脉冲数就应该设置为262144。

3.控制脉冲伺服的情况

假设要控制一个脉冲伺服SV660P,10000个脉冲就转一圈,不带减速机,直连丝杠,丝杠导程是10mm。SV660P的编码器分辨率也是8388608。

那么,按照刚才总线伺服的说法,应该这样设置吗:电机/编码器旋转一圈的脉冲数:8388608指令脉冲?(这是错误的!)

 这里的电机编码器分辨率是8388608,也就是说要让伺服电机转一圈,需要发送8388608个脉冲。

而H5U发送脉冲的能力(输出频率)是最高200kHz,什么概念?

就是1秒钟内最多发200000个脉冲。要让电机转一圈,最快要发(8388608/200000)=41.943秒,

取42秒好了,最快42秒才能让伺服转上一圈,这速度太慢了。

所以一般脉冲伺服,即便编码器分辨率很高,我们也会设置比如10000个脉冲让伺服电机转一圈,主要受限于控制器侧(PLC、脉冲定位模块、板卡等)发送脉冲的能力。

所以才会诞生电子齿轮比的概念!

10000个脉冲让伺服电机转一圈,H5U最多每秒发送200000个脉冲,可以让伺服转(200000/10000=)20圈,即20r/s,即1200rpm(每分钟1200转)。

实际上一般伺服的额定转速是3000rpm,这样的设置,最多只能让伺服达到1200rpm,远远不能发挥伺服电机的性能。

如果设2500个脉冲让伺服电机转一圈,H5U最多每秒发送200000个脉冲,可以让伺服转(200000/2500=)80圈,即80r/s,即4800rpm(每分钟4800转)。

这时就可以达到伺服电机的额定转速了,能够发挥伺服电机的性能。

回到刚才的问题,假设按照10000个脉冲让伺服电机转一圈,参数设置如下:

 但是,这样设置是不够的。因为伺服编码器分辨率还是8388608!还是需要收到8388608个脉冲才能转一圈!

所以,伺服内部也有个电子齿轮比。伺服驱动器那边需要设置如下:

H05.02设置成10000,相当于伺服自己收到10000脉冲后,就自动转换成8388608个脉冲了;这样一来,伺服收到10000脉冲,就能转一圈了。

 

4.控制脉冲步进电机的情况

步进电机就比较简单了。

假设要控制一个步进电机,步进电机收到4000个脉冲就转一圈,不带减速机,直连丝杠,丝杠导程是10mm。那么,参数设置如下:

 

5.单位换算与指令单位的关联

用户单位中,位置单位为Unit,速度单位为Unit/s,加速度单位为Unit/s²。

本文例子中,丝杠导程10mm,工作台旋转一圈的移动量设为10unit,unit表示mm,所以

指令中:位置单位为mm,速度单位为mm/s,加速度单位为mm/s²。

绝对位置指令为例,此处:

位置赋值为100,表示100mm,

速度赋值50,表示50mm/s,

加速度赋值60,表示60mm/s²。

就是让丝杠以50mm/s的速度走到100mm的位置。

6.每个脉冲的机械进给量

上面在说到控制总线伺服的时候说到,是不能设置10000个指令脉冲的。

但其实也不是不可以。要这么设的话,那就跟脉冲伺服一样,需要在伺服参数里设置电子齿轮比使得伺服收到10000个脉冲就转一圈。

 但是没有这个必要。因为脉冲伺服受限于控制器发送脉冲的能力,才必须设置电子齿轮比,而总线伺服的指令发送是通过总线,没有这个限制。这样设置后,反而会降低定位精度。

这里就涉及到一个概念:每个脉冲的机械进给量。

还是以此为例:23位编码器分辨率的伺服电机不带减速机,直连丝杠,丝杠导程是10mm。

如果不设置伺服电子齿轮比,则发送8388608个脉冲,电机转一圈,机械进给量是10mm。那么每个脉冲对应的机械进给量是:10mm / 8388608 ≈ 0.0012 μm。

如果设置电子齿轮比使得发送10000个脉冲电机转一圈,那么每个脉冲对应的机械进给量是:

10mm / 10000 = 1 μm

这里,每个脉冲的机械进给量仅仅是电气侧精度,当我们在衡量机械综合精度的时候,一般需要满足:电气侧精度  ≤ 机械综合精度 × (1/5 ~1/10)

所以,每个脉冲的机械进给量为  1 μm,则机械综合精度最高能达到  5~10 μm (前提是机械侧的精度能达到这个水平)。当然了,很少有机构的精度能达到微米级别,所以,很多情况下,设置电子齿轮比对定位精度的影响可以忽略不计。

7.脉冲伺服轴控的速度和定位精度

上面已经说到,之所以要设置电子齿轮比,就是受限于控制发送脉冲的最高频率;而电子齿轮比的设置又会影响到定位精度,所以我们总结一下:

输出频率最高200kHz的控制器,

10000个脉冲让伺服电机转一圈,最快可以让伺服转 200000/10000= 20圈,

即20r/s,即1200rpm,此时每个脉冲对应的机械进给量是:10mm / 10000 = 1 μm

2500个脉冲让伺服电机转一圈,最快可以让伺服转 200000/2500= 80圈,

即20r/s,即4800rpm,此时每个脉冲对应的机械进给量是:10mm / 2500 = 4 μm

调速范围的提高,会降低电气侧的定位精度。

所以,如果对定位精度和速度都有要求,一般会采用输出频率最高4MHz的控制器,差分高速输出脉冲。

8.使用变速装置控制的情况

比如电机间接驱动转盘,电机与转盘之间存在减速比为30:1变速装置(若电机齿轮齿数为1,工作台齿轮齿数为30,即工作台齿轮旋转1圈,电机齿轮旋转30圈),转盘的行程为0-360度,电机选择汇川IS620N绝对值电机(编码器分辨率为23位),配置如下所示:

 

 

<think>好的,我现在需要解决用户关于如何通过MODBUS-RTU实现汇川伺服SV660P与SMART PLC通信的问题。用户提到了接线方式、参数配置、地址换算、位置计数功能以及PLC程序示例。我需要根据提供的引用资料和已有的知识来整理这些信息。 首先,用户提供的引用中有关于Modbus-RTU的通信协议、西门子PLC与触摸屏的通信案例,以及汇川伺服SV660P的MODBUS通信参数设置。特别是引用[3]提到汇川伺服的参数H0C.26用于处理数据大小端问题,这可能在地址换算和数据处理时需要特别注意。 接下来,接线方式是物理连接的基础。MODBUS-RTU通常使用RS485接口,因此需要确认SV660P和SMART PLC的通信端口类型。一般来说,伺服驱动器会有RS485接口,而SMART PLC可能需要USB转485转换器或者自带RS485端口。需要查阅两者的硬件手册,确定A+和B-的接线方式,并确保终端电阻和屏蔽层的处理正确,以避免信号干扰。 然后是参数配置部分。伺服驱动器和PLC都需要设置正确的通信参数,如波特率、数据位、停止位和校验方式。例如,SV660P可能需要设置通信协议为MODBUS-RTU模式,并启用相应的控制权切换。引用[3]提到H0C.26参数用于处理数据大小端,这可能在读取或写入多字节数据时需要调整。此外,可能还需要设置伺服的工作模式,如位置模式,并配置相关的控制参数。 地址换算涉及到MODBUS功能码和寄存器地址的映射。伺服驱动器的参数通常映射到特定的保持寄存器地址,例如控制命令可能对应某个地址,目标位置或速度可能对应其他地址。需要查阅SV660P的MODBUS地址表,确定每个功能的寄存器地址,并注意地址是采用基于0还是基于1的偏移。例如,如果手册中的地址是十六进制,可能需要转换为十进制,并在PLC程序中使用正确的功能码(如03读取,06写入单个寄存器,10写入多个寄存器)。 位置计数功能的设置可能需要将伺服的位置指令通过MODBUS发送。这通常涉及将目标位置值写入指定的寄存器,并可能触发启动命令。需要注意数据格式,如使用32位整数或浮点数,以及是否需要处理高低字节顺序(大小端问题)。引用[3]提到使用参数H0C.26来调整数据的大小端,或者在程序中转换,这需要根据实际情况配置。 关于SMART PLC的通信程序,需要配置通信端口参数,使用MODBUS库指令,如MBUS_CTRL初始化通信,MBUS_MSG发送读写请求。需要确保轮询机制正确处理多个请求,避免通信冲突。示例程序可能需要初始化通信参数,然后周期性地发送目标位置到伺服的寄存器地址,并读取当前位置或状态信息。 最后,验证通信是否成功,可能需要使用调试工具监控MODBUS报文,检查数据是否正确发送和接收,以及伺服是否按预期动作。同时,注意接地和屏蔽以减少干扰,确保通信稳定性。 现在需要将这些思考整理成结构化的回答,涵盖用户提到的所有方面,并引用相关资料。同时生成相关问题,帮助用户进一步理解可能遇到的问题。</think>### 川伺服SV660P与SMART PLC的MODBUS-RTU通信配置指南 #### 一、接线方式 1. **硬件接口** - 川伺服SV660P的RS485接口:`CN3`端口(标注`485+`和`485-`) - SMART PLC的RS485接口:CPU模块自带或扩展模块(如CM01)的`A+`和`B-`端子 - **接线示例**: $$ \text{SV660P(485+)} \leftrightarrow \text{PLC(A+)} \\ \text{SV660P(485-)} \leftrightarrow \text{PLC(B-)} $$ 需在总线两端添加$120Ω$终端电阻,并确保屏蔽层单点接地[^1]。 #### 二、参数配置 1. **伺服驱动器参数** | 参数编号 | 功能 | 设置值 | 说明 | |----------|-------------------|---------|--------------------------| | H0C-00 | 通信协议选择 | 1 | MODBUS-RTU模式 | | H0C-01 | 波特率 | 9600 | 需与PLC一致 | | H0C-02 | 数据位/停止位 | 8N1 | 无校验 | | H0C-26 | 数据大小端 | 0或1 | 0:大端模式;1:小端模式[^3] | **注意**:参数写入后需重启生效。 2. **SMART PLC通信配置** - 使用`MBUS_CTRL`指令初始化端口: ```python MBUS_CTRL(EN=1, Baud=9600, Parity=0, Port=0, Timeout=1000, Done=MB_Done, Error=MB_Error) ``` 其中`Parity=0`表示无校验,与伺服参数匹配[^2]。 #### 三、地址换算与数据格式 1. **寄存器地址映射** - **控制指令**:地址`0x2000`(十进制8192),功能码06(写入单个寄存器) - 写入`0x0001`启动位置模式 - **目标位置**:地址`0x2001`(32位数据,占用两个寄存器),功能码16(写入多个寄存器) - 示例:目标位置`100000 pulses`需拆分为高低字:`0x000186A0` → 高字`0x0001`(地址8193)、低字`0x86A0`(地址8194) - 需根据`H0C-26`调整字节顺序[^3]。 2. **位置计数功能设置** - **当前位置读取**:地址`0x3000`(十进制12288),功能码03(读取寄存器) - **单位换算**:若电子齿轮比为`10000 pulses/rev`,则位置值需按比例计算: $$ \text{实际位置(rev)} = \frac{\text{读取值(pulses)}}{10000} $$ #### 四、SMART PLC通信程序示例 ```python // 初始化通信 MBUS_CTRL(EN=1, Baud=9600, Parity=0, Port=0, Timeout=1000, Done=MB_Done, Error=MB_Error); // 写入目标位置(100000 pulses) MBUS_MSG(EN=Trigger, Slave=1, RW=1, Addr=8193, Count=2, DataPtr=&D100, Done=Msg_Done, Error=Msg_Error); // 读取当前位置 MBUS_MSG(EN=Cycle_Trigger, Slave=1, RW=0, Addr=12288, Count=2, DataPtr&D200, Done=Read_Done, Error=Read_Error); ``` #### 五、调试要点 1. 使用ModScan工具验证伺服响应[^1] 2. 若数据异常,检查`H0C-26`大小端设置或程序中的字节交换逻辑[^3] 3. 接地不良可能导致通信中断,需确保屏蔽层可靠接地[^2]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值