第2章:IO通信基础——信号类型、协议与模块选型

各位同学,咱们今天聊IO通信。说实话,很多搞运动控制的工程师,最后出问题都出在IO上——不是信号类型搞混了,就是协议没配通。我见过太多伺服抖动、位置跑偏的案例,查到最后,根源就是IO通信没处理好。

这一章,我把IO通信的基础掰开揉碎讲清楚。你把这章吃透了,后面做协同控制心里就有底了。

2.1 IO信号类型:数字量与模拟量

IO信号就两大类:数字量和模拟量。听起来简单,但选错类型的坑,我踩过不止一次。

2.1.1 数字量(Digital I/O)

数字量就是开关量,只有两种状态:ON或OFF,1或0,高电平或低电平。说白了,就是“有”和“没有”的区别。

典型应用场景:

  • 限位开关、接近开关、光电传感器
  • 启动/停止按钮、急停按钮
  • 继电器输出、电磁阀控制
  • 伺服驱动器的使能信号、报警复位
我的经验:数字量输入一定要做滤波处理。我在一个包装线上遇到过,光电传感器因为抖动,一秒钟触发了十几次误信号,导致机械手乱抓。后来加了10ms的软件滤波,问题就解决了。

数字量信号的关键参数:

参数 说明 常见值
额定电压 信号高电平的电压值 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的传感器接到了0-10V的模拟量输入模块上。结果读数完全不对,查了两天才发现是信号类型不匹配。记住:电流信号和电压信号不能混接,除非模块支持跳线切换。

模拟量信号的分辨率与精度:

分辨率(位) 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
  • 拓扑灵活:线型、星型、树型都支持
我的建议:如果你做多轴同步控制(比如电子凸轮、飞剪、印刷套准),优先选EtherCAT。我做过一个8轴同步项目,用EtherCAT的DC同步模式,轴间同步误差控制在100ns以内,效果非常理想。

三种协议对比:

特性 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模块,说白了就是回答三个问题:什么信号?什么协议?什么环境?

选型步骤:

  1. 确定信号类型:数字量还是模拟量?输入还是输出?电压/电流范围?
  2. 确定通信协议:和PLC/控制器匹配。西门子PLC首选Profinet,倍福PLC首选EtherCAT,通用场合Modbus TCP最灵活。
  3. 确定通道数量:当前需要多少点?预留多少余量?我个人习惯预留20%的余量。
  4. 确定防护等级:柜内安装选IP20,现场安装选IP65/67。
  5. 确定特殊需求:是否需要隔离?是否需要高速计数?是否需要PWM输出?
避坑指南:我曾经在一个项目中选了某品牌的EtherCAT IO模块,结果发现它不支持分布式时钟(DC)。虽然能通信,但做不了精确同步。后来全部换成了支持DC的模块。所以选型时一定要看技术手册里的“支持特性”列表,别只看协议名称。

2.4 知识体系总览

下面这张图,把本章的核心知识点串起来了。你保存好,后面做项目时拿出来对照着看。

IO通信基础知识体系 IO通信基础 IO信号类型 IO通信协议 IO模块选型 数字量 模拟量 Modbus Profinet EtherCAT 信号匹配 协议匹配 24V / 4-20mA 分辨率/精度 RTU / TCP RT / IRT DC同步 通道数/防护等级 核心原则:信号类型决定物理接口,通信协议决定数据交互方式,模块选型决定系统可靠性

2.5 本章小结

这一章的内容,说白了就是IO通信的“三件套”:

  • 信号类型:数字量还是模拟量,决定了你用什么传感器和执行器
  • 通信协议:Modbus、Profinet、EtherCAT,决定了数据怎么传、传多快
  • 模块选型:把前两个因素落地到具体硬件上

你想想看,如果信号类型选错了,协议再快也没用。如果协议不匹配,模块再好也连不上。这三者是环环相扣的。

一句话总结:IO通信没有银弹。选型时多花半小时看手册,调试时就能少花两天查问题。这是我从无数次现场故障里换来的教训。