COTP
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 传输,其行为完全相同。
评论
登录后参与评论
KnowForge