西门子PLC协议-S7COMM-扩展

2 篇文章 2 订阅
2 篇文章 0 订阅

西门子PLC协议-S7COMM-扩展


之前详细写S7中PDU,但S7 Communication被封装在TPKT和SO-COTP协议中,那么S7 Communication 至少还需要以下构成:

  • COTP:ISO 8073 COTP面向连接的传输协议。
  • TPKT:应用层数据传输协议,介于TCP和COTP协议之间。传输层协议,主要用来在COTP和TCP之间建立桥梁。
  • TCP:协议数据单元,tcp的payload发送内容。

S7 Communication结构

img

TPKT 协议

结构

img

  • Version:1byte,版本号
  • Reserved:1byte,保留字
  • Length:2byte,长度,TPKT、COTP、S7的PDU的总长度,也可以说是TCP的payload的长度
举例

image-20201123114824988

版本位3,长度位25(0x0019)的TPKT协议

COTP 协议

image-20201123114840501

简介

COTP(ISO 8073/X.224 COTP Connection-Oriented Transport Protocol)是OSI 7层协议定义的位于TCP之上的协议。COTP以“Packet”为基本单位来传输数据,这样接收方会得到与发送方具有相同边界的数据。(摘取网上定义)

结构

COTP协议有两种形态

  • COTP Connection Packet:COTP连接包
  • COTP Function Packet:COTP功能包
COTP连接包
  • Length:(1byte)长度,COTP协议长度,不包括COTP后续数据长度,也不包括Length长度,一般来说是17 bytes。

  • Type:(1byte)类型

    codedescription描述
    0x01ED Expedited Data加急数据
    0x02EA Expedited Data Acknowledgement加急数据确认
    0x04UD用户数据
    0x05RJ Reject拒绝
    0x06AK Data Acknowledgement数据确认
    0x07ER TPDU ErrorTPDU错误
    0x08DR Disconnect Request断开请求
    0xC0DC Disconnect Confirm断开确认
    0xD0CC Connect Confirm连接确认
    0xE0CR Connect Request连接请求
    0xF0DT Data数据传输
  • DST Ref:(2bytes)目标关联值

  • SRC Ref:(2bytes)源关联值

  • Opt:(1byte)

  • Parameters:参数值

    • code:编号
    • length:长度
    • Data:数据内容
举例
11 
E0 
00 00 
00 01 
00 
C1 02 01 00 
C2 02 01 02 
C0 01 09 

opt 和parameters具体是什么这里就不继续深究

COTP功能包

功能包就比较简单,就只有长度类型和

举例
02 
F0 
80 

最后

不管是TPKT除了数据长度改变外,其他的内容都是不变的,COTP协议基本上都是不变的,在写代码的时候大可写死就行。

所以解决了之前为什么使用Netty不能直接直接发起S7协议的问题,只需要封装上TPKT协议和COTP协议即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值