睿远研究院丨IO-Link物理层编码解析
上篇讲到IO- Link物理层的一些电气参数,本篇继续补充几个关键点。
这里要特别注意一下CQD,要设置到1nF以下,避免COM3速率的报文被滤波,导致没法支持COM3的速率。
01 IO- Link的编码格式
介绍完电气参数后,我们来看一下IO-Link在物理层的编码格式,它采用的是11bit编码,包括1bit起始位;1bit停止位;8bit数据,1bit校验位,先传输低位,再传输高位比如传输0xF1时,你在逻辑分析仪上看到二进制其实是10111000000,共11bit,第一个bit是开始bit,为低电平,中间8bit 01110000是实际传输的0xF1的二进制的取反,最后两个bit分别为校验位(偶校验)和停止位。
因为IO- Link规定:
逻辑值“1”对应于C/Q线和L-线之间的电压差为0V;
逻辑值“0”对应于C/Q线和L-线之间的电压差为+24V;
所以我们看到的逻辑1其实是低电平信号。那么01110000取反后就是10001111,然后再把顺序调换一下,因为我们正常读写字节都是高位在前,低位在后,因此它的实际数据就是11110001,这就是我们需要发送的0xF1在物理层的实际情况。
如果大家采用STM32进行开发,在UART设置中,一定记得把长度,停止位,校验码设置正确,如下例子:
02 唤醒电流
唤醒的特性,就是触发一个唤醒电流,让从站进行IO- Link通信状态。
唤醒请求(WURQ)以主站(端口)引发的电流脉冲开始,持续一段时间TWU。
唤醒请求包括以下阶段:
🔑主站根据C/Q 连接的电平,注入一个电流 IQWU。对于等效于逻辑“1”的输入信号,这是一个电流源;对于等效于逻辑“0”的输入信号,这是一个电流汇。
🔑延迟一段时间,直到准备好接收。
🔑从站可以通过C/Q 线上的电压变化或在时间TWU内对相应驱动元件的电流进行评估来检测到唤醒请求脉冲。
IQWU
主站唤醒电流脉冲的振幅,最小500mA。
TWU
主设备唤醒电流脉冲的持续时间,在75到85微秒之间。
TREN
接收使能延迟,最大500us。
从这个看,可以简单理解为,唤醒就是在线路上喊了一声“喂,你好吗?”然后开始按照速率的高低发送它要请求的数据,如果从站不回应,主站就一直一直的发送,直到从站回复为止。
03 通信速率
IO-Link规定了3种通信速率:
⭐️COM3(230.4K)
⭐️COM2(38.4K)
⭐️COM1(4.8K)
为啥是这三个速率,具体原因我也没找到。230400的16进制是0x38400、38400的16进制是0x9600,估计按照规律找了3个不同的速率,正好差别6-8倍,来满足当时的工业通信需求。
而如今,通信诉求越来越多,速率的诉求也随之而来,已经有很多用户不再满足于当下的速率,希望能提升IO- Link的通信速率。当然这个不是当下就能一蹴而就的,它涉及到硬件、软件等规范的更新和市场化。
不过我们在实际开发测试中,已经把速率提升到了400K,未来提升到1M也是有可能的。
对于不同的通信速率,报文与报文之间的时间间隔、主站和从站的时间延迟等就需要定义清晰,协议栈里对如下几个时间做了详细规定:
计量单位:TBIT= 1/(transmission rate)
COM1:208.33us
COM2:26.04us
COM3:4.34us
04 物理层接口
最后讲一下物理层的接口,规范定义了2类接口,Class A和Class B。Class B提供了两路电源,特别是当下有大负载的HUB,一般都是通过Class B来进行供电。
主站Pin脚的分配
从站Pin脚的分配
结语
好了,本篇内容就到这里,物理层的部分就基本讲完了,想要深入学习IO-Link的同学,可以拿逻辑分析仪把IO-Link的报文抓来一一解读,这样学习起来会更快。提前做个剧透,下篇我们将开始讲述数据链路层的故事,还请各位看官保持关注。

提交
【睿远研究院】IO-Link物理层概览
IO-Link通信技术概述
睿远研究院丨IO-Link规范解读