摘要:为了在开发带有IO-Link技术的设备中提供有效的固件开发环境。以IO-Link技术为背景,依据IO-Link技术协议设计了固件开发结构。该固件结构具有稳定、可重用等特点。基于该固件结构,用户依据不同的需求来设定相关的参数就能够便捷的开发具有IO-Link技术的设备。
关键词:自动化;IO-Link;技术;协议栈;固件
在传统的自动控制系统中,现场的测量仪表以及传感器和执行器遇到故障或者用户希望修改此类设备的参数时,通常需要应用工程师到现场对设备进行维护或设定。而使用了带有IO-Link技术的设备,只需要将现场设备直接替换,设备会自动下载相应的参数信息,无需对新设备进行设定。当用户需要修改设备参数时,只需要在应用层将参数设定好,系统会按照IO-Link协议规范将参数自动下载到设备中。IO-Link接口技术消除了传感器与执行器上的瓶颈,使得数字量的点对点连接具有对话能力,他用标准的三线制电缆代替了复杂的接口,并给整个处理级赋予了一致的参数化和诊断概念[1]。IO-Link技术从一开始提出就注定将会在自动化发展过程中留下深深的足迹,它以其特殊的性能受到用户的好评,国内外众多知名的传感器、执行器和自动化设备的制造商已经将IO-Link技术应用到他们的产品中。IO-Link 技术作为一种将执行器或传惑器集成于自动化系统中的低成本的通信解决方案与公众见面,目的是把与过程的最后一米连接做得透明度更高,通信性能更强[2]。
1 IO-Link技术概述
1.1 IO-Link系统组成
IO-Link是通向执行器和传感器的最后一步,也被誉为自动化的最后一米技术[3]。IO-Link技术是一种将传统和智能传感器和执行器集成在自动化系统中的低成本通信接口技术,是一种独立于现场总线的通信接口,它可以实现传统传感器与智能传感器的混合运行[4]。一般来说IO-Link系统由许多IO-Link设备、传感器、执行器或者他们的组合通过标准3线制传感器/执行器电缆连接到IO-Link主站设备上组成,主站可以是一个具有不同设计和不同保护等级的设备。IO-Link系统的结构如下图。

图1 IO-Link系统结构
一个IO-Link主站可以有一个或者多个端口,每个端口只能连接一个IO-Link设备[5]。同样,也可以将一个IO-Link设备从站接入IO-Link主站的端口,在IO-Link的从站上接入普通的现场传感器、执行器。因此IO-link是一种点到点的通信,而不是一种现场总线。

图2 IO-Link点对点的连接
1.2 IO-Link启动
IO-Link设备初始默认为标准I/O模式启动,主站端口可以进行组态,端口配置成标准I/O模式时,将作为常规的数字量输入输出端口使用,如果配置成通信模式时,主站件检测端口所连接的IO-Link设备。这个过程称为唤醒。IO-Link通讯模式与标准I/O口模式见下图。

图3 IO-Link通讯模式与标准I/O口模式
在唤醒期间,IO-Link主站设备发送特定的信号并等待设备应答。主站设备先尝试定义的最高波特率,如果不成功则尝试低一级的波特率。在每一个传输速率下三次尝试唤醒设备。如果主设备接收到应答(例如设备被唤醒),将会进入通讯模式。首先是交换通信参数,之后将开始交换周期性的过程数据。
如果设备在运行期间被移除,IO-Link主站设备侦听到通信中断,将会向控制系统发出报文,并且周期性的尝试唤醒设备。如果设备被再次唤醒,如果需要将读出通讯参数,之后将开始周期数据交换。
如果IO-Link主站设备中断通讯,主站设备和设备都将切换为标准I/O口模式,这也叫做回落。
2 IO-Link协议概述
IO-Link不能算一种单独的工业网络,而只是一种简单的协议,利用现有的点对点连接技术增加网络效率,增加设备间的信息交换能力[6]。基于应用广泛的三线技术,IO-Link协议使用户快速运行现场装置,维护更加简便。仅仅使用一根电缆就可以完成数据传输和能量供给,IO-Link协议简化了连接程序,减少电缆投入。而且,允许用户从一个传感器下载设置的参数提供给替换的传感器产品,因此不再需要携带操作手册到现场进行设置[7]。
基本上,IO-link协议进行交换的有三种数据类型:周期性数据(也称为过程数据)、非周期数据或者服务性数据、事件型数据。
只有IO-Link主设备发出请求后,IO-Link设备才发送数据,IO-Link主设备会明确地发出非周期数据和事件的请求,在主设备的空闲报文后才发送周期数据。
1) 过程数据(PD-Process data)
设备的过程数据通过数据帧周期的传输,保证了过程数据宽度不超过2个字节。如果过程数据长度超宽,将会被分割并通过几个周期来传输。当过程数据有误时将会输出诊断信息。
2) 服务数据(SD-Service data)
服务数据交换是非周期的,而且是基于IO-Link主设备的请求。首先,IO-Link主设备发送一个请求给IO-Link设备,IO-Link设备给予响应。服务数据可以用来读取设备状态和参数值,也可以用来写参数值和发送指令。
服务数据和过程数据可以在一个报文传输,也可以在几个报文里传输。IO-Link报文结构如下图。

