CPU 的过程映像是每个周期更新一次。但是,在对时间要求苛刻的应用中,读取或传送数字输入或输出当前状态的频率可能必须高于每个周期一次。为此,可以在操作数中使用 I/O 访问标识符的后缀直接访问 I/O。
如果要从 I/O 直接读取输入,则需使用 I/O 输入存储区 (PI),而非过程映像输入 (I)。外围设备存储区可按位、字节、字或双字读取。
如果要直接写入输出中,则需使用 I/O 输出存储区 (PQ),而非过程映像输出 (Q)。可以位、字节、字或双字形式对外围输出存储区执行写操作。
要直接从外围设备输入读取或写入信号,可以给操作数添加 I/O 访问后缀“:P”。
也可以通过“:P”寻址结构化 PLC 变量中的元素。但无法使用“:P”访问上一级变量。
警告 | |
直接写入 I/O 对 I/O 执行立即写操作可导致出现危险状态,例如,在一次程序循环中对输出执行多次写操作。 |
说明 S7-1200/1500:将 I/O 输入或输出作为块参数进行传送 如果将一个 I/O 输入或输出用作输入参数,则运行过程中调用该块时可能会发生 IO 访问错误。例如,直接访问输入模块时发生读取错误。 S7-1500 系列 CPU(固件版本 V2.1 或更高版本)的系统响应如下: 调用块并使用信号的替换值进行处理。 S7-1200 和 S7-1500 系列 CPU(固件版本低于 V2.1)的系统响应如下: 发生 I/O 访问错误时,不进行块调用。而在块调用结束后继续程序执行。如果存在 OB 122 或启用了本地错误处理,则执行这些操作。 要防止在发生 I/O 访问错误时不调用块,首先需要将该 I/O 输入或输出复制到一个局部变量 (Temp) 中,然后再将其作为块参数传送到被调用块中。 |
语法
:P
示例
下列示例显示的是 I/O 访问标识符的应用:
"Motor" | 对过程映像中的 "Motor" 变量进行寻址。 |
"Motor":P | 对 I/O 存储器区(PI 或 PQ)中的 "Motor" 变量进行寻址。 |
"Structured_Tag".Component | 对过程映像中结构化 PLC 变量的元素进行寻址。 |
"Structured_Tag".Component:P | 对 I/O 存储器区(PI 或 PQ)中结构化 PLC 变量的元素进行寻址。 |