基于固高驱动器的伺服电机项目调试
一、硬件系统配置
DriverStudio配置固高伺服电机控制器:
-
电机参数:选择80电机。
-
编码器:编码器配置选择绝对式多摩川,分辨率23位;编码器设置->分辨率 改成 8388608后回车保存复位,最后点寻相。齿数比可以改成10000,齿数比设置->
-
IO改成如下。
-
用户模式改成 模拟量速度。
二、编程环境配置
有C#版本和C++版本。师兄建议用C#版本,吃现成的界面。但还是C++用处 广一些,结合Qt。下面开始项目从0到1的探索。
导入dll库
Visual Studio 中在 C++ 项目中导入dll文件,参考博客()[https://www.php1.cn/detail/VisualStudio2019_24deeab9.html], 重要的三个地方,
- 添加工程的头文件目录:工程—属性—配置属性—c/c+±–常规—附加包含目录:加上头文件存放目录。
- 添加文件引用的lib静态库路径:工程—属性—配置属性—链接器—常规—附加库目录:加上lib文件存放目录。
- 添加工程引用的lib文件名:工程—属性—配置属性—链接器—输入—附加依赖项:加上lib文件名。
- 把生成的dll放到工程的可执行EXE文件所在的目录下(.\x64\Debug中)
- 在主函数中增加DLL头文件的引用及对应的调用代码
或者在工程文件夹中添加三个库文件gts.h, gts.dll, gts.lib,并在程序开头
#include "gts.h"
#pragma comment(lib, "gts.lib")
三、串口Pcomm库的使用
- 下载方式https://blog.csdn.net/CGS_______/article/details/119607665
- 简介https://blog.csdn.net/n_fly/article/details/78622745
四、读取电机绝对编码器值
485通讯采用CRC16位Modbus协议校验。对于1234号电机,分别发送指令如下:
0103008C000485E2
0203008C000485D1
0303008C00048400
0403008C000485B7
返回13字节的数据,分为单圈编码器值和多圈编码器值。
单圈编码器值为0~8388608 共23位,可以用 long 存储;
多圈编码器值就是转的总圈数,有正负。数据处理代码如下:
unsigned char result[13] = {0};
// 这里从串口中读取数据存入result数组里
// 单圈值原始数据,单位[360deg/8388608]
long single_pulse = (((result[5] << 8) + result[6]) << 16) + ((result[3] << 8) + result[4]);
// 多圈值原始数据,单位[r]
short location_pulse = (((result[9] << 8) + result[10]) << 16) + ((result[7] << 8) + result[8]);
double decimal = single_pulse / 8388608.0;
// 总绝对位置,单位[r]
double sum = location_pulse + decimal;
五、线激光传感器通信
使用485通讯的BCC校验位