西门子 S7
采用西门子 (SIEMENS) SIMATIC S7 系列的标准通信规约(ISO-on-TCP / S7 协议)进行通信。
支持系列:S7-300 / S7-400 / S7-1200 / S7-1500 (+ S7-200 / S7-200 SMART / SINUMERIK 828D)
注册表单输入项
| 输入栏 | 填写内容 | 示例 |
|---|---|---|
| IP 地址 | PLC 的 IP | 192.168.0.70 |
| 端口 | S7 通信端口 | 102 (标准 / 不建议更改) |
| Controller Type (controller-type) | PLC 系列 | S7_400 (默认) / S7_300 / S7_200 / S7_200_SMART / S7_1200 / S7_1500 / SINUMERIK_828D |
| Rack (local-rack) | rack 编号 | 通常为 0 |
| Slot (local-slot) | CPU slot 编号 | 因系列而异 (见下表) — 未指定时为 3 |
| 多点读取 (multi-read) | 是否按块使用单次往返批量读取 | 勾选时为 true (默认不使用 — 按标签逐个读取) |
| 多点读取最大项数 (multi-read-max-items) | 每块的项数上限 | 18 (默认,PDU 240 预算) |
各系列的 rack / slot
| 系列 | rack | slot |
|---|---|---|
| S7-300 | 0 | 2 |
| S7-400 | 0 | 3 (可能因 CPU 插槽而异) |
| S7-1200 | 0 | 0 (或 1) |
| S7-1500 | 0 | 0 (或 1) |
TIA Portal 侧的前置设置
出于安全考虑,要从外部读取西门子 PLC 的值,需要进行以下设置。
- 在 TIA Portal 中打开 PLC 属性 → Protection & Security → 启用 “Permit access with PUT/GET communication from remote partner”
- 数据块(DB) 属性 → Optimized block access 关闭 (改为绝对地址模式)
若未完成这两项设置,将出现 “Address out of range” 或 “Connection rejected”。
标签的 PLC 地址表示法
直接沿用西门子标准存储器表示法。以 % 开头。
| 表示法 | 含义 |
|---|---|
%DB1.DBX0.0 | DB1 中 byte 0 的 bit 0 (布尔值) |
%DB1.DBB0 | DB1 的 byte 0 (8-bit) |
%DB1.DBW0 | DB1 的 word 0 (16-bit) |
%DB1.DBD0 | DB1 的 double word 0 (32-bit / 实数) |
%I0.0 | 输入位 0.0 |
%Q0.0 | 输出位 0.0 |
%M0.0 | 存储位 0.0 |
%MW100 | 存储器 word 100 |
%MD100 | 存储器 double 100 (32-bit) |
不写 % 也能正常工作,但为与手册及其他工具保持一致,建议加上 %。
数据类型匹配
| PLC 中的值 | 数据类型 | 类型辅助 | PLC 地址示例 |
|---|---|---|---|
| 布尔 (Bool) | Boolean | (留空) | %DB1.DBX0.0, %I0.0, %M0.0 |
| 8-bit | Integer | B | %DB1.DBB0 |
| 16-bit 整数 | Integer | (留空) | %DB1.DBW0, %MW100 |
| 32-bit 整数 | Integer | DW | %DB1.DBD0, %MD100 |
| 32-bit 实数 (最常见的实数类型) | Float | REAL | %DB1.DBD0 |
| 64-bit 实数 | Double | LREAL | %DB1.DBD8 |
| 字符串 (S7 STRING) | String | STR[N] | %DB1.DBB100 |
确认 Bool 表示法
Bool 必须使用 %DB1.DBX{byte}.{bit} 格式。不要遗漏末尾的 .0 ~ .7。
常见问题与解决办法
| 现象 / 消息 | 可能原因 | 解决办法 |
|---|---|---|
| “Connection refused” | 端口 102 被阻断,PUT/GET 未启用 | 在 TIA Portal 中启用 PUT/GET 通信许可 |
| “Connection rejected by remote” | rack/slot 不匹配 | 参照上表修正 rack/slot |
| “Address out of range” | DB 处于 Optimized 模式 (非绝对地址模式) | 在 TIA Portal 中打开 DB 属性 → 关闭 Optimized block access |
所有值均为 0 | DB 编号 / 偏移量错误 | 在 TIA Portal Watch table 中确认同一地址是否确实可用 |
| 只有 Bool 读不到 | 缺少 .bit | 像 %DB1.DBX0.0 那样精确写到 .bit |
常用示例
单台产线 PLC 上常见的标签组合
| 标签名称 | PLC 地址 | 数据类型 | 类型辅助 |
|---|---|---|---|
| 泵运行 (DB) | %DB1.DBX0.0 | Boolean | (留空) |
| 输入信号 | %I0.0 | Boolean | (留空) |
| 压力 (kPa, 实数) | %DB1.DBD8 | Float | REAL |
| 累计计数 | %MD100 | Integer | DW |
| 批次名称 | %DB1.DBB100 | String | STR[16] |
更详细的示例 / 自动化注册
请参考 高级 — REST API 中的 S7 示例。