带485接口伺服电机使用MODBUS协议控制
硬件准备
最近要用STM32控制一个三轴伺服系统,在网上找了半天资料,最终基于安富莱的一个MODBUS例程写好了程序。
- 伺服系统: TSDA-C12B伺服驱动器+SDGA-01C31AB伺服电机
这款驱动器上带一个RS485通信接口,并且多个驱动器可以使用串接式总线串在一起,只要设置好对应ID就行。 - 开发板: 用的是正点原子探索者,板载STM32F407,通过一个串口2引到板载的SP3485转接芯片,用跳线帽接上就行。芯片同时需要一个接收使能信号来控制接收或发送,放在了PG8脚上。
工程文档在这。实际应用中因为是一个色度标定机器的机器控制部分,所以需要有上位机的参与,通过上位机发送控制信号给STM32,STM32解析并控制机器运动。
下面我就直接贴设计文档了,希望各位耗子尾汁。
文档里把串口2和串口3搞反了,应该是串口2与电机通讯,串口3与上位机通迅,我大意了啊。
基于STM32的伺服电机控制程序
软件架构
主控芯片采用STM32F407ZGT6,该伺服电机控制程序基于TODA电机经销商华创商城提供的模板程序进行编写,开发环境采用Keil v5,采用的MODBUS通讯协议参照“GB/Z 19582.1-2004 基于Modbus协议的工业自动化网络规范-第一部分”与“TSDA-C12B低压伺服用户手册”进行编写实现,程序包括主程序与中断共两部分,软件架构如图1所示:
该程序整体实现的功能包含以下几点:
-
MODBUS-RTU协议通信:根据“TSDA-C12B低压伺服用户手册”的寄存器功能定义表与通信帧使用示例进行相应的配置和操