使用EasyCAT快速开发EtherCAT从站

EasyCAT (Arduino Shield)使用说明

  1. 介绍
    EasyCAT是Arduino 的扩展板(Arduino Shield),它通过Arduino技术,大大简化了EtherCAT从站的开发,适合基于PC的自动化方案。它具有以下特点:
     包含2路可用于EtherCAT实时以太网的100BASE-TX网口;
     可配合符合Arduino规范的开发板使用,已完成基于下列开发板的测试;
     Arduino Uno
     Arduino 2560
     板上采用开关稳压器基于Arduino 5V提供3.3VEtherCAT网络芯片供电,发热量小;
     板上全部元件均使用工业级器件;
     配套使用开源协议库,配有从站应用层代码自动生成工具,大大简化了通信协议的代码的开发,使用户能够将注意力集中在开发具体的应用上
     除配套的开源Arduino库外,还配有EtherCAT从站应用层代码自动生成工具
     EasyCAT库:用户基于EasyCAT_Config_GUI编辑对象字典,支持PDO;支持IRQ方式与芯片通信,代码占用空间极小;
     AuduCAT库:用户只需编辑EXCEL表格便生成完整的协议栈,支持PDO、CoE(CANOpen over EtherCAT),支持位操作;支持IRQ方式与芯片通信(Flash>=64KB)。
    https://item.taobao.com/item.htm?spm=a230r.1.14.3.3e811a6dQKLd4F&id=600558742281&ns=1&abbucket=16#detail
    使用EasyCAT快速开发EtherCAT从站_第1张图片
    图1 EasyCAT
  2. EasyCAT的配置
    EasyCAT上有若干跳线,用于配置EasyCAT与Arduino之间的通信。
    2.1. SPI SS信号
    SPI片选(SS)信号通过用跳线短接P3相应插针进行配置,可选择端口6, 7, 8, 9, 10, A5。默认使用端口9。

图2 SPI SS信号的选择
2.2. 中断信号
EasyCAT可通过端口2向Arduino输出EtherCAT中断。除相应更改代码外,还需要如下通过P2如下进行选择,共有3种选项:
 查询(Polling)方式(默认):P2悬空。Arduino通过查询方式与EtherCAT进行通信;此方式简单,但效率稍低,适用于一般应用;
 EtherCAT中断方式:P2左边2脚用跳线短接。Arduino接收EtherCAT中断,即LAN9252的IRQ信号;此方式效率高,适用于不使用分布式时钟(DC)的应用;此信号在EasyCAT上经非门反相;
 DC (Distributive Clock):P2左边2脚用跳线短接。Arduino接收EtherCAT中断,即LAN9252的SYNC信号。此方式效率高,适用于使用分布式时钟(DC)的应用。此信号在EasyCAT上经非门反相。
2.3. SPI信号
EasyCAT默认使用ICSP连接器的SPI端口。对于无ICSP的Arduino板,亦支持使用端口11、13、12的SPI端口。此时,用户需将EasyCAT背面的R71、R72、R75短接。
3. EasyCAT范例
本文以EasyCAT范例中的TestEasyCAT_Custom为例进行说明。
3.1. 下载并安装软件
3.1.1. Arduino
http://arduino.cc/en/Main/Software.
3.1.2. ArduinoUSB串口驱动
下载地址:http://wch.cn/downloads.php?name=pro&proid=65
国外客户下载地址:http://www.wch-ic.com/download/list.asp?id=126
3.1.3. TwinCAT
https://www.beckhoff.com/forms/twincat3/warenkorb.aspx?lg=en&title=TC31-Full-Setup.3.1.4024.0&version=3.1.4024.0
3.1.4. EasyCAT
EasyCAT 库EasyCAT Library:
https://www.bausano.net/images/arduino-easycat/EasyCAT.zip
EasyCAT 配置工具EasyCAT Configurator:
https://www.bausano.net/images/arduino-easycat/EasyConfigurator_V3_0.zip
3.2. 连接EasyCAT
用跳线短接EasyCAT的P3的端口9;P2保持悬空。
将EasyCAT插接在Arduino开发板上。连接USB和网线(连接至PORT0)。
3.3. 编译下载Arduino程序
 双击打开EasyCAT_V2_0\examples\TestEasyCAT_Custom\TestEasyCAT_Custom.ino。
 选择项目/添加文件,在弹出的对话框中,选择EasyCAT_V2_0\EasyCAT.h,点击确定,此时可见EasyCAT.h出现在项目中主文件右侧。

 连接Arduino,并在“工具/开发板”和“工具/处理器”中选择相应的开发板;
 在“工具/端口”中选择Arduino所对应的口串口;
 点击上传(右箭头图标),将程序编译并上传至开发板。
