# 电机控制方案书

## 一、项目背景

&emsp;&emsp;电机控制是运动控制的基础，本项目需要熟悉运动控制相关的指令和自制一个控制软件，控制电机的运行。首先需要熟悉电机控制的相关指令，能够通过XDPPro来调试电机，并且能够绘制梯形图来制作PLC程序控制电机运行。然后需要自制一个控制软件，通过设置相关的参数来控制电机运行。

## 二、项目需求

### 2.1 需要学习的运动控制指令

1. 学习了解项目相关的H运动的运动控制指令
2. 学习了解项目相关的C运动的运动控制指令

### 2.2 需要实现的电机运动控制

1. 控制电机的启动
2. 控制电机的停止
3. 控制电机的暂停
4. 控制电机的继续

### 2.3 需要了解的其他知识点

#### 2.3.1 电机参数

1. 设置电机的运行的相关参数

#### 2.3.2 电机运动

​	电机运动包括电机使能；电机的点动、相对运动、绝对运动、多段运动；电机的停止运动；电机的继续运动。

### 2.3 项目开发环境

&emsp;&emsp;QT、Window10、c++、XDPPro

## 三、项目具体设计

​	我实现的是电机在C运动模式下的相关运动控制，因此PLC程序中使用的都是C运动相关的控制指令，在自制程序中需要去设置的参数都是我通过对XDPPro中C运动模式下的轴调试的学习后了解到的。

### 3.1 PLC程序设计

### 3.2 自制软件设计

#### 3.2.1 整体流程图

首先是整体的流程图，如下：

![image-20211214200830059](电机控制方案书.assets/1.png)

```
首先进行通信的连接，然后就可以进行参数的配置；配置完参数之后就可以给电机使能信号；给了使能信号之后就可以对相关的数据和连接状态进行监控；之后就能对电机进行相关的运动控制操作；最后是判断程序是否结束。
```

##### 3.2.1.1 通信连接

本项目的通信连接主要通过Xnet的通信方式，流程图如下：

![image-20211214200646467](电机控制方案书.assets/2.png)

```
首先设置Xnet服务的IP地址，然后就可以通过函数读取连接状态标识，读取成功之后就可以判断标识是否正常；正常的话就提示连接成功；不正常的话就提示连接失败。
```

##### 3.2.1.2 参数配置

参数配置模块包括两部分，首先是参数下载，在上位机程序中输入相应的参数，然后下载到PLC中。然后是参数上传，通过Xnet通信协议的函数将PLC中对应的参数读取写入到上位机程序界面上对应的表格中。

###### 1.参数下载

首先是整体的流程图，如下：

![image-20211215100141207](电机控制方案书.assets/3.png)

```
首先先判断连接状态，如果状态不正常则提示连接出错；如果正常则用户可以在界面上输入参数的离线值，然后写入参数。
```

输入参数的离线值模块的流程图：

![image-20211215101027411](电机控制方案书.assets/4.png)

```
输入对应的参数
```

写入参数模块的流程图：

![image-20211215102634853](电机控制方案书.assets/5.png)

```
首先判断参数是否被选中，如果成功则获取它的离线值并转换成整型；然后判断转换成整型是否成功；如果没有选中或者转换成整型失败都返回失败信息；成功的话就用Xnet函数写入数据，返回成功信息。
```

###### 2.参数上传

参数上传模块的流程图如下：

![image-20211215103252529](电机控制方案书.assets/6.png)

```
首先用Xnet函数读取所需要的参数，然后将对应参数写到界面中对应的位置。
```

##### 3.2.1.3 数据和状态监控

###### 1.连接状态监控

![image-20211215110139891](电机控制方案书.assets/7.png)

```
首先要设定读值的时间间隔，因为XDH的同步单元周期我们基本默认是1000ms，因此我这里的时间间隔也设置为1000ms。到时间触发任务，读取SD8020的值，然后判断是否为1，如果为1的话就说明连接成功，不为1则连接失败。
```

###### 2.从站状态监控

![image-20211215110628319](电机控制方案书.assets/8.png)

```
这是依据EtherCAT通信协议设置的从站状态监控，因为本项目PLC和伺服已经电机之间采用的是EtherCAT通信。时间间隔同样是1000ms，读取SD8021的值，根据SD8021的值去判断从站的状态。
```

###### 3.数据监控

![image-20211215111549779](电机控制方案书.assets/9.png)

```
数据监控和之前的连接和从站状态监控差不多，区别是时间间隔缩短到500ms，这样可以提高数据的精确度和准确性。
```

##### 3.2.1.4 运动控制

###### 1.点动

![image-20211215113251481](电机控制方案书.assets/10.png)

```
在电机使能之后，写入你需要的参数，然后选择正向点动还是反向点动
```

###### 2.相对运动

![image-20211215124247226](电机控制方案书.assets/11.png)

```
首先开启电机使能，然后写入对应参数开启运动即可
```

###### 3.绝对运动

![image-20211215124848217](电机控制方案书.assets/12.png)

```
首先开启电机使能，然后写入对应参数开启运动即可
```

###### 4.多段运动

![image-20211215125249512](电机控制方案书.assets/13.png)

```
首先开启电机使能，然后写入对应参数开启运动即可
```

###### 5.停止运动

![image-20211215125444639](电机控制方案书.assets/14.png)

```
停止运动只需开启M15线圈即可
```

###### 6.继续运动

![image-20211215125558999](电机控制方案书.assets/15.png)

```
继续运动需要关闭M15线圈，然后开启M20线圈即可
```

