第2章:IO通信基础——信号类型、协议与模块选型
各位同学,咱们今天聊IO通信。说实话,很多搞运动控制的工程师,最后出问题都出在IO上——不是信号类型搞混了,就是协议没配通。我见过太多伺服抖动、位置跑偏的案例,查到最后,根源就是IO通信没处理好。
这一章,我把IO通信的基础掰开揉碎讲清楚。你把这章吃透了,后面做协同控制心里就有底了。
2.1 IO信号类型:数字量与模拟量
IO信号就两大类:数字量和模拟量。听起来简单,但选错类型的坑,我踩过不止一次。
2.1.1 数字量(Digital I/O)
数字量就是开关量,只有两种状态:ON或OFF,1或0,高电平或低电平。说白了,就是“有”和“没有”的区别。
典型应用场景:
- 限位开关、接近开关、光电传感器
- 启动/停止按钮、急停按钮
- 继电器输出、电磁阀控制
- 伺服驱动器的使能信号、报警复位
数字量信号的关键参数:
| 参数 | 说明 | 常见值 |
|---|---|---|
| 额定电压 | 信号高电平的电压值 | 24V DC(工业最常用) |
| 输入电流 | 信号触发时消耗的电流 | 3-15mA(视模块而定) |
| 响应时间 | 从信号变化到CPU识别的时间 | 0.1ms-10ms |
| 隔离方式 | 电气隔离类型 | 光耦隔离、继电器隔离 |
2.1.2 模拟量(Analog I/O)
模拟量是连续变化的信号,用来表示温度、压力、位移、速度等物理量。它不是简单的“有”或“没有”,而是“有多少”。
常见的模拟量信号标准:
- 电流信号:4-20mA(最常用,断线检测方便,0mA就是断线)
- 电压信号:0-10V、±10V、0-5V
- 电阻信号:PT100、热电偶(温度传感器专用)
模拟量信号的分辨率与精度:
| 分辨率(位) | 4-20mA对应步进值 | 适用场景 |
|---|---|---|
| 12位 | 约4.88μA | 一般工业控制 |
| 14位 | 约1.22μA | 精密控制 |
| 16位 | 约0.31μA | 高精度测量 |
2.2 IO通信协议
信号类型搞清楚了,接下来就是怎么把这些信号传回PLC或者上位机。这就涉及到通信协议了。我个人习惯把协议分成两类:串行总线协议和工业以太网协议。
2.2.1 Modbus RTU / TCP
Modbus是工业通信的“普通话”,几乎所有PLC和IO模块都支持。它有两种物理层实现:
- Modbus RTU:走RS-232或RS-485串口,半双工,一主多从
- Modbus TCP:走以太网,全双工,基于TCP/IP协议栈
Modbus RTU的报文结构:
地址码(1字节) + 功能码(1字节) + 数据区(N字节) + CRC校验(2字节)
示例:读取从站地址01的保持寄存器,起始地址0000,读取2个寄存器
发送:01 03 00 00 00 02 C4 0B
返回:01 03 04 00 0A 00 14 3A 1F
(数据:0x000A=10, 0x0014=20)
关键区别:Modbus RTU是串行通信,速率一般115200bps以内,适合距离1000米以内。Modbus TCP是以太网通信,速率100Mbps,但距离受限于以太网(100米以内,加交换机可扩展)。
2.2.2 Profinet
Profinet是西门子主推的工业以太网协议,在汽车制造、物流仓储领域用得非常多。它基于标准以太网硬件,但增加了实时通信机制。
Profinet的三种通信通道:
- NRT(非实时):用于参数配置、诊断,响应时间约100ms
- RT(实时):用于IO数据交换,响应时间1-10ms
- IRT(等时实时):用于运动控制,响应时间<1ms,抖动<1μs
我记得第一次调试Profinet IRT时,被它的同步机制搞得很头疼。后来发现关键是要在交换机上配置IRT拓扑,并且所有设备必须支持IRT。普通交换机是跑不了IRT的。
2.2.3 EtherCAT
EtherCAT是目前运动控制领域最快的工业以太网协议之一。它的核心思想是“飞读飞写”——数据帧经过每个从站时,从站在几纳秒内读取或写入数据,然后继续转发。
EtherCAT的技术特点:
- 100Mbps全双工,数据利用率极高
- 从站延迟仅100-500ns
- 支持分布式时钟同步,精度<1μs
- 拓扑灵活:线型、星型、树型都支持
三种协议对比:
| 特性 | Modbus RTU | Modbus TCP | Profinet | EtherCAT |
|---|---|---|---|---|
| 物理层 | RS-232/485 | 以太网 | 以太网 | 以太网 |
| 最大速率 | 115.2kbps | 100Mbps | 100Mbps | 100Mbps |
| 实时性 | 低(10-100ms) | 中(5-50ms) | 高(<1ms IRT) | 极高(<100μs) |
| 同步精度 | 无 | 无 | <1μs(IRT) | <1μs(DC) |
| 最大从站数 | 32(RS-485) | 理论无限制 | 256 | 65535 |
| 成本 | 低 | 中 | 高 | 中高 |
2.3 IO模块选型
选IO模块,说白了就是回答三个问题:什么信号?什么协议?什么环境?
选型步骤:
- 确定信号类型:数字量还是模拟量?输入还是输出?电压/电流范围?
- 确定通信协议:和PLC/控制器匹配。西门子PLC首选Profinet,倍福PLC首选EtherCAT,通用场合Modbus TCP最灵活。
- 确定通道数量:当前需要多少点?预留多少余量?我个人习惯预留20%的余量。
- 确定防护等级:柜内安装选IP20,现场安装选IP65/67。
- 确定特殊需求:是否需要隔离?是否需要高速计数?是否需要PWM输出?
2.4 知识体系总览
下面这张图,把本章的核心知识点串起来了。你保存好,后面做项目时拿出来对照着看。
2.5 本章小结
这一章的内容,说白了就是IO通信的“三件套”:
- 信号类型:数字量还是模拟量,决定了你用什么传感器和执行器
- 通信协议:Modbus、Profinet、EtherCAT,决定了数据怎么传、传多快
- 模块选型:把前两个因素落地到具体硬件上
你想想看,如果信号类型选错了,协议再快也没用。如果协议不匹配,模块再好也连不上。这三者是环环相扣的。
一句话总结:IO通信没有银弹。选型时多花半小时看手册,调试时就能少花两天查问题。这是我从无数次现场故障里换来的教训。