一个快速开发EtherCAT从站的工具——ArduCAT 点击:4828 | 回复:0



cxmicrowave

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 0回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2016年4月27日
发表于:2016-04-27 22:34:19
楼主

1. 介绍

ArduCAT是Arduino[1] Compatible 开发板。本产品力图通过Arduino技术,大大简化EtherCAT从站的开发。ArduCAT开发板包含两路可用于EtherCAT实时以太网的100BASE-TX网口,所以它特别适合基于PC的自动化方案。ArduCAT使用ATMega1280 处理器,兼容Arduino Mega开发板,并具有完全相同的引脚定义。板上采用开关稳压器提供5V 或3.3V的2A直流输出,且发热甚微。除配套的开源Arduino库外,还配有从站应用层代码自动生成工具,用户只需编辑EXCEL表格便生成完整的协议栈,大大简化了通信协议的代码的开发,使用户能够将注意力集中在开发具体的应用上。

https://item.taobao.com/item.htm?spm=0.0.0.0.ErA7YS&id=530502226736

2. 代码自动生成

ArduCAT的从站代码由两部分组成。与具体应用无关的部分是‘ArduCAT’ 库,其安装方法已经在《ArduCAT_开发环境安装说明》一文中进行了介绍。而与具体应用相关的部分,包括 “对象字典”, PDO映射等,都可以用本字所用的代码自动生成工具生成。

代码自动生成工具位于下图所述的“EtherCATSlave”文件夹。它以包含了从站信息的Excel表单作为输入,自动生成Arduino脚本(.ino),和EtherCAT 主站使用的EtherCAT从站信息文件(ESI) (.xml) 。


目前,只有EtherCAT 常用的的process data和CoE (CAN over EtherCAT) 应用层服务在本工具中被实现。代码自动生成工具使用Python语言编写,是开源的,欢迎各路朋友为其添砖加瓦。具体使用方法如下:

2.1. 编辑从站描述表单(EXCEL)

“EtherCATSlave”文件夹下的“SSC-Device.xls”即是从站描述表单的一个实例。它可以被用于编写实际所需表单的模板。

该EXCEL 表单包含两部分。前16行是第一部分,它描述了从站的通用信息。其余部分则描述了对象字典(OD, object dictionary). 如果“rx”或“tx”被填入了某行对就的“rx/tx” 列,那么这一行将成为Rx或Tx 过程数据(process data).

 


2.2. 编辑代码生成工具的配置文件

代码生成工具的输入与输出文件名是通过 “SlaveGenerator.cfg” 文件指定的。


文件的格式非常简单。下面示例中,在 ‘-i', ‘-c’, ‘-x’后的文件名即分别为输入的表单文件,输出的 Arduino脚本文件和EtherCAT从站信息文件(ESI)。建议将输出的从站信息文件的目录直接指向EtherCAT主站软件规定的目录:对于TwinCAT’ 软件,一般是 ‘C:\TwinCAT\Io\EtherCAT’,而对于‘EtherCAT configurator’软件,则一般是‘C:\Program Files\EtherCAT Configurator\EtherCAT’。这样每次主站软件重启后便会直接识别生成的从站描述文件。

-i SSC-Device.xls

-c EtherCATSlave.ino

-x C:\TwinCAT\Io\EtherCAT\SlaveDevice.xml

2.3.        运行代码生成工具

有2种方法运行代码生成工具

最简单的方法是直接双击“SlaveGenerator.py” 文件。工具即会自动运行。


从输出窗口中可以看出,输出文件被成功生成了。


另一种方法是使用Python的GUI。在开始菜单中选择 “Python 2.7/IDLE (Python GUI)。


在菜单中选择“File/Open”,在弹出的对话框中进入代码生成工具的目录,并选择 “SlaveGenerator.py”。


脚本打开后,按下“F5” 或者在菜单中选择“Run/Run module”即运行程序。程序的结果会在Python shell中显示。这种运行方式的好处是脚本的输出会显示在Shell中,便于调试。

3.         编译并下载

通过一条mini-USB电缆将开发板与电脑连接起来。

3.1.        选择开发板

ArduCAT与Arduino Mega是完全兼容的,因此在“Tool/Board”菜单中选择 “Arduino Mega”。


3.2.        打开脚本文件

从“File/Open”菜单,选择要生成的脚本文件。

可以用 “File/Save as”将脚本保存在其它位置。

3.3.        编译与下载

按下“Upload” 键,即自动编译并下载编译好的程序到开发板。


4.         使用TwinCAT进行测试

