微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Ethernet/IP通信适配器的设计与实现

Ethernet/IP通信适配器的设计与实现

时间:12-20 来源:互联网 点击:

调用OAL的函数OEMInterruptDisable来通知硬件关闭该特定中断直到必要的处理结束。然后。内核调用ISR将物理中断映射成逻辑中断值,触发一个事件唤醒挂起的IST。IST启动运行之后,需要完成初始化工作包括虚拟内存映射和相关寄存器的配置,然后完成具体的数据处理。IST的结构如下:

IST在完成初始化工作后进入循环等待中断事件,直到触发事件从内核返回。一旦产生中断,IST将与I/O接口通信,并从I/O接口中读取所有必要的数据,完成其中断交互操作。然后,1ST用关联的逻辑中断标识来调用In.terruptDone函数,通知内核中断处理已完成。内核将重新启用指定的巾断,以便接收该设备的下一个中断请求。在完成驱动程序的编写之后,还需将编译后产生的驱动文件封装进操作系统映像中。至此,应用程序通过访问文件系统的一个特殊文件便可实现对设备的访问和控制。

5 EtherNet/IP通信适配器的应用软件开发

CIP设备描述中定义的通信适配器必须包含标识对象、消息路由对象、连接对象以及同网络连接相关的对象,对于EtherNet/IP而言,同网络连接相关的对象包括TCWIP接口对象和EtherNet连接对象。此外,通信适配器可选对象为组合对象、应用对象等。根据Ether-Net/IP定义的设备对象模型,本文在EADK(EtherNet/IPadapter developers kit)的基础上设计了EtherNet/IP通信适配器应用软件,完成EtherNet/IP通信适配器所需的各项功能。EADK是一种软件协议栈,使开发者能很快地将EhterNet/IP适配器功能增加到产品的特征中去。

5.1 通信适配器的软件整体架构

EtherNet/IP通信适配器需实现UCMM(未连接管理器)客户端和服务器、显式报文服务器以及I/0服务器;其中UCMM处理未连接信息,为Ethemet/IP控制网络中尚未连接的设备建茳连接;显式报文连接服务器和I/0连接服务器主要用来与Ethemet/IP扫描器之间建立连接,交换娃式报文和实时I/O数据。该通信适配器软件整体架构如图2所示。

图2 应用软件整体功能结构图

在程序开始运行后,首先初始化EADK协议栈,动态注册自定义的CIP类;接着,启动UCMM服务器和客户端以及娃式报文服务器,以便发送和接收UCMM报文和显式报文,进行组态、参数设置等;然后,根据连接在该EtherNet/IP通信适配器上的I/O模块配置匹配的组合对象实例,并启动I/O连接服务器;最后,让应用程序的执行线程在回调函数中等待,以便接收正确连接请求,与远程EtherNet/IP扫描器建立显式报文连接和I/O连接,交换显式报文和实时I/O数据。

5.2 应用程序的实现

CIP是面向连接的协议,因此连接对象在EtherNet/IP扮演了相当重要的角色。连接对象主要负责记录每个连接的设定值和连接状态等信息,每个节点内至少需要2个连接实例来分别处理I/O连接和娩式报文连接。每个CIP连接都可以用一个连接对象的实例来表示,连接建立可以通过使用连接对象的Create服务或者连接管理(connection manager)对象的Forward Open服务。该通信适配器的显式报文连接和I/0连接的建立都是通过连接管理对象的Forward Open服务实现的埔1。以下给出连接管理对象的部分头文件定义:

#define CONNMGR—CLASS 6//连接管理对象类ID#define FWD—OPEN—CMD—CODE 0x54//连接请求服务

对象发送Get—Attributes—All服务来获取该设备的信息。连接在通信适配器上的I/0模块本身不支持EtherNet/IP协议,并且在不同应用场合连接在通信适配器上的L/O模块数量和类型都是不确定的,因此需注册一个自定义的CIP类,使组态工具可以通过一个UCMM请求报文获取连接在通信适配器上的I/O模块信息。该类的类代码是定义78Hex,属于厂商自定义(vendor specific)的范围。该CIP类通过响应Get—Attributes—All请求将各个IVO模块的外部ID(external ID)返回给配置软件,这样用户在配置软件上便可作正确的配置和选择。

在完成所需的CIP类封装的基础上,应用软件还需要实现UCMM服务器和客户端、I/O连接服务器以及显式报文连接服务器,构成一个完整的EtherNet/IP通信适配器。由于篇幅限制,只给出部分实现代码,具体如下:

5.3 EDS的编写

对于EtherNet/IP网络而言,每个设备都必须提供ElY5文件供组态配置工具识别。该EtherNet/IP通信适配器可连接多个不同类型的I/O模块,因此在实际的开发中需要编写一个机架的EDS、一个通信适配器的EDS和若干I/O模块的EDS。I/O模块的EDS文件的主要作用是说明I/O数据的结构和含义,通过与通信适配器的EDS的有机结合提供了CIP连接的所有信息。机架的EDS则将通信适配器和VO模块紧密

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top