图4 IO-Link报文结构
3) 事件型数据
当有事件发生时,设备首先置位事件标志,事件标志位在过程数据报文的CKECK/STAT字节的第七位中传输。主设备侦听该为且读出事件报告。如果有事件报告将不允许服务数据交换。这也就意味着设备的状态如过热、短路等可以通过事件向PLC或可视化系统报告。
IO-Link主设备可以产生自己的事件和状态例如开路、通讯中断、过载等,并通过相应的现场总线传输事件和状态。
3 IO-Link协议栈解析
3.1 IO-Link协议栈结构
IO-Link设备协议栈已经完整的封装好了,并提供了良好的用户应用接口程序,协议栈的结构图如下。

图5 IO-Link设备协议栈结构
协议栈解析:
1) STACK_Init(const TUnsigned8 *parameter);
设备协议栈初始化,协议栈初始化前必须将硬件设备进行预设,主要完成内部数据结构的复位。IO-Link设备的类型描述、通讯属性、设备参数和诊断数据设置都在此函数中设定。当IO-Link设备连接后,通过IODD解析器DTMs(设备管理类型器)来解析IO-Link设备的设备描述,以及对IO-Link设备的控制[8]。另外,配置参数将会以IO-Link技术规范中定义的32个字节方式分配给协议栈,数组参数将会作为指针分配,协议栈需要这些参数来进行通信。协议栈初始化包含了功能预定义的参数,分配协议栈的参数。初始化帧模式,置位帧缓冲器用于接收新的数据帧。初始化所有事件句柄模式,复位所有状态,等待事件发生。
2) STACK_Start(TUnsigned8 Baudrate);
激活IO-Link协议栈,保存用户选用的传输速率,所有参数使用设备定义的传输速率进行交换,同时选定特定的数据帧格式,使能说有必须的外部中断和串行数据中断等
3) STACK_Run;
IO-Link协议栈开始运行,周期的进行过程数据和参数交换。
3.2 固件结构设计
具有IO-Link技术的设备开发可以调用IO-Link协议栈来完成,通过对协议栈的参数配置、和任务调度来进行IO-Link数据传输。设备的固件主程序包含了以下协议栈的几个接口函数。
main()
{
OLIMEX_EX_Board_GPIO_Config();
/*完成STM32的硬件配置,使能通用定时器时钟,通用IO口配置等工作*/
Debug_UART_Config();//配置用于调试的串行口
STACK_Init(const TUnsigned8 *parameter);
STACK_Start(TUnsigned8 Baudrate);
STACK_Run;
}
在协议栈的初始化接口函数中还包含了硬件接口、数据帧和时间等的初始化。在协议栈的启动接口函数中还包含了硬件接口的标准输入输出方式和通讯模式的选择,数据帧、时间的规定和硬件外部信息中断允许等任务。协议栈配置与启动后进入运行状态,能够按照预设的方式与IO_link主站设备保持通讯。IO-Link设备固件结构的详细结构框图如下。

图6 IO-Link固件结构
4 结束语
IO-Link技术可以在整个设备范围向传感器和执行器提供各种数据,使用IO-Link可以凭直觉对传感器层的系统进行参数化,设计时可以对传感器/执行器功能的稳固性等加以检查[9]。使用了带有IO-Link技术的设备可以增强生产加工设备的可用性、保证生产加工流程和生产数据的畅通无阻,简化工业现场的布线连接[10]。
IO-Link固件主要是提供了完成IO-Link数据交换的准备以及数据通讯的通道方式的设定等工作,IO-Link设备的开发必须基于IO-Link的协议栈,它提供了IO-Link数据传输的规范,按照文中提出的固件结构,用户可以基于协议栈按照协议规范来设定参数,产品设计出符合不同应用场合的不同类型的集成IO-Link技术的工业自动化设备。
参考文献:
[1] IO-Link可实现更高的生产率和系统性能——巴鲁夫在MOTEK2006展会上推出新的通讯标准[J]. 世界制造技术与装备市场, 2007,(02)
[2] IO-Link有助于车床制造商提高生产率[J]. 现代制造, 2008,(48)
[3] 与时俱进的PROFIBUS和PROFINET[J]. 中国食品工业, 2006,(09)
[4] 任晓明. FA&PA新力量——PROFIBUS和PROFINET最新技术新闻发布会[J]. 机电产品市场, 2006,(10)
[5] 卢祁. 中国PROFIBUS&PROFINET协会(CPA)第二次会员大会[J]. 中国仪器仪表, 2011,(03)
[6] 傅昆. 现场级联网技术的新进展[J]. 现代制造, 2006,(29)
[7] 线性传感器的领导者[J]. 自动化博览, 2010,(05)
[8] 李薇瑾. 设备类型管理器及应用[J]. 仪器仪表标准化与计量, 2010,(04)
[9] 利用IO-Link控制现场设备[J]. 现代制造, 2007,(27)
[10] Frank-Josef Heimerl. 声纳传感器采用IO-Link技术优化生产加工控制[J]. 现代制造, 2009,(22)
摘自《自动化博览》2011年第十期
|