基于ERTEC200P芯片的PROFINET IO工业以太网接口开发
2021-02-28
(天津电气科学研究院有限公司,天津 300301)
在“中国制造2025”的背景下,数字化工厂、智能工厂的概念被人们熟知。数字化工厂的本质是信息集成。在自动化领域,通讯技术、工业以太网技术的突破是信息集成的关键。
工业以太网技术的应用进一步提高了生产效率、优化利用资源、有利于生产规模的提升。在网络连接方式上,需要更加灵活的网络拓扑结构,具备更可靠的网络冗余特性。在系统应用中,需要更强的抗干扰能力和强大的系统诊断功能。
PROFINET是一种适用于自动化领域的开放式以太网标准,实现了更高的通讯传输速率、更强的数字化技术和灵活的网络技术[1]。PROFINET为用户提供了一个完整的解决方案,覆盖所有自动化领域的应用,可无缝集成现场总线系统,目前在自动化领域应用最为广泛。
本文介绍了一种基于ERTEC200P芯片的PROFINET IO工业以太网接口开发设计方案,包括硬件设计、软件实现以及通讯测试。基于该方案可快速实现PROFINET IO接口开发,对于拓展产品应用领域,提高产品竞争力具有很强的实际意义。
1 PROFINET和ERTEC200P
1.1 PROFINET协议简介
PROFINET基于标准以太网实现,是一种实时的自动化技术。其中,PROFINET IO对应的中国国家标准为GB/T 25105.1—3—2014。
PROFINET采用100 Mb/s以太网,使用全双工通信,在一条电缆上实现更多应用[2]。PROFINET是100%交换网络,不需要中继器就可以实现灵活的网络拓扑结构。此外,PROFINET网络为所有PROFINET设备提供设备诊断和网络诊断,减少设备停机时间。
PROFINET采用独立的通道用于IO数据输出和TCP/IP,无需为TCP/IP准备额外网络。PROFINET包含三种数据通讯方式,数据通道图如图1所示。
图1 PROFINET数据通道图Fig.1 Diagram of PROFINET data channel
1)标准数据通讯。基于TCP/IP协议,实现非实时(non real-time,NRT)数据通讯。用于传递参数化与配置信息,或读取诊断数据。
2)实时(real-time,RT)数据通讯。RT通讯是非同步的,循环周期缩短至250 μs,支持100 Mb/s通信,适用于超过90%的自动化领域。PROFINET基于TCP/IP第二层协议,提供了优化的实时通讯通道,缩短数据处理时间。
3)同步实时(isochronous real-time,IRT)数据通讯。IRT技术保证确定性数据和互联网协议数据同时传输,循环周期缩短至31.25 μs。数据传输和设备周期是同步的,循环时间缩短至125 μs,满足高性能(如伺服)控制系统的要求。
1.2 ERTEC200P基本介绍
ERTEC200P是由西门子公司开发的增强型实时以太网控制器。主要特点为:集成了支持IRT的双端口交换机,符合C类,循环时间可达31.25 μs。
ERTEC200P内部集成标准250 MHz ARM926 EJ-S处理器,可以作为单片系统,所有应用程序都在ERTEC200P实现[3]。其次,外部主机可以通过16/32位并行接口直接访问片内地址空间IORAM,相当于内置的双口RAM,将应用程序和通讯处理分开,构成双核系统。
ERTEC200P包含PROFINET IP核(PN-IP),用于实现高速PROFINET通讯。PN-IP内核包含性能升级的“快速转发”,“动态帧封装”和“碎片”机制。因此,ERTEC200P支持开发IRT等实时通讯应用,PN-IP提供最小设备处理周期为31.25 μs的同步输出。ERTEC 200P还允许无限制地访问TCP/IP数据和服务,以便可以并行传输非时间关键数据。
ERTEC 200P适用于各种现场设备类型:快速IO设备、高精测量仪器、同步伺服驱动和编码器以及所有高性能和智能自动化设备。
1.3 PN IO协议栈
基于ERTEC200P以太网控制器专用芯片,西门子提供完整的PROFINET IO协议栈,支持全部PROFINET规范内容。用户无需关注协议栈具体实现,即可实现RPFOINET IO工业以太网接口开发。
PROFINET IO协议栈实现的主要功能包括:与PROFINET IO控制器之间的周期及非周期数据交互;处理诊断和硬件中断,通讯模块动态增加、删除中断;分配以太网使用IP地址及设备名。
PROFINET IO协议栈主要技术参数包括:协议栈版本为V4.5.0;通讯模式为支持RT,IRT;支持协议包括DCP,LLDP,MRP,CLRPC等;IO数据长度为单向最大1 440 B。
2 PROFINET IO硬件设计
基于ERTEC200P构建PROFINET IO设备开发方案。系统主要由基于ERTEC200P的PROFINET IO设备和TCU1变频器控制单元组成。如图2所示。
图2 硬件结构图Fig.2 Diagram of hardware structure
图2中,ERTEC200P+SDRAM+SPI FLASH组成PROFINET IO设备核心部分,构成PROFINET协议栈和用户程序运行的最小系统。ERTEC200P和SDRAM之间通过16位数据宽度实现高速读写。SDRAM存储器容量为64 MB,SPI FLASH容量为32 MB,满足PROFINET协议栈和用户程序的需求。
PROFINET IO设备外部接口:
1)通过20针2.54 mm标准JTAG接口,为ERTEC200P提供程序下载与调试功能。
2)通过3.3 V TTL UART,提供PROFINET协议栈系统运行调试接口。
3)通过网络变压器,RJ45接口等,实现2路100 Mb/s PROFINET以太网接口。
4)通过GPIO接口拓展3个LED发光二极管,指示协议栈和系统运行状态。
5)通过SPI接口连接ERTEC200P与变频器控制单元,兼容控制器原有接口。
3 PROFINET IO软件设计
3.1 软件任务结构
ERTEC200P基于eCos实时操作系统创建系统任务,实现时钟处理、串口通讯、网络参数设置、通讯连接处理、PROFINET IO数据更新、通讯状态显示、控制器数据处理与交互[4]。系统软件结构图如图3所示。
图3 软件结构图Fig.3 Diagram of software structure
图3中,各主要组成部分功能如下:
1)Task_MainApp任务负责系统控制,创建PNIO协议栈,初始化PNIO设备信息,检测协议栈工作状态。
2)Task_PNPB是PNIO协议栈任务,用于事件处理,如通讯连接关系的建立与断开,模块与子模块的动态插入与删除,数据处理的更新。Task_PNPB任务负责处理与Task_CycleIO任务的数据交互。
3)Task_RS232任务,用于串口调试,根据串口命令执行相应操作对应的状态信息。
4)Task_LED任务,根据PROFINET协议栈运行状态和控制器通讯状态,控制指示灯的工作状态。
5)Task_CycleIO任务,根据触发信号,周期执行PROFINET协议栈与用户缓存区之间的IO数据交互。根据TRANS_END事件作为触发信号,或者是固定周期产生的触发信号,更新设备输入输出数据。
IRT通讯模式中,在周期数据的传输结束时刻,当所有的控制器IO CR和所有用户IO CR连接全部完成时生成TRANS_END事件。
6)Task_EXCH任务,根据PROFINET IO设备输入输出模型,控制PROFINET IO数据到通讯数据区的转换。
3.2 数据存取模型
PROFINET IO设备数据存取模型如图4所示。
图4 数据存取模型Fig.4 Diagram of data access model
PROFINET IO设备与PROFINET IO控制器建立通讯连接后,在PNIO_cbf_ar_ownership_ind中获取所有设备组态信息。其中,槽(slot)对应模块(module),子槽(subslot)对应子模块(submodule)。然后通过PNIO_sub_plug添加必要的模块信息。
PROIFNET IO设备调用PNIO_initiate_data_read,接收PROFINET IO控制器下发数据,将PNIO缓冲区数据,根据对应关系放到槽和子槽中。同时,调用PNIO_initiate_data_write,把槽和子槽中数据更新到PNIO缓冲区,上传给PROFINET IO控制器。
PROFINET IO设备根据通信连接关系和子模块属性,按照模块顺序、输入输出类型和IO长度,将输入输出数据存储到过程数据缓存区[5]。子模块属性在设备GSD文件中定义,表明PROFINET IO设备支持的输入输出模块信息。通过过程缓存区,PROFINET IO设备通过SPI接口实现与变频器控制单元的数据交换。SPI为全双工通信。PROFINET IO设备将基于PROFINET IO控制器产生的输出数据传送到控制单元,同时将控制单元返回数据传送到PROFINET IO控制器。
3.3 SPI通信协议
PROFINET IO与变频器控制单元通过SPI通信方式实现数据交换。一方面ERTEC200P提供SPI外设,开发方便;另一方面,兼容控制器原有接口,根据不同应用场合,可以实现外部通讯模块无缝替换。
SPI通信协议根据传输类型分为两类,一种是周期性传输的通信数据帧,一种是非周期传输的通信参数帧,SPI通信协议如图5所示。
图5 SPI通信协议Fig.5 SPI communication protocol
3.3.1 通信数据帧
命令字为0x01,表示当前传输为数据帧。
模块ID说明当前通讯模块类型,SPI协议设计兼容原有通讯模块,如PROFIBUS DP,对于底层设备而言,可实现无缝替换。
状态字指示PROFINET IO设备与PROFINET IO控制器的通讯连接状态。连接关系建立后,从通讯断开状态切换到通讯连接状态。根据数据有效性,在通讯连接状态,当数据传输内容不符时,切换到通讯报警状态。
根据模块属性计算数据区长度,根据过程数据填充数据区内容。通信数据帧为周期性传输,当PROFINET IO数据更新后,立即发起和控制单元的数据交换。控制器回复的数据帧格式与发送格式一致,除了模块ID对应为设备ID,表明当前连接的底层设备信息。
3.3.2 通信参数帧
命令字为0x02,表示当前传输为参数帧。
参数帧为非周期数据帧,当PROFINET IO设备初始化,或设备参数信息发生变化时发起传输。
参数帧的数据传输内容固定,包含6个B的MAC地址和6个B的IP地址,因此无需额外说明数据区长度。
控制器解析到有效数据后,通过外部接口显示PROFINET设备信息,方便观测与配置。
4 PROFINET通信测试
通过PROFINET IO控制器到底层设备之间的通信测试,验证PROFINET IO接口开发功能。测试环境硬件结构图如图6所示。
图6 测试环境结构图Fig.6 Diagram of test environment
测试环境由PLC S7-1500(PROFINET IO控制器)、PROFINETIO接口设备(ERTEC200P)、TCU1控制板、具备端口镜像功能的交换机以及安装TIA Portal V13软件和wireshark软件的PC机组成。
首先,将PROFINET IO控制器(PLC S7-1500)经交换机连接ERTEC200P与TCU1控制单元。然后将交换机右侧两个端口配置为镜像端口,其中一个端口连接到PC机,以便通过wireshark软件抓取PROFINET通信报文,分析网络数据包。
通过博图软件配置设备组态信息,将PLC S7-1500的IP地址设置为192.168.0.1,PROFINET IO设备的IP地址设置为192.168.0.2,设备通讯模块Slot1Subslot1选择64 B输入,输入地址IW0-63;Slot2Subslot1选择64 B输出,输出地址QW0-63;如图7所示。
设置TCU1控制单元,将PLC-1500下发数据回传。通过博图软件在线观测,比较输出数据(强制参数值表)与输入数据(观测参数值表)二者对应关系,如图8所示。
图7 设备组态图Fig.7 Diagram of device configuration
图8 输入数据与输出数据Fig.8 Diagram of input data and output data
图8中,将输出参数值QW8~QW14依次强制为0x5566,0x7788,0x99AA,0xBBCC。输入参数值与下方的输出参数值是一致的,说明PLC到TCU1控制器之间数据交互正常,PROFINET IO设备的协议转换功能实现。
通过wireshark软件抓取PROFINET通信报文,如图9所示。
分析抓取数据包,前6个字节0x28,0x63,0x36,0x8b,0xc5,0x66为目的MAC地址,是西门子PLC的MAC地址。接下来的6个字节0x80,0x20,0xcb,0x30,0x06,0xfc为目的MAC地址,是PROFINET IO设备的MAC地址。表明当前数据传输方向为从PROFINET IO设备到PLC。接下来的两个字节0x88,0x92表明当前数据帧为PROFINET 协议帧。中间的 0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc对应输入数据。同样,说明RPFOIENT IO设备转换功能正常。
图9 数据包分析Fig.9 Packet analysis
5 结论
本文从开发的角度介绍了一种基于ERTEC200P的PROFINET IO接口的快速实现方案,包括硬件设计、软件实现与通信测试。本通讯模块及其配套应用产品TAC1系列变频器已委托中国PROFIBUS & PROFINET协会(PI-China)进行检测并顺利通过认证测试,充分验证了方案设计的合理性。通过该设计方案将TACI变频器产品快速集成到PROFINET网络,满足了现场应用的需求,具有很强的实际意义。