工业通讯
无缝连接
将您的 PLC 连接到世界。从高速 S7 通讯到通用 Modbus TCP,掌握驱动现代智能工厂的协议。
了解 PLC 网络
通讯是集成自动化的支柱。TIA Portal 提供了广泛的指令,通过集成的 PROFINET/以太网接口在西门子 PLC、第三方设备和 IT 系统之间交换数据。
无论您需要 PUT/GET 的简便性还是开放式用户通讯 (OUC) 的灵活性,选择正确的协议对于系统性能、安全性和可扩展性都至关重要。
开放式用户通讯
原生 TCP/UDP 和 ISO-on-TCP
TSEND_C / TRCV_C — 紧凑型通讯
TSEND_C / TRCV_C功能说明
将连接管理和数据传输结合在单个块中的紧凑型指令。支持 TCP、UDP 和 ISO-on-TCP 协议。
何时使用
S7-1200/1500 CPU 之间现代以太网通讯的标准选择,或通过套接字与 PC 应用程序通讯时使用。
专家技巧
使用 'TCON_IP_v4' 系统数据类型在块接口中定义 IP 地址和端口等连接参数。
设置 'CONT = TRUE' 以保持连接永久打开,减少频繁数据交换的开销。
监视 'STATUS' 输出中的十六进制代码 16#7004,这表示连接已建立且处于空闲状态。
TCON / TDISCON — 手动控制
TCON / TDISCON功能说明
用于独立于数据传输块建立和终止通讯连接的专用指令。
何时使用
用于复杂的架构,在这种架构中,您需要管理多个连接或在运行时动态更改目标 IP 地址。
专家技巧
在更改连接参数之前始终调用 TDISCON,以确保操作系统正确释放套接字。
在一个 PLC 上使用带有 '主动建立' 的 TCON,在伙伴 PLC 上使用 '被动',以定义客户端/服务器关系。
检查本地端口可用性;标准用户端口应在 2000 到 5000 范围内。
S7 通讯
西门子专用数据交换
PUT / GET — 简单的远程访问
PUT / GET功能说明
允许一个 PLC 直接读取 (GET) 或写入 (PUT) 伙伴 PLC 的内存,而伙伴侧不需要任何代码。
何时使用
与旧有的 S7-300/400 系统进行快速数据交换,或无法修改伙伴 PLC 的软件时。
专家技巧
您必须在 CPU 的“保护与安全”设置中启用“允许通过 PUT/GET 通讯访问”,它才能工作。
伙伴 DB 必须不能是“优化的”;绝对寻址(如 P#DB1.DBX0.0 BYTE 10)需要标准块访问。
限制在安全关键数据上的使用,因为伙伴 PLC 无法控制其数据何时被修改。
BSEND / BRCV — 大数据块传输
BSEND / BRCV功能说明
分段数据传输协议,用于在保证交付的情况下通过 S7 连接发送大量数据(最高 64KB)。
何时使用
在数据完整性至关重要的西门子 CPU 之间传输配方文件、长字符串或诊断缓冲区。
专家技巧
两个 CPU 都必须调用各自的块(发送方为 BSEND,接收方为 BRCV),并具有匹配的 R_ID 参数。
使用 'DONE' 和 'NDR' 位来同步您的逻辑与传输结束。
检查接收端的 'LEN' 参数以验证接收到的确切字节数。
Modbus TCP
通用工业标准
MB_CLIENT / MB_SERVER — TCP 协议
Modbus TCP功能说明
在以太网上实现 Modbus TCP 协议。MB_CLIENT 发起请求,而 MB_SERVER 响应请求。
何时使用
与不同制造商的第三方设备(如变频器、功率计或 SCADA 系统)通讯。
专家技巧
保持寄存器的 Modbus 地址映射从 40001 开始;在 TIA Portal 中,使用 'MB_HOLD_REG' 指针。
如果您同时运行多个 Modbus 客户端连接到不同的服务器,请使用不同的 'ID' 参数。
如果伙伴设备经常离线,请设置 Disconnect 位,以避免填满 PLC 通讯缓冲区。
MB_COMM_LOAD — 串口配置
MB_COMM_LOAD功能说明
配置通讯模块(RS485/RS232)以进行 Modbus RTU 操作,定义波特率、奇偶校验和流控制。
何时使用
使用串口通讯模块时,作为调用 MB_MASTER 或 MB_SLAVE 之前的必要第一步。
专家技巧
仅在 PLC 启动期间(使用 FirstScan 位)或需要更改参数时调用此指令一次。
确保 'PORT' 参数与系统常量中 CM/CB 模块的硬件标识符匹配。
验证您的接线(终端电阻)是否符合 RS485 物理层要求。
OUC 对比 PUT/GET
选择最稳健的通讯方式
| 特性 | 开放式用户 (TSEND_C) | S7 通讯 (PUT/GET) |
|---|---|---|
| 伙伴配置 | 双方都需要编程 | 伙伴侧无需编程 |
| 数据安全性 | 高(受控交换) | 低(直接内存访问) |
| 优化的 DB | 支持 | 不支持(仅限标准) |
| 兼容性 | 通用 (PC, PLC, IoT) | 仅限西门子私有协议 |
| 性能 | 高(开销低) | 中(协议开销) |
| 设置便捷性 | 中等 (ID 和配置) | 非常简单 (简单指针) |
常见问题解答
为什么 TSEND_C 返回错误 80C4(暂时缺乏资源)?
这通常发生在请求触发过快或活动连接过多时。确保在发起新传输之前检查 'BUSY' 位,并确保 CPU 属性中配置了正确的连接池大小。
Modbus TCP 可以发送的最大数据大小是多少?
单个 Modbus 请求对于保持寄存器限制为 125 个寄存器(250 字节)。如果您需要发送更多数据,必须按顺序执行多个带有不同偏移量的 MB_CLIENT 调用。
S7 通讯是否可以跨不同子网工作?
可以,但您必须确保在网络视图中配置了“S7 路由”,并且在 CPU 硬件配置中正确定义了网关/路由器。
什么是“保持活动 (Keep-Alive)”,我应该使用它吗?
“保持活动”在空闲期间发送小数据包,以防止中间路由器关闭不活动的连接。强烈建议在不同建筑物或网段之间的长期 OUC 连接中使用。