【工业现场总线IO-LINK连载四】IO-LINK的协议浅析
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帧类型
报文中不同位的含意如下表所示。
表2:读/写(R/W)值
表3:数据通道值
表4:帧类型值
图7:设备的检查/状态序列
表5:事件位值
为了通过IO‐Link的物理层传输数据,每个字节打包在一个通用异步收发(UART)帧中,然后通过半双工模式在主站和设备之间传送。
图8:IO-Link UART帧