polarimeter_software/User/driver/sv630p/README.md
2025-09-30 10:37:23 +08:00

116 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
* @Date: 2025-06-26 16:19:42
* @Author: mypx
* @LastEditors: mypx mypx_coder@163.com
* @LastEditTime: 2025-06-27 08:32:34
* @FilePath: README.md
* @Description:
* Copyright (c) 2025 by mypx, All Rights Reserved.
-->
要通过STM32使用Modbus通信控制SV630P伺服驱动器实现启动、停止、恒速运动、转动指定角度等功能需先明确Modbus通信参数及功能码映射以下是具体实现步骤及指令说明
### **一、Modbus通信基础配置**
1. **通信参数设置**
- 在SV630P驱动器中配置Modbus参数通过功能码H0C组
- **H0C-00**伺服轴地址1~247需与STM32设置一致
- **H0C-02**波特率如115200bps对应H0C-02=6
- **H0C-03**数据格式如无校验、2个结束位对应H0C-03=0
- STM32端需匹配上述参数使用Modbus-RTU协议RTU模式CRC校验
2. **通信协议格式**
- **报文结构**:从站地址+功能码+数据+CRC校验。
- **示例**读取寄存器0x1000报文为 `01 03 10 00 00 01 CRC_L CRC_H`
### **二、实现启动、停止功能**
#### **1. 伺服使能(启动)**
- **功能码**写单个寄存器0x06
- **寄存器地址**
- **H03-00**DI功能分配1需将DI1设为“伺服使能S-ON即向地址0x0300写入0x0001Bit0=1
- **或直接操作控制字**通过寄存器0x2000控制字写入0x0006bit1=1使能伺服
- **指令示例**
`01 06 03 00 00 01 CRC_L CRC_H`使能DI1为S-ON
#### **2. 伺服禁止(停止)**
- **方法1**向0x0300写入0x0000清除DI1使能
- **方法2**向0x2000写入0x0000清除使能位
- **指令示例**
`01 06 03 00 00 00 CRC_L CRC_H`禁止DI1
### **三、实现恒速运动**
#### **1. 速度模式设置**
- **功能码**写单个寄存器0x06
- **寄存器地址**
- **H02-00**控制模式选择写入0x0000速度模式
- **指令示例**
`01 06 02 00 00 00 CRC_L CRC_H`(设置速度模式)。
#### **2. 速度指令给定**
- **寄存器地址**
- **H06-03**速度指令键盘设定值写入目标转速单位rpm范围-6000~6000
- **指令示例**设置速度1000rpm
`01 06 06 03 03 E8 CRC_L CRC_H`0x03E8=1000
#### **3. 启动速度运行**
- 确保伺服已使能S-ON=1速度指令生效后电机按设定转速运行。
### **四、实现转动指定角度(位置模式)**
#### **1. 位置模式设置**
- **寄存器地址**
- **H02-00**写入0x0001位置模式
- **指令示例**
`01 06 02 00 00 01 CRC_L CRC_H`
#### **2. 电子齿轮比配置**
- **寄存器地址**
- **H05-07**(电子齿轮比分子)和 **H05-09**(分母),需根据机械传动比设置。
- **示例**若电机转1圈需要10000脉冲编码器分辨率262144则齿轮比=262144/10000=262144/10000即H05-07=262144H05-09=10000。
#### **3. 位置指令发送**
- **方法1脉冲指令通过寄存器写入**
- **寄存器0x2001**位置指令值低32位**0x2002**高32位写入目标脉冲数。
- **示例**转动1圈10000脉冲
`01 10 20 01 00 02 00 08 00 00 27 10 CRC_L CRC_H`0x2710=10000
- **方法2多段位置指令**
- 通过H11组寄存器如H11-00~H11-03预设位置段再通过DI功能选择段号。
#### **4. 启动位置运行**
- 确保伺服使能位置指令生效后电机按脉冲数转动完成后DO输出“定位完成”信号可通过寄存器0x2100读取状态
### **五、关键状态监控**
- **运行状态读取**
- **寄存器0x2100**状态字bit0=1表示运行中bit2=1表示定位完成。
- **指令示例**:读取状态字:
`01 03 21 00 00 01 CRC_L CRC_H`
- **转速/位置反馈**
- **寄存器0x2080**(实际转速)、**0x200D**(位置偏差计数器)。
### **六、注意事项**
1. **指令顺序**:需先设置模式,再发送指令,最后使能伺服。
2. **异常处理**通过读取故障寄存器0x2130判断是否报错如过流、过载需先复位故障写0x2101=0x0008
3. **通信可靠性**STM32需处理CRC校验错误、超时重发等机制避免指令丢失。
通过以上步骤可实现STM32与SV630P的Modbus通信控制完成启动、停止、恒速及定位功能。
---
在汇川SV630P伺服驱动器文档里这些缩写有特定含义结合伺服系统应用场景为你解析
### 一、DIDigital Input 数字输入)
- **含义**:是驱动器的数字量输入端子 用于接收外部设备像PLC、按钮、传感器等发出的离散数字信号通常是高低电平信号比如24V为高电平代表“1” 0V为低电平代表“0” ),以此控制驱动器的运行模式、启停、功能切换等逻辑。
- **举例**比如DI端子可接入“伺服使能”信号当外部给该DI端子送入有效高电平驱动器内部电路检测到后会使能伺服电机让电机处于可接收控制指令、准备运行的状态还能接入“复位”信号用于清除驱动器的故障状态等 。
### 二、VDIVirtual Digital Input 虚拟数字输入
- **含义**是一种通过通信方式如Modbus、CANopen等模拟的“虚拟”数字输入信号 。不像DI是实实在在的硬件接线端子VDI是借助通信报文来传递数字量输入的逻辑状态可用于和DI类似的控制功能好处是能减少硬件接线实现更灵活的远程或总线控制。
- **应用场景**假设通过Modbus协议与驱动器通信上位机如PLC或工控机可在通信报文中设置对应VDI参数的数值0或1 驱动器解析报文后就如同接收到真实DI端子的输入一样执行相应动作像通过VDI来切换控制模式、触发某些功能等 。
### 三、VDOVirtual Digital Output 虚拟数字输出
- **含义**是虚拟的数字量输出和VDI对应通过通信方式向外输出驱动器的数字量状态信息 。它把驱动器内部的状态如运行状态、故障状态、报警状态等以数字量形式通过通信报文发送给上位机或其他设备无需实际的DO硬件接线就能传递状态。
- **应用场景**驱动器运行中出现故障会把代表“故障”的VDO状态比如1 )通过通信发送给上位机,上位机解析后就能知晓驱动器故障,进而执行报警、停机等联动操作;也可用来传递“伺服准备好”“定位完成”等状态信息 。
简单总结就是DI是物理接线的数字输入端子VDI、VDO是依托通信实现的虚拟数字输入、输出能让控制更灵活、减少硬件接线方便进行总线或远程控制场景下的信号交互 。要是你看的文档里对这些有更细致的自定义解释,以文档为准哈,不同应用场景或自定义配置里,它们的功能表现可能也会有适配性调整。