文献标识码:A
DOI:10.16157/j.issn.0258-7998.2017.03.016
中文引用格式:林志航,高军礼,徐超蓝,等. 基于EtherCAT从站的IO扩展模块设计[J].电子技术应用,2017,43(3):66-69.
英文引用格式:Lin Zhihang,Gao Junli,Xu Chaolan,et al. Design of IO expansion module based on EtherCAT slave station[J].Application of Electronic Technique,2017,43(3):66-69.
0 引言
在多数工业应用场景中,都需频繁对各种现场开关量信号进行采集和输出。EtherCAT作为一种性能优越的现场总线,具有实时性突出、总线利用率高、传输速度快等特点,适合实现可靠的数字IO通信。基于EtherCAT现场总线的数字IO控制具有广泛的应用价值。随着EtherCAT总线技术的推广,工控领域中EtherCAT从站节点关于数字IO应用的需求逐步提升,而恶劣的工业现场环境也要求从站节点IO采集和输出方面具备足够的可靠性。
本文基于一轻量级的EtherCAT从站,设计了经济且高效的工业数字IO扩展模块,与从站构成的系统具有稳定性强、集成度高和安全性好等特点,足以满足工业数字IO的应用需求。
1 总体方案设计
1.1 EtherCAT从站方案设计
综合考虑EtherCAT从站实现的技术难度,本系统采用了TI的AM3359 ICE开发板来实现从站的基本功能。AM3359芯片内部带有PRU-ICSS可编程工业通信子系统,可通过TI提供的EtherCAT固件代码使PRU-ICSS实现EtherCAT从站控制器的基本功能。相比于使用ET1100等独立式芯片实现从站控制器的从站方案[1],AM3359独特的ARM+PRU核的架构可以使微处理器与从站控制器一体化,进而使从站硬件集成度更高,开发周期更短[2]。
从站软件采用分层设计方式,分为驱动层、协议层和应用层,基于从站应用层软件实现IO扩展应用为本文研究的重点。
1.2 IO扩展模块方案设计
为满足系统应用需求,基于AM3359从站开发板设计了3个IO扩展模块,每个扩展模块可控制16路的数字量输出和16路的数字量输入。各扩展模块均由一主控CPU控制,EtherCAT从站主控芯片AM3359与多个扩展模块主控CPU之间通过SPI总线进行通信,其中扩展模块的主控CPU作为SPI从机,而AM3359芯片作为SPI主机,利用3个GPIO脚作为片选脚,与3个扩展模块的处理器芯片进行SPI多机通信。设计框架如图1所示。
2 IO模块硬件设计
IO模块的硬件设计按照功能划分为微处理器单元、DC/DC电源模块、数字量输出单元、数字量输入单元以及JTAG接口单元等。IO模块硬件设计总体框图如图2所示。
IO模块主控芯片采用德州仪器公司的16位单片机MSP430F5529,该芯片具有强大的处理能力和大量的IO端口,足以满足该设计需求。
考虑到在工业应用上24 V电源的通用性,而且本系统中MSP430F5529需要3.3 V供电,所以采用了24 V转3.3 V的DC/DC电源模块。
数字量输出单元主要用于实现数字量信号的输出,由光耦隔离模块和IO驱动两部分组成。光耦模块起到保护MCU通用IO口和实现数据缓冲隔离的作用。MCU输出信号经光耦隔离处理,再经驱动芯片放大后,可用于驱动工作电压为24 V的IO设备。
数字量输入单元主要用于采集工业上的开关量信号,这些信号经常会产生瞬时高压、过电流或者接触抖动。为了保证输入信号安全可靠,本单元设计进行光耦隔离处理[3]。
3 系统软件设计
3.1 EtherCAT从站应用软件设计
3.1.1 SYS/BIOS实时操作系统研究
SYS/BIOS是一个轻量级的实时操作系统,其内核占用资源极小。此外,SYS/BIOS可通过线程的方式实现硬件中断服务程序[4],该类线程的优先级特性与处理器本身的硬件中断优先级保持一致。SYS/BIOS还可使用图形化或者动态的方式配置硬件中断与任务线程,在使用上更为灵活方便。
从站软件应用层设计使用了SYS/BIOS作为软件平台,从站在运行过程中各实时控制任务均在各硬件中断线程中完成。
3.1.2 AM3359 SPI驱动程序设计
AM3359作为SPI主机,协调着从站与各IO模块之间的通信。SPI驱动程序主要包括SPI模块初始化、SPI发送处理和SPI接收处理,其中SPI接收处理采用中断的方式实现。
为保证SPI主从机通信顺利进行,AM3359 SPI模块初始化应当根据MSP430 SPI的模块功能配置合适的寄存器参数,主要有时钟极性、时钟相位以及通信波特率等[5]。
由于从站应用层设计是基于SYS/BIOS实现的,在这里使用图形化配置的方式实现SYS/BIOS下的SPI接收中断。配置界面如图3所示。
3.1.3 从站COE对象词典设计
本设计中每个IO扩展板实现16路的开关量输出和16路的开关量输入,在从站软件中需合理设计COE对象词典管理过程数据。在这里使用输出过程数据对象0x7010、0x7020和0x7030来分别管理各扩展模块的开关量输出过程数据,使用输入过程数据对象0x6010、0x6020和0x6030来管理各扩展模块的开关量输入过程数据,另外使用RxPDO映射对象0x1601、0x1602和0x1603将以上所述输出过程数据对象分别映射到3个RxPDO,使用TxPDO映射对象0x1A01、0x1A02和0x1A03将以上所述输入过程数据对象分别映射到3个TxPDO,最后使用0x1C12对象配置SM2,使用0x1C13配置SM3[6]。
针对从站的应用层对象词典的设计需编写合适的从站设备描述文件,重点是关于RxPDO和TxPDO的描述,以便在EtherCAT网络通信中EtherCAT主站能够根据从站描述文件生成网络信息文件,从而对从站进行正确有效的配置。
3.1.4 从站控制任务设计
从站的控制应用程序主要通过SPI通信实现与各个IO扩展模块进行数字量输入输出的数据交互。考虑到主机与从机之间交互的有效数据长度是确定的,并且在SPI多机通信过程中,从机通信的调度方式是基于主机控制的片选信号实现的,因此在SPI一主多从的通信上忽略从机地址以及通信数据长度的信息设置。综上所述,根据SPI全双工的传输特性,定制如下通信协议:主机和从机协议帧均由起始码、有效数据和结束码组成, 分别占用1 B、2 B和1 B,其中主机协议帧有效数据由2组IO输出数据组成,从机协议帧有效数据由2组IO输入数据组成,如表1和表2所示。
从站软件在APPL_Application函数中实现控制任务。主机在每个EtherCAT周期内向从机发送协议帧,利用SPI全双工通信与双方协议帧长度相同的特性,主机发送的同时从机也回发协议帧,因此主机再发送一次协议帧,便可完成主机与一个从机之间的数据交互。
主机在与从机通信之前先通过设置合适的GPIO电平选中相应的从机,之后再发起数据传输,主机的数据接收在中断中处理,结束数据交互后主机通过检验从机协议帧起始码和结束码来决定是否刷新IO输入数据。主机与任一个从机进行数据交互的流程图如图4所示。
3.2 IO扩展模块软件设计
MSP430作为SPI从机,使用SPI中断接收主机发来的数据,主机协议帧的解析在从机的接收中断中处理。从机在解析协议过程中,使用一辅助状态变量确定当前接收字节数据位于数据帧的哪个部位。在程序主循环中,从机通过检验主机协议帧起始码和结束码来决定是否刷新IO输出数据。主循环流程和中断处理流程如图5、图6所示。
4 系统测试
利用装有TwinCAT软件的PC实现EtherCAT主站,对IO扩展模块的功能进行测试和验证。
将编写好的从站设备描述文件放至TwinCAT软件相关子文件夹中,以便TwinCAT主站能对从站进行正确有效的配置。将PC主站与从站搭建成一简单EtherCAT网络,再进行系统测试。
进行IO输出测试时,使用大功率LED作为IO输出控制对象接于IO模块的IO输出点,通过TwinCAT软件控制相应IO点的输出,监测LED是否亮灭来判断IO输出功能是否正常。TwinCAT软件扫描所得IO输出对象和控制IO输出的界面如图7所示。
进行IO输入测试时,使用24 V信号源将信号输入给IO输入点,在TwinCAT软件通过监测输入IO信号是否正常跳变来判断IO输入的功能是否正常,TwinCAT软件扫描所得IO输入对象和监控IO输入信号的界面如图8所示。
经测试与分析,此次设计的IO模块可有效实现预定的功能。本设计中从站若需增加IO扩展模块,硬件上从站仅需使用额外的IO引脚作为SPI片选脚与IO模块相连,然后在从站软件应用层对象词典添加相关数据对象,在控制任务添加与新模块的通信代码即可有效地添加IO扩展模块。
5 结束语
本文基于一嵌入式EtherCAT从站提出近距离数字IO扩展方案。详细阐述了该方案软硬件的实现过程,重点分析了SYS/BIOS系统在从站软件应用层上的使用、从站对象词典实现以及从站与IO扩展模块之间通信软件设计。最后,结合TwinCAT软件搭建EtherCAT测试网络对从站IO扩展应用进行测试。经实验验证,EtherCAT从站与IO扩展模块结合的系统能够稳定可选地工作。
参考文献
[1] 施大发,刘建林,王辉,等.一种高性能EtherCAT实时以太网从站的设计[J].湖南师范大学自然科学学报,2011,34(3):37-40.
[2] 任计羽,范永坤,熊皑.EtherCAT高性能从站的设计与实现[J].计算机应用,2014,34(S1):18-20.
[3] 王续利,王全胜,张梅.基于FPGA的开关量输入模块设计[J].计算机测量与控制,2012,20(9):2494-2496.
[4] 汤敏,范永坤,熊皑.基于SYS/BIOS的伺服控制实时操作系统的设计[J].机床与液压,2013,41(11):118-121.
[5]这孙斌,胡越黎,王昆.SPI总线用于双处理器通信的数据链路层设计及其实现[J].上海大学学报,2012,18(5):513-518.
[6] 金超,夏继强,满庆丰. CANopen对象字典的分析与具体实现[J]. 单片机与嵌入式系统应用,2012(8):12-14.
作者信息:
林志航,高军礼,徐超蓝,蒋 杰
(广东工业大学 自动化学院,广东 广州510006)