下载程序后,ArduCAT开发板上便已经建立起了EtherCAT从站。测试从站可以使用TwinCAT、EtherCAT Configurator或其它主站软件。测试方法与测试一般从站是一样的,并无特别之处。本文以TwinCAT软件为例,给出测试从站的方法。使用其它软件,测试方法是类似的。

使用以太网线连接电脑与开发板的Port 0。

4.1.        测试前的准备工作

4.1.1.       拷贝ESI(.xml)文件

如果ESI(.xml)没有直接生成在TwinCAT软件的指定目录里(见2.2条),那么在启动TwinCAT软件前需要手动把生成的.xml文件拷贝到该目录下。

4.1.2.       下载从站EEPROM

4.1.2.1.       从任务栏打开 TwinCAT system manager.


在‘I/O’ device上单击右键,并选择 “Append device”。


选择 “EtherCAT/EtherCAT”, 并点击 OK.


4.1.2.2.       安装并使能网卡(首次运行需进行此步操作)

本节内容只需在 TwinCAT首次运行时进行操作。

如上节所述添加EtherCAT 设备后,单击该设备,并在右边窗体上点击Adapter选项卡。


点击 “Compatible Devices”


选择合适的网卡,并依次单击 “Install”和“Enable”,随后关闭对话框。

点击 Search,选择合适的网卡,点击OK。

4.1.2.3.       扫描设备

单击选择EtherCAT设备,然后点击扫描按钮 (或按F5),在所有弹出的对话框中选择“Yes”。

 


开发板被搜索到,并在EtherCAT device下面被列出来。单击找到的开发板,在右边窗体上选择“EtherCAT” 选项卡。


点击 “Advanced Settings…” 然后选择 “ESC Access/E2PROM/Hex Editor”.


点击右下角的“Select download from list”, 找到新生成的从站的ESI (.xml)文件对应的设备,并单击OK。稍等片刻,从站信息便被下载入开发板的EEPROM中。


4.2.        测试

4.2.1.       扫描设备

单击选择EtherCAT device,点击扫描按钮 (或按F5),在所有弹出的对话框中选择“Yes”。

 


开发板被搜索到,并在EtherCAT device下面被列出来。单击找到的开发板。


 

4.2.2.       测试从站状态切换功能

单击找到的开发板。在窗体右侧点击“Online”选项卡。


在“State Machine”框中按下 “Init”, “Pre-OP”, “Safe-Op”, “Op”按钮,即可在这4个状态间切换。注意,最后两个状态只有在Free run按钮被按下的情况下才能进入。

4.2.3.       CoE (CAN over EtherCAT) 功能测试

选择“CoE-Online” 选项卡,即可在下面的窗口中检查对象字典(object dictionary)是否正确,并改变其中可读写变量的数值。


4.2.4.       过程数据(process data)测试

可以借助CoE功能检查过程数据能否被正确传输

4.2.4.1.       Tx PDO (process data object) 测试

TxPDO中的输入是由从站向主站输入的数据,因此它们可以通过在CoE中写值,然后通过Process Data进行读取。

将从站在‘Online’选项卡中切换至‘Pre-OP’状态(亦可是“Safe-Op”, “Op”)。在随板附带的“ComboDevice”例子中,有8个TxPDO 变量(entries),其中4个的索引(index)是 0x6000, 另外4个的索引是0x6010。任意修改其数值。


在‘Online’选项卡中状态切换至 ‘OP’状态。

在左边的树状图中选择Tx PDO(即Input mapping)下面的变量,在右边的窗体中选择“Online”选项卡,观察其数据是否与刚才设置的数值相同。


4.2.4.2.       Rx PDO (process data object) 测试

RxPDO中的输入是由主站向从站输出的数据,因此它们可以通过在Process Data中写值,然后通过CoE进行读取。

当设备处于‘OP’状态时,在左边树中找到RxPDO变量(即Output mapping 0),选中相应的变量,然后在右边Online选项卡中点击‘Write…’ 按钮,更改变量的值。


在 ‘CoE-Online’选项卡中,找到刚才更改的变量,检查其取值是否与刚才修改的一致。.

 

5.         测试“灯亮度调节”应用程序

在Arduino脚本(.ino)中,可按照文件中的“TODO:”提示修改程序。该文件前部一般不用修改,与具体应用相关的函数体都在文件尾部。使用“Obj0xXXXX.SubIndexX”读写对象字典中的变量。

例如,如下科所示,我们在APPL_Application函数和setup函数中增加以下两条语句。然后重新下载程序。此时,通过在TwinCAT 软件中修改“Analog Output 1”变量的取值(0-255),就可以调节开发板上引脚13对应的灯的亮度。




 

 

 


[1] Arduino is a registered trademark of Arduino, LLC.




热门招聘
相关主题

官方公众号

智造工程师