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-通信限制