3.4. 导入设备描述文件
将EasyCAT_V2_0\examples\TestEasyCAT_Custom\TestEasyCAT_Custom.xml拷入C:\TwinCAT\3.1\Config\Io\EtherCAT(如果安装在其它目录,请相应更改拷贝地址)。
3.5. 打开TwinCAT
3.5.1. 从任务栏打开 TwinCAT XAE

点击File/New/Project…,建立TwinCAT XAE Project。

在‘I/O’ /Devices上单击右键,并选择 “Add New Item…”。

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

3.5.2. 安装并使能网卡(首次运行需进行此步操作)
本节内容只需在 TwinCAT首次运行时进行操作。
如上节所述添加EtherCAT 设备后,单击该设备,并在右边窗体上点击Adapter选项卡。

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

点击 Search,选择合适的网卡,点击OK。
3.6. 烧写EEPROM
3.6.1. 扫描设备
单击选择EtherCAT设备,然后点击扫描按钮 (或按F5),在所有弹出的对话框中选择“Yes”。

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

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

点击右下角的“Download from list”, 找到AB&T/EasyCAT/TestEasyCAT_Custom(即新复制的.xml文件对应的设备),并单击OK。稍等片刻,从站信息便被下载入开发板的EEPROM中。

3.7. 测试从站
下载程序后,ArduCAT开发板上便已经建立起了EtherCAT从站。测试从站可以使用TwinCAT、EtherCAT Configurator或其它主站软件。测试方法与测试一般从站是一样的,并无特别之处。本文以TwinCAT软件为例,给出测试从站的方法。使用其它软件,测试方法是类似的。
使用以太网线连接电脑与开发板的Port 0。
3.7.1. 扫描设备
单击选择EtherCAT device,点击扫描按钮 (或按F5),在所有弹出的对话框中选择“Yes”。

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

3.7.2. 测试从站状态切换功能
单击找到的开发板。在窗体右侧点击“Online”选项卡。

在“State Machine”框中按下 “Init”, “Pre-OP”, “Safe-Op”, “Op”按钮,即可在这4个状态间切换。注意,最后两个状态只有在Free run按钮被按下的情况下才能进入。
3.7.3. 过程数据(process data)测试
可以借助CoE功能检查过程数据能否被正确传输
3.7.3.1. Tx PDO (process data object) 测试
TxPDO中的输入是由从站向主站输入的数据。在TestEasyCAT_Custom中的Bit16_RisingTestRamp变量可以看到不断增加的数据,在Bit8_FallingTestRamp中可以读出不断减小的数据。

3.7.3.2. Rx PDO (process data object) 测试
在TestEasyCAT_Custom中,RxPDO中的Led被输出到A2~A5引脚。
选择Leds后,按下Online选项卡中的Write按钮,填入5,可以用万用表测量出A2~A5四个引脚的电压交替为5V,0V。

  1. 编写自己的EasyCAT程序
    4.1. 基于EasyConfigurator配置从站
    下载EasyConfigurator。
    解压后打开EasyConfigurator_V3_2\Exe\EasyCAT_Config_GUI.exe。

输入设备的相关信息。左上区域是一般信息,包括厂商编码、厂家名称、产品编码、产品版本、产品名称。左下区域是输入变量(TxPDO),即从EasyCAT输入到PC的变量。右下区域是输出变量(RxPDO),即从PC输出到EasyCAT的变量。
编辑完成后,存盘,并点击“Create files”。此时目录下会出现3个文件,分别是.bin文件(EEPROM文件),.xml文件(从站设备描述文件),.h文件(PDO变量定义文件)。
文件生成后需要拷贝到适当的位置。其中,
 .bin文件:无需拷贝。
 .xml文件:复制到TwinCAT目录下(TwinCAT\3.1\Config\Io\EtherCAT)
 .h文件:复制到后续自己编写的Arduino项目中。
4.2. Arduino源文件的编写
一个EasyCAT的Arduino脚本(.ino)包含以下内容。
 引用PDO变量定义头文件
#define CUSTOM
#include “TestEasyCAT_Custom.h”
 引用EasyCAT和SPI头文件
#include “EasyCAT.h”
#include
 定义EasyCAT实体
EasyCAT EASYCAT;
如果需要更换SPI_SS引脚的话,可以如下定义(表示使用D8作为该引脚)。
EasyCAT EASYCAT(8)
 在setup()中运行EasyCAT初始化。
EASYCAT.Init()
 在loop()中运行EasyCAT任务。
EASYCAT.MainTask();
 读写过程数据
过程数据的定义可参见头文件。一般来说,输入变量(TxPDO)表示为:
EASYCAT.BufferIn.Cust.XXXX
输出变量(RxPDO)表示为:
EASYCAT.BufferOut.Cust.XXX
上文是默认的查询方式的Arduino程序的写法。
如果工作在中断模式,EASYCAT.MainTask()则应相应更改代码由中断触发。同时EasyCAT跳线、.xml和初始化代码中需要做相应的设置。

你可能感兴趣的:(ethercat)