传输方式

COTP

qianmoQqianmoQ· 更新于 2026-10-01· 阅读 3 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

COTP(面向连接的传输协议,ISO 8073 / RFC 905)构建在 TPKT 和 TCP 之上——即 Siemens S7 设备所使用的"ISO on TCP"协议栈。它是一种 TCP 传输方式,在驱动程序感知到连接之前,先完成 COTP 连接握手并协商 TPDU 大小。

由于握手中携带了用于寻址特定机架和插槽的 TSAP,因此S7 驱动]默认使用这种传输方式。通常由驱动程序自行推导 TSAP 值——只有在确定设备需要其他值时才应覆盖它们。

传输语法

{IP address or hostname}[:{port}]

端口默认使用驱动的默认值,S7 的默认端口为 102。

示例

s7://10.0.0.1
s7:cotp://10.0.0.1:102?cotp.tpdu-size=1024

名称

类型

默认值

是否必填

描述

名称

COTP

代码

cotp

Maven 依赖

<dependency>
  <groupId>org.apache.plc4x</groupId>
  <artifactId>plc4j-transports-cotp</artifactId>
  <version>1.0.0</version>
</dependency>

配置选项:

cotp.local-tsap

INT

0

本地 TSAP(传输服务访问点)标识符。

cotp.remote-tsap

INT

0

远程 TSAP(传输服务访问点)标识符。

cotp.tpdu-size

INT

8192

用于数据传输的 COTP PDU 大小。有效值:128、256、512、1024、2048、4096、8192。

cotp.handshake-timeout-ms

整数(INT)

5000

COTP 握手的连接超时时间,单位为毫秒。

cotp.protocol-class

INT

0

要使用的 COTP 协议类。Class 0 最为常用(简单类,不提供流量控制)。

cotp.connect-timeout-ms

INT

5000

连接超时时间(毫秒)。

cotp.read-timeout-ms

INT

0

以毫秒为单位的套接字读取超时时间。0 表示不超时。

cotp.write-timeout-ms

INT

0

以毫秒为单位的套接字写入超时时间。0 表示不超时。

cotp.no-delay

BOOLEAN

true

启用 TCP_NODELAY(禁用 Nagle 算法)。

cotp.keep-alive

BOOLEAN

false

启用 SO_KEEPALIVE。

cotp.send-buffer-size

INT

81920

发送缓冲区大小(字节)。0 表示使用系统默认值。

cotp.receive-buffer-size

INT

81920

接收缓冲区大小(字节)。0 表示使用系统默认值。

cotp.local-address

STRING

要绑定的本地地址(可选)。若未设置,则使用默认值。

cotp.local-port

INT

0

用于绑定的本地端口(可选)。0 表示使用临时端口。

套接字选项继承自 TCP 传输,其行为完全相同。

评论

登录后参与评论

正在加载评论…