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 扫描机制决定过程映像的刷新时机,符号表决定程序可读性。地址规划的核心,就是让这三者保持一致且不冲突。

二、过程映像区的更新机制

过程映像区不是“实时”的,它按扫描周期刷新。典型循环为:

  1. 读取物理输入 → 写入 PII;
  2. 执行用户程序,读写 PII/PIQ;
  3. 把 PIQ 写入物理输出;
  4. 处理通信、诊断等任务,进入下一周期。

这意味着:如果在一个扫描周期内多次读取同一个输入,读到的都是同一时刻的值;如果程序先写输出再读回,读到的也是 PIQ 中的值,而不是现场实际状态。对于远程 I/O,还要叠加 PROFINET 通信周期,因此远程输入到达 PII 的时间可能比本地输入晚 1~2 个通信周期。理解这一点,对时序要求高的联锁逻辑尤其重要。

若需要绕过过程映像直接访问硬件,可使用 PIB/PIW/PID(外设输入)和 PQB/PQW/PQD(外设输出),但这类访问不参与过程映像一致性,需谨慎使用。

三、跨设备信号映射的典型结构

多设备协同中,信号映射通常遵循“现场信号 → 远程站/驱动器 → PLC 过程映像 → 程序逻辑 → 输出回写”的路径。下图展示了一个典型的三设备协同地址映射关系:PLC 本体、ET200SP 远程站和 G120 驱动器通过 PROFINET 连接,各自占用不同的地址区间,并在程序中进行跨设备映射。

多设备协同 I/O 地址映射与过程映像更新 PLC 本体(CPU) 本地输入:I0.0 ~ I1.7 本地输出:Q0.0 ~ Q1.7 过程映像:PII / PIQ 扫描周期刷新 ET200SP 远程站 输入:I2.0 ~ I3.7 输出:Q2.0 ~ Q3.7 PROFINET 通信周期 远程 I/O 站号:1 G120 驱动器 控制字:Q10.0 ~ Q11.7 状态字:I10.0 ~ I11.7 报文:标准报文 1 设备名:Drive_1 PROFINET PROFINET CPU 过程映像区(PII / PIQ) PII:I0.0~I1.7(本地) + I2.0~I3.7(远程) + I10.0~I11.7(驱动) PIQ:Q0.0~Q1.7(本地) + Q2.0~Q3.7(远程) + Q10.0~Q11.7(驱动) 用户程序逻辑 跨设备映射:远程启动按钮 → 驱动使能 → 本地输出 符号访问:Conveyor1_Start、Drive1_Enable、Lamp_Run 读写 回写 地址区间由硬件组态自动分配,符号名由 PLC 变量表定义,程序通过过程映像读写

四、地址规划的实际操作

在 TIA Portal 中完成地址规划,通常按以下顺序进行:

  1. 硬件组态:在设备视图中添加 CPU、ET200SP 和 G120,系统自动分配起始地址。例如 CPU 本体输入从 I0.0 开始,ET200SP 接口模块的输入从 I2.0 开始,G120 的报文输入从 I10.0 开始。
  2. 检查地址冲突:在“设备概览”中查看各模块的 I/Q 地址范围,确保没有重叠。若发现重叠,可手动修改起始地址,但必须保证物理地址与程序引用一致。
  3. 定义符号:在 PLC 变量表中为每个信号建立符号名、数据类型和地址。例如:"ET200_Start" → I2.0,"Drive1_Status" → I10.0,"Drive1_Control" → Q10.0。
  4. 编写映射逻辑:在 OB1 或 FC 中,用符号编写跨设备逻辑。例如远程启动按钮 I2.0 触发后,置位驱动控制字 Q10.0,同时点亮本地运行指示灯 Q0.0。
  5. 验证:通过监控表强制或模拟输入,观察过程映像区数值变化,确认远程输入能正确写入 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 中,可以通过“设备概览”的地址列快速查看每个模块占用的地址范围,并利用交叉引用表检查地址使用情况。

掌握地址分配规则、过程映像更新机制和跨设备映射方法后,就可以在程序中稳定地读写来自不同设备的信号,为后续的联锁、顺序控制和故障诊断打下基础。