1、S7协议主要针对西门子相关设备通信。先了解基本通信对象、通信环境、通信报文,再处理S7COMM通信库的封装与测试。
2、西门子设备通信
- PLC:系列 LOGO、200、200Smart、300、400、1200、1500
- PLC:LOGO、200、200Smart、300、400、1200、1500
- 通信模块/扩展板
- 通信环境
3、通信环境
4、西门子PLC存储区
存储区分类
- I:输入、Q:输出、AI:模拟量输入、V/DB:变量存储区 Modbus 4 个存储区
- AQ:模拟量输出、M:位存储区、T:定时器存储区、C:计数器存储区、HC:高速计数器、AC:累加器、SM:特殊存储器、L:局部存储区、S:顺序控制继电器
访问规则
- bit、Byte、Word、Dword
- 访问地址:最小存储是字节(S7协议 访问非优化块,偏移地址)
I0.0 Q1.3 MB10 MW10 M10.0 VW100 V100.1 DB1.DBX100.5 位地址最大:7
W Word 2Byte 从10号字节开始的两个字节
5、S7COMM-COTP报文
6、S7COMM-Read报文
S7Comm-读 | ||||||||||
长度(bit) |
发送 |
说明 |
长度(bit) |
响应 |
说明 | |||||
0 |
TPKT |
8 |
0x03 |
Version,版本默认3 |
TPKT |
8 |
0x03 |
Version,版本默认3 | ||
1 |
8 |
0x00 |
Reserved,保留默认0 |
8 |
0x00 |
Reserved,保留默认0 | ||||
2 |
16 |
0x00 |
整个请求字节数 |
16 |
0x00 |
整个请求字节数 | ||||
3 |
0x1f |
0x1a | ||||||||
4 |
COTP |
8 |
0x02 |
当前字节以后的字节数 |
COTP |
8 |
0x02 |
当前字节以后的字节数 | ||
5 |
8 |
0xf0 |
PDU Type,数据传输[附录一] |
8 |
0xf0 |
PDU Type,数据传输 | ||||
6 |
8 |
-000 0000 |
TPDU number |
8 |
-000 0000 |
TPDU number | ||||
1--- ---- |
Last data unit:Yes |
1--- ---- |
Last data unit:Yes | |||||||
7 |
S7-Header |
8 |
0x32 |
Protocol Id,默认 |
S7-Header |
8 |
0x32 |
Protocol Id,默认 | ||
8 |
8 |
0x01 |
ROSCTR:JOB[附录二] |
8 |
0x03 |
ROSCTR:Ack_Data | ||||
9 |
16 |
0x00 |
Redundancy Identification (Reserved) |
16 |
0x00 |
Redundancy Identification (Reserved) | ||||
10 |
0x00 |
0x00 | ||||||||
11 |
16 |
0x00 |
Protocol Data Unit Reference |
16 |
0x00 |
Protocol Data Unit Reference | ||||
12 |
0x00 |
0x00 | ||||||||
13 |
16 |
0x00 |
Parameter length |
16 |
0x00 |
Parameter length | ||||
14 |
0x0e |
0x02 | ||||||||
15 |
16 |
0x00 |
Data length |
16 |
0x00 |
Data length | ||||
16 |
0x00 |
0x05 | ||||||||
17 |
S7-Parameter |
8 |
0x04 |
Function: Read Var (0x04)[附录五] |
8 |
0x00 |
Error class: No error (0x00) | |||
18 |
8 |
0x01 |
Item count: 1 |
8 |
0x00 |
Error code: 0x00 | ||||
19 |
Item[1] |
8 |
0x12 |
结构标识,一般默认0x12 |
S7-Parameter |
8 |
0x04 |
Function: Read Var (0x04) | ||
20 |
8 |
0x0a |
此字节往后的字节长度 |
8 |
0x01 |
Item count: 1 | ||||
21 |
8 |
0x10 |
Syntax Id: S7ANY (0x10)[附录六] |
Data |
Item[1] |
8 |
0xff |
Return code: Success (0xff)[附录九] | ||
22 |
8 |
0x02 |
Transport size: BYTE (2)[附录七] |
8 |
0x04 |
Transport size: BYTE/WORD/DWORD (0x04) | ||||
23 |
16 |
0x00 |
数据长度 |
16 |
0x00 |
数据响应长度 | ||||
24 |
0x01 |
0x01 | ||||||||
25 |
16 |
0x00 |
数据块编号 DB1.DBX100.0 |
n |
0x00 |
数据(不定长度) | ||||
26 |
0x01 |
Item2 |
8 |
0xff |
Return code: Success (0xff)[附录九] | |||||
27 |
8 |
0x84 |
Area[附录八] |
8 |
0x04 |
Transport size: BYTE/WORD/DWORD (0x04) | ||||
28 |
24 |
18-3位 |
Byte Address:100 |
16 |
0x00 |
数据响应长度 | ||||
29 |
0x01 | |||||||||
30 |
2-0位 |
Bit Address:0 |
n |
0x00 |
数据(不定长度) |
6、S7COMM-Write报文
7、S7COMM-SZL报文
8、S7COMM-通信限制