1. IO‐Link 系统概述
一个IO‐Link系统由IO‐Link设备、传感器、执行器或者它们的组合构成,其中有一根标准的3线传感器/执行器电缆和一个IO‐Link主站。主站可以是一个具有不同功能和不同保护等级的设备。系统的体系结构如下图所示:
图1:系统体系结构示例
一个IO‐Link主站可以有一个或者多个端口。每个端口只能连接一个IO‐Link设备。因此IO‐Link是一种点到点的连接,而不是一种现场总线。
图2:IO‐Link点到点的连接
1.1 上电之后的状态
在一开始,设备总是处于SIO模式(标准I/O模式)。主站的端口可以使用不同的配置。如果一个端口设置成为SIO模式,主站这个端口的行为就像一个通用的数字量输入。如果端口设置成通信模式,主站试图寻找连接的IO‐Link设备。这个过程被称为唤醒。
图3:IO‐Link SIO 和COM 模式
在唤醒期间,主站发出一个定义的信号,然后等待设备的回应。主站使用最高的波特率发送这个定义信号。如果主站这次尝试没有成功,那么下次使用较低的波特率再试。主站用相同的波特率,对连接的设备进行三次尝试。如果主站收到了回答(比如,设备被唤醒),两者就开始通信。最初,它们先交换通信参数;然后,周期地交换过程数据。
如果设备在工作期间被删除,主站会检测到通信中断,马上发出报告。这很像现场总线,通知控制系统,然后再周期地进行唤醒设备的过程。在成功地进行了另一次唤醒后,再次交换通信参数;如果需要,可以对参数进行验证,然后重新开始周期性的数据交换。
如果主站终止两者的通信,主站和设备将回到原始的模式,也就是SIO模式。这被称为复原。
2. IO‐Link 协议
基本上讲,进行的交换有三种数据类型:
1.周期型数据(也称为过程数据);
2.非周期数据或者服务型数据;
3.事件型数据。
仅在收到IO‐Link主站请求后,IO‐Link设备才发送数据。主站发出非周期数据和事件显式请求后,设备应答;主站发出IDLE报文后,设备发送周期型数据。
2.1 过程数据(PD)
设备的过程数据是按一个数据帧的格式,周期性发送,过程数据的长度不超过2个字节。如果过程数据超过这个长度,就要对过程数据进行拆分,用几个周期发送。当过程数据为无效时,会有一个诊断信息。
2.2 服务数据(SD)
服务数据总是非周期地交换,并且总是按照IO‐Link主站的要求进行。首先,IO‐Link主站向设备发出一个请求,然后设备回答这个请求。如对一个设备写数据,或者从一个设备中读数据,都是这样进行的。服务数据可以用于读参数,或者读设备状态。它也能够用于写参数或者发送命令。
SD和PD可以用一个报文或者分开的报文传送。一个典型的数据交换参见有下面的结构。
图4:IO-Link报文结构
2.3 事件
当发生一个事件时,设备对“事件标记”置位,它被发送到过程数据报文的CHECK/STAT字节的第7位。主站检测这个置位位,得知事件的报告。在得知一个事件发生时,不进行服务数据的交换。这意味着事件出现或者设备发生过热、短路等情况,能够通过IO‐Link传送到主站,再到PLC或者监控软件。
IO‐Link主站能够生成自己的事件和状态,并通过各种现场总线把它们发送出去。这样的事件可以是:开路、通信中断或者过载等。
2.4 通信质量,重发,服务质量(QoS)
IO‐Link是一种非常牢固的通信系统。它工作在24V的电压下。如果一个帧失效,主站的请求会再重复一次。当第二次尝试发送数据再次失败时,主站会检测通信是否中断,然后报告给更高一级的控制系统。主站用重发报文的数量来测量通信的质量(QoS = 服务质量)。
2.5 通信速率和同步
IO‐Link规范定义的传输率(波特率)是4.8和38.4 kbps。通常,一个IO‐Link设备会支持其中一个波特率。IO‐Link主站必须支持这两种波特率。
周期时间由报文长度和主站与设备间的延时所组成。当波特率为38.4 kbps时,典型的周期时间为2 ms。
整个时间由设备指定的最小周期时间和由主站指定的同意或者参数化后的实际周期时间共同算出。
主站对每个端口可以设定不同的响应时间。设备应用可以和主站周期进行同步。相同主站的不同端口也可以实现与设备应用的同步。
2.6 报文类型和它们的结构
IO‐Link规范定义了不同的报文类型,过程输入数据和过程输出数据在大小上是不同的。
为了建立通信,主站必须决定设备的通信参数。一个相关信息是过程数据长度。基于这个信息,IO‐Link主站决定使用什么报文类型用于周期数据交换。在通信建立阶段,主站使用报文类型0。定义下面的报文类型:
表1:报文类型
当过程设备输入和输出数据的和超过2个字节时,总是使用报文类型1。 那么报文结构需要多个IO‐Link 周期来构成。
在“服务数据”节所表示的报文是2.1类型的报文。设备发送一个字节的过程数据。在上面的图示,设备首先发出一个字节的服务数据,然后加上过程数据的字节。在下面的图示,主站对设备发送一个服务数据。
图5:2.1帧类型
报文中不同位的含意如下表所示。
为了通过IO‐Link的物理层传输数据,每个字节打包在一个通用异步收发(UART)帧中,然后通过半双工模式在主站和设备之间传送。
图8:IO-Link UART帧
3. 参数交换
为了在一个IO‐Link设备和一台PLC之间交换数据, IO‐Link主站把IO‐Link数据映射到所使用的现场总线上。这就是所谓的IO‐Link映射至现场总线。如果IO‐Link主站直接通过专有总线(见图1)连接在一台PLC上,IO‐Link数据映射到这个总线,并且把数据传送到这台PLC;或者数据从PLC通过现场总线传送到IO‐Link主站,再到IO‐Link设备。IO‐Link映射到的现场总线已经有PROFIBUS,Profinet, INTERBUS, AS‐i ,DeviceNet,EtherNet/IP和 EtherCAT等。
来自或者到达IO‐Link设备的过程数据,是通过现场总线或者背板总线周期地进行传输。服务数据必须由PLC显式地请求,这非常容易识别。这就是为什么IO‐Link 要定义服务协议数据单元(SPDU)规范。
在功能块(FB)帮助下-每个PLC制造商提供多种定制的功能块(FB)用于这个系统-IO‐Link主站程序非循环地与IO‐Link设备在程序控制下进行通信。功能块定义哪个IO‐Link主站(也就是哪个现场总线设备)和哪个端口进行数据交换。同时,还要向这个IO‐Link设备发送请求。
可以对一个带索引和子索引的IO‐Link设备请求数据和状态。在IO‐Link主站中,请求(读写服务)指令用一个IO‐Link特定的服务协议数据单元(SPDU),通过IO‐Link接口传送到设备。
SPDU 指定了是读数据还是写数据。要读写的值通过索引来指定。SPDU有下面的结构:
图9:一个SPDU的结构
最多至32768索引,最多有232字节,用于指定IO‐Link的地址。
IO‐Link规范指定多种服务,例如:
D10 为制造商名称;
D12 为产品名称;
使用这些服务,IO‐Link设备能够得到独一无二的识别。
在现场总线上,IO‐Link主站呈现为一个通用的现场总线设备,通过相应的设备描述(比如:GSD,FDCML,GSDML,等),连接到各自的网络适配器上。这些文件描述了通信连接和IO‐Link主站的详细属性,
诸如:端口号。可是,连接的IO‐Link设备不能在这里读到。IO‐Link设备描述(IODD)文件透明地显示了系统的体系结构和完整地表出了IO‐Link设备。在IODD和ODD解释工具的帮助下,用户能够清晰地分辩出哪个IO‐Link
主站端口连接了哪个IO‐Link设备。
4. IO‐Link 系统结构
4.1 IO‐Link设备
使用IO‐Link协议,IO‐Link设备提供了对过程数据和设备状态变量的访问。某些变量已经定义,比如,用于识别目的的变量。制造商必须在定义的索引区创建设备变量。所有这些信息都在IODD中描述。
图10:IO-Link设备结构
4.2 IODD和解释工具
IODD包含通信属性、设备参数、识别码、过程和诊断数据等信息。它还包含设备的外形图和制造商的标识。所有制造商的所有设备的IODD结构是相同的,所以用IODD解释器工具展示的内容具有相同的形式。因此,用户可以使用第三厂家的解释器工具,处理所有的IO‐Link设备。
IODD是做为一个打包文件提供给用户的,它包括一个或者多个使用扩展标记语言(xml)描述的设备文件,和用可移植网络图象(png)格式的图形文件。
“IODD‐StandardDefinitions1.0.xml”
文件描述了所有设备的通用和强制属性。这个文件必须在IODD目录下,在每种支持的语言中存储一次。
解释器工具可以读出一个IODD文件,以图形的形式显示描述的设备(仅以有限的范围)。它可以用于所有制造商IO‐Link设备的参数化和诊断。同时,解释器工具可以从系统到现场的体系结构进行图形显示。
IODD检查器用于验证IODD。所有的IODD必须通过IODD检查器进行测试。检查器在IODD中输入一个校验和。解释器工具读出IODD中的这个值,然后与自己计算的值进行比较,结果必须相等。
图11:IODD结构
4.3 IO‐Link 主站
IO‐Link主站可以以不同形式连接到PLC(见图1),可以有一个或者多个端口。IO‐Link规范区分了两种类型的端口。端口类型A,针脚2的功能没有详细描述,可以由制造商自己定义,端口类型B用于设备需要特定电源的情况。
端口类型A
对于这种端口类型,针脚4可以配置成一个数字量输入(DI)或者一个IO‐Link。制造商也可以把针脚4
设计成一个带有电流限制的数字量输出(DO)。针脚2也可以实现其他的功能。制造商可以设计针脚,比如,做为一个DI或者DO。
图12:IO-Link主站,端口类型A
端口类型B
端口类型B是设计好的,比如,用于传感器或者执行器有电气绝缘的电源。这里,由针脚2和5提供外加电源。
图13:IO-Link主站,端口类型B