4. 多设备协同的I/O地址与数据映射
在多设备协同控制系统中,PLC 本体、远程 I/O 站和驱动器往往分布在不同的物理位置,但它们最终都要在同一个 CPU 的地址空间里“对话”。如果地址分配混乱,程序里就会出现“信号对不上、写进去没反应、读回来是旧值”等问题。理解 I/O 地址的分配规则、过程映像区的更新机制,以及跨设备信号如何映射,是保证系统稳定运行的基础。
一、I/O 地址的三种存在形式
在 TIA Portal 中,一个信号从现场到程序,通常经历三种地址形态:
- 物理地址(硬件地址):由硬件组态自动分配,例如 PLC 本体输入
I0.0~I1.7、输出Q0.0~Q1.7;ET200SP 远程站可能从I2.0开始,驱动器报文可能占用I10.0~I13.7。 - 过程映像区地址:CPU 在扫描周期开始时把物理输入复制到过程映像输入区(PII),在周期结束时把过程映像输出区(PIQ)写回物理输出。程序访问
I/Q时,默认读写的是过程映像,而不是直接读写硬件。 - 符号地址:在 PLC 变量表中为地址起名,如
"Conveyor1_Start"对应I2.0,程序中使用符号,便于维护和跨设备识别。
三者的关系可以概括为:硬件组态决定物理地址,CPU 扫描机制决定过程映像的刷新时机,符号表决定程序可读性。地址规划的核心,就是让这三者保持一致且不冲突。
二、过程映像区的更新机制
过程映像区不是“实时”的,它按扫描周期刷新。典型循环为:
- 读取物理输入 → 写入 PII;
- 执行用户程序,读写 PII/PIQ;
- 把 PIQ 写入物理输出;
- 处理通信、诊断等任务,进入下一周期。
这意味着:如果在一个扫描周期内多次读取同一个输入,读到的都是同一时刻的值;如果程序先写输出再读回,读到的也是 PIQ 中的值,而不是现场实际状态。对于远程 I/O,还要叠加 PROFINET 通信周期,因此远程输入到达 PII 的时间可能比本地输入晚 1~2 个通信周期。理解这一点,对时序要求高的联锁逻辑尤其重要。
PIB/PIW/PID(外设输入)和 PQB/PQW/PQD(外设输出),但这类访问不参与过程映像一致性,需谨慎使用。三、跨设备信号映射的典型结构
多设备协同中,信号映射通常遵循“现场信号 → 远程站/驱动器 → PLC 过程映像 → 程序逻辑 → 输出回写”的路径。下图展示了一个典型的三设备协同地址映射关系:PLC 本体、ET200SP 远程站和 G120 驱动器通过 PROFINET 连接,各自占用不同的地址区间,并在程序中进行跨设备映射。
四、地址规划的实际操作
在 TIA Portal 中完成地址规划,通常按以下顺序进行:
- 硬件组态:在设备视图中添加 CPU、ET200SP 和 G120,系统自动分配起始地址。例如 CPU 本体输入从
I0.0开始,ET200SP 接口模块的输入从I2.0开始,G120 的报文输入从I10.0开始。 - 检查地址冲突:在“设备概览”中查看各模块的 I/Q 地址范围,确保没有重叠。若发现重叠,可手动修改起始地址,但必须保证物理地址与程序引用一致。
- 定义符号:在 PLC 变量表中为每个信号建立符号名、数据类型和地址。例如:
"ET200_Start"→I2.0,"Drive1_Status"→I10.0,"Drive1_Control"→Q10.0。 - 编写映射逻辑:在 OB1 或 FC 中,用符号编写跨设备逻辑。例如远程启动按钮
I2.0触发后,置位驱动控制字Q10.0,同时点亮本地运行指示灯Q0.0。 - 验证:通过监控表强制或模拟输入,观察过程映像区数值变化,确认远程输入能正确写入 PII,输出能正确回写到远程站和驱动器。
五、跨设备映射的常见问题与判断
实际调试中,跨设备映射最容易出现三类问题:
- 地址重叠:两个模块占用了同一段 I/Q 地址,表现为“一个信号变化影响另一个信号”。判断方法是在设备概览中核对地址范围,或使用交叉引用表查看地址被哪些程序块使用。
- 过程映像未刷新:程序读到的输入值始终不变,或输出写下去没有反应。检查是否误用了
PIB/PQB直接访问,或远程站通信是否正常。 - 符号与地址不一致:修改硬件组态后地址偏移,但符号表未更新,导致程序逻辑错位。解决方法是重新编译硬件组态,并在变量表中同步修正符号地址。
六、地址规划示例表
以下是一个三设备协同系统的地址规划示例,可作为实际项目的参考模板。表中地址为示例分配,实际项目中应根据模块数量和顺序调整。
| 设备 | 信号名称 | 符号名 | 地址 | 数据类型 | 说明 |
|---|---|---|---|---|---|
| PLC 本体 | 本地启动按钮 | Local_Start | I0.0 | Bool | 本地输入 |
| PLC 本体 | 运行指示灯 | Lamp_Run | Q0.0 | Bool | 本地输出 |
| ET200SP | 远程启动按钮 | Remote_Start | I2.0 | Bool | 远程输入 |
| ET200SP | 远程故障复位 | Remote_Reset | I2.1 | Bool | 远程输入 |
| ET200SP | 远程输出阀 | Valve_Out | Q2.0 | Bool | 远程输出 |
| G120 | 驱动状态字 | Drive1_Status | I10.0 | Word | 状态字(16 位) |
| G120 | 驱动控制字 | Drive1_Control | Q10.0 | Word | 控制字(16 位) |
| G120 | 驱动转速设定 | Drive1_SpeedSet | QW12 | Int | 转速给定 |
这张表的价值在于:它把物理设备、符号名、地址和数据类型一一对应,程序编写时直接使用符号名,调试时通过地址快速定位。建议在项目初期就建立这样的地址规划表,并在硬件组态变更后同步更新。
七、过程映像一致性与跨设备时序
对于多设备协同,过程映像的一致性还涉及“同一时刻”的问题。假设远程站输入 I2.0 和驱动器状态 I10.0 在同一个扫描周期内被读取,但远程站和驱动器的通信周期不同,那么这两个值可能来自不同时刻。对于需要严格同步的联锁,应尽量把相关信号放在同一设备或同一通信周期内,或在程序中加入时间戳和状态确认逻辑。
此外,过程映像区的大小有限,CPU 会为每个模块分配固定区域。如果远程站模块数量多、地址跨度大,应合理规划起始地址,避免地址空间碎片化。在 TIA Portal 中,可以通过“设备概览”的地址列快速查看每个模块占用的地址范围,并利用交叉引用表检查地址使用情况。
掌握地址分配规则、过程映像更新机制和跨设备映射方法后,就可以在程序中稳定地读写来自不同设备的信号,为后续的联锁、顺序控制和故障诊断打下基础。