IO-Link规范解读(四):物理层编码及接口形态

2025-05-11ASPCMS社区 - fjmyhfvclm

上篇讲到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的童鞋,还可以关注微信公众号:Rasight,与我们联系互动!

全部评论