如何在 iMX.RT1180 上设置运动控制参考设计
本应用演示了如何在 iMX.RT1180 上实现 EtherCAT+ PMSM 电机控制。参考设计包含两个工程,分别为主站工程和从站工程。主站工程负责完成 EtherCAT 主站协议栈的处理,从站工程负责完成 EtherCAT 从站协议栈的处理以及伺服电机的控制。基于本参考设计,做了两个 Demo 进行演示: Demo1: 1 个主站带 4 个从站节点,每个从站节点控制两台电机。来自不同从站节点的两台电机组成一组,通过激光穿透和遮挡演示 EtherCAT 的同步性能。Demo2 : 1 个主站带 2 个从站节点,每个从站节点控制两台电机。位于不同从站板上的电机 1 负责控制电机 2 平台的左右移动。位于不同从站板上的两台电机 2 靠近时会同步移动,远离时会分别移动。
电路板:XSERVO-MTR-DRV 电路板、MIMXRT1180-EVKC 电路板
类别:电机控制、网络
外设:ADC、PWM、以太网
工具链:MCUXpresso IDE
目录
1.软件
- MCUXpresso IDE:11.8.1
- EVK-MIMXRT1180 SDK:2.16.0
- 从 Git 存储库下载代码:TBD。
2.硬件
- 个人电脑
- NET 电缆和 24V 适配器。
- XSERVO-MTR-DRV 板和MIMXRT1180-EVK
- J-Link 调试器 (v7.88e)
3. 设置
3.1 步骤 1
- 打开 MCUXpresso IDE,在快速启动面板中,选择从应用程序代码中心导入
- 在搜索栏中输入演示名称。
- 点击?复制GitHub链接?,MCUXpresso IDE将自动检索项目属性,然后单击?下一步>?。
- 选择主分支然后点击?Next>?,选择MCUXpresso工程,点击Finish按钮完成导入。
- 单击?“Build”?开始编译项目。
3.2 第 2 步
MIMXRT-1180-EVK RevC 板设置
- 通过 J2 提供 5V 电源(JP1 引脚 1 和引脚 2 使用跳线连接)。
- 将 J-Link 调试器连接到 MIMXRT-1180-EVK RevC 板的 J37。
- 将“ motioncontrolmaster_soem ”项目导入MCUXpresso IDE。
- 选择 SDP 模式。(SW5->off-off-off-on)。
- 构建 motioncontrolmastersoem 项目(?调试构建?)并将项目下载到开发板(JP5 需要连接跳线)。 ?注意:?此项目无法直接构建。项目中缺少 CMSIS 相关文件,用户需要手动将文件从 (.. motioncontrolservort1180cm33 CMSIS..) 复制到 (..evkmimxrt1180soemservomotorbmcm33CMSIS..)。
- 选择 Flashboot 模式。(SW5->off-on-off-off)。
- 复位板。D31将一直亮着。
- 使用网线将ETH4连接到Slave网口。
XSERVO-MTR-PSG RevA 板设置
- 通过 J16/17 提供 5V 电源。
- 将 J-Link 调试器连接到 XSERVO-MTR-PSG RevA 板的 J15。
- 将“motioncontrolservort1180cm33”和“motioncontrolservort1180cm7”项目导入MCUXpresso IDE。
- 选择 SDP 模式。(SW2->off-off-off-on)。
- 首先构建'motioncontrolservort1180cm7'项目(?Release build?)。
- 编译“motioncontrolservort1180cm33”项目(?Release build?)。将项目下载到开发板。 ?注意:?此项目无法直接编译。请参阅下文。详细信息请参阅“rd-motion-control-imxrt1180motioncontrolservort1180cm33docs”路径下文档的第4章至第6.3章。
准备演示
```
1. Generate the SSC source code
- Download Slave Stack Code Tool(SSC Tool) from BECKHOFF official website and install it
- Open Slave Stack Code Tool
- Click 'File' -> 'New' -> 'Import' to import the Congfig file
Select servomotor.xml under path '.boardsevkmimxrt1180ecatexamplesservomotor<core>SSC'.
- Click 'Project' -> 'Create new Slave Files'
'Source Folder'(default): '.boardsevkmimxrt1180ecatexamplesservo_motor<core>SSCSrc'.
Click 'Start'.
- Copy SSC souce code to 'rd-motion-control-imxrt1180motioncontrolservort1180cm33ecatSSCSrc', and change to '.rd-motion-control-imxrt1180motioncontrolservort1180cm33ecatSSC' path to apply the patch.
Linux:
1. Download dos2unix command
apt-get install dos2unix
2. Transfer SSC source code format
dos2unix Src/*
3. Apply patch
patch -d Src < CiA402-combine-the-SSC-slave-with-ecpmsm-support.patch
Windows:
1. Download patch.exe and Unix2Dos.exe tool
Download Windows Patch Utility from http://gnuwin32.sourceforge.net/downlinks/patch-bin-zip.php .
Download Dos2Unix/Unix2Dos-Text file format converters from https://sourceforge.net/projects/dos2unix/ .
2. Transfer the patch format
$(Dos2Unix/Unix2Dos-DIR)/bin/unix2dos.exe CiA402-combine-the-SSC-slave-with-ecpmsm-support.patch
3. Apply patch
patch.exe -i CiA402-combine-the-SSC-slave-with-ec_pmsm-support.patch -d ./Src - Download the program to the Master board
- Update ESI file to EEPROM
- Copy ESI file 'ECAT-SERVO-MOTOR.xml' generated by SSC TOOL to //Config/io/EtherCAT/
- Restart TwinCAT3 IDE
- Scan device and Update EEPROM
```
- 选择 Flashboot 模式。(SW2->off-on-off-off)。
- 复位电路板。LED1将每隔1s亮一次。
- 连接电机1&2的电源和编码器端口。
- 连接网线,J3为从机输入,J7为从机输出。
3.2 步骤 3
Demo1 设置
- 主从机之间网线连接。
- 8 个电机和 4 个从属板安装在支架上。
- 两个 24V 电源为四块开发板供电。一块电源为开发板 1 和 2 / 1 和 3 供电,另一块电源为开发板 3 和 4 / 2 和 4 供电
- 通电前确保所有电机都处于正确的位置(激光是否能够穿过圆孔)。
- 为从属板提供 24V 电源。
- 主板5V供电。
Demo2 设置
- 主从机之间网线连接。
- 将四个电机安装到滑轨上并拧紧联轴器。
- 将两块板上的 M2 齿轮对接在一起,如上图所示。
- 为从属板提供 24V 电源。
- 主板5V供电。
4.结果
使用 USB 电缆连接主机 PC 和主板上的 OpenSDA USB 端口。打开串行终端,设置如下 - 115200 波特率 - 8 个数据位 - 无奇偶校验 - 一个停止位 - 无流控制 下面的日志显示了此演示在终端窗口中的输出:
```
Init success!
Init 3 success!
Start SOEM SERVO MOTOR EXAMPLE!
NETC EP frame loopback example start.
Starting motion task
ecinit on netc0 succeeded.
ecconfiginit 0
1 slaves found and configured.
ecconfigmapgroup IOmap:20001214 group:0
Slave 1, configadr 1001, state 2
CoE Osize:192 Isize:192
ISIZE:192 192 OSIZE:192
SM programming
SM2 Type:3 StartAddr:1100 Flags: 10064
SM3 Type:4 StartAddr:1400 Flags: 10020
OUTPUT MAPPING
FMMU 0
SM2
slave 1 Outputs 20001214 startbit 0
=Slave 1, INPUT MAPPING
FMMU 1
SM3
Inputs 2000122C startbit 0
IOmapSize 48
Slaves mapped, state to SAFE_OP.
segments : 1 : 48 0 0 0
Request operational state for all slaves
Calculated workcounter 3
Request operational state for all slaves
Calculated workcounter 3
Operational state reached for all slaves.
```
Demo1 结果
Demo2 结果
5. 支持
在此提供帮助的 URL。
项目元数据
有关此示例的内容/正确性的问题可以作为此 GitHub 存储库中的问题输入。
来源:恩智浦appcodehub
566
