恭喜,你发布的帖子
发布于 2015-10-26 21:51:39
2楼
如何与S7PLC建立连接
S7PLC的RFC1006协议使用的端口为102端口
我们通过TCP与PLC的102端口建立TCP连接。这一步懂网络编程的人都知道如何处理,我就不班门弄斧了。
建立TCP连接后,向该连接发送ISO连接请求帧,等待PLC响应连接确认帧。
例子:
Tx: 03 00 00 16 11 E0 00 00 cc cc 00 C1 02 10 11 C2 02 03 02 C0 01 0A
Rx: 03 00 00 16 11 D0 cc cc ss ss 00 C0 01 0A C1 02 10 11 C2 02 03 02
其中cc cc可以为任意数,请求帧与确认帧数值相同,可以理解为客户端Client-Handler,以下包含cc cc的地方与该处含义相同。
其中ss ss可以为任意数,可以理解为客户端Server-Handler,以下包含ss ss的地方与该处含义相同。
PLC响应连接确认帧后,再向该连接发送ISO数据帧,等待PLC响应一个数据帧。该数据帧为特定数据帧,参数部分含义不清楚。
例子:
Tx: 03 00 00 19 02 F0 80 32 01 00 00 cc cc 00 08 00 00 F0 00 00 01 00 01 01 E0
Rx: 03 00 00 1B 02 F0 80 32 03 00 00 cc cc 00 08 00 00 00 00 F0 00 00 01 00 01 00 F0
PLC正常响应该数据帧后,就正式与PLC建立了ISO_on_TCP连接。
读例子:
读I0.0
请求帧:03 00 00 1F 02 F0 80 32 01 00 00 cc cc 00 0E 00 00 04 01 12 0A 10 01 00 01 00 00 81 00 00 00
响应帧:03 00 00 1A 02 F0 80 32 03 00 00 cc cc 00 02 00 05 00 00 04 01 FF 03 00 01 00
返回值:false
读Q0.1
请求帧:03 00 00 1F 02 F0 80 32 01 00 00 cc cc 00 0E 00 00 04 01 12 0A 10 01 00 01 00 00 82 00 00 01
响应帧:03 00 00 1A 02 F0 80 32 03 00 00 cc cc 00 02 00 05 00 00 04 01 FF 03 00 01 00
返回值:false
读M0.2
请求帧:03 00 00 1F 02 F0 80 32 01 00 00 cc cc 00 0E 00 00 04 01 12 0A 10 01 00 01 00 00 83 00 00 02
响应帧:03 00 00 1A 02 F0 80 32 03 00 00 cc cc 00 02 00 05 00 00 04 01 FF 03 00 01 01
返回值:true
读DB1.DBX0.3
请求帧:03 00 00 1F 02 F0 80 32 01 00 00 cc cc 00 0E 00 00 04 01 12 0A 10 01 00 01 00 01 84 00 00 03
响应帧:03 00 00 1A 02 F0 80 32 03 00 00 cc cc 00 02 00 05 00 00 04 01 FF 03 00 01 01
返回值:true
读IB16
请求帧:03 00 00 1F 02 F0 80 32 01 00 00 cc cc 00 0E 00 00 04 01 12 0A 10 02 00 01 00 00 81 00 00 80
响应帧:03 00 00 1A 02 F0 80 32 03 00 00 cc cc 00 02 00 05 00 00 04 01 FF 04 00 08 34
返回值:0x34
读QW24
请求帧:03 00 00 1F 02 F0 80 32 01 00 00 cc cc 00 0E 00 00 04 01 12 0A 10 02 00 02 00 00 82 00 00 C0
响应帧:03 00 00 1B 02 F0 80 32 03 00 00 cc cc 00 02 00 06 00 00 04 01 FF 04 00 10 34 56
返回值:0x3456
读MW10~MW20
请求帧:03 00 00 1F 02 F0 80 32 01 00 00 cc cc 00 0E 00 00 04 01 12 0A 10 02 00 0A 00 00 83 00 00 50
响应帧:03 00 00 23 02 F0 80 32 03 00 00 cc cc 00 02 00 0E 00 00 04 01 FF 04 00 50 12 34 56 78 9A BC DE F0 43 21
返回值:0x1234|0x5678|0x9ABC|0xDEF0|0x4321
读DB1.DBD2
请求帧:03 00 00 1F 02 F0 80 32 01 00 00 cc cc 00 0E 00 00 04 01 12 0A 10 02 00 04 00 01 84 00 00 10
响应帧:03 00 00 1D 02 F0 80 32 03 00 00 00 2D 00 02 00 08 00 00 04 01 FF 04 00 20 12 34 56 78
返回值:0x12345678
多组读取例子
读DB1.DBD2和DB2.DBW10~DB2.DBW20
请求帧:03 00 00 2B 02 F0 80 32 01 00 00 cc cc 00 1A 00 00 04 02 12 0A 10 02 00 04 00 01 84 00 00 10 12 0A 10 02 00 0A 00 00 83 00 00 50
响应帧:03 00 00 2B 02 F0 80 32 03 00 00 00 04 00 02 00 16 00 00 04 02 FF 04 00 20 12 34 56 78 FF 04 00 50 00 00 BF 1F C6 66 42 62 E4 00
返回值: 0x12345678(组1)
0x0000|0xBF1F|0xC666|0x4262|0xE400(组2)
写例子:
写Q0.1为true
请求帧:03 00 00 24 02 F0 80 32 01 00 00 cc cc 00 0E 00 05 05 01 12 0A 10 01 00 01 00 00 82 00 00 01 00 03 00 01 01
响应帧:03 00 00 16 02 F0 80 32 03 00 00 cc cc 00 02 00 01 00 00 05 01 FF
写M0.2为true
请求帧:03 00 00 24 02 F0 80 32 01 00 00 cc cc 00 0E 00 05 05 01 12 0A 10 01 00 01 00 00 83 00 00 02 00 03 00 01 01
响应帧:03 00 00 16 02 F0 80 32 03 00 00 cc cc 00 02 00 01 00 00 05 01 FF
写DB1.DBX0.3 为false
请求帧:03 00 00 24 02 F0 80 32 01 00 00 cc cc 00 0E 00 05 05 01 12 0A 10 01 00 01 00 01 84 00 00 03 00 03 00 01 00
响应帧:03 00 00 16 02 F0 80 32 03 00 00 cc cc 00 02 00 01 00 00 05 01 FF
写QW24 为0x3456
请求帧:03 00 00 25 02 F0 80 32 01 00 00 cc cc 00 0E 00 06 05 01 12 0A 10 02 00 02 00 00 82 00 00 C0 00 04 00 10 34 56
响应帧:03 00 00 16 02 F0 80 32 03 00 00 cc cc 00 02 00 01 00 00 05 01 FF
写MW10~MW20为0x1234|0x5678|0x9ABC|0xDEF0|0x4321
请求帧:03 00 00 2D 02 F0 80 32 01 00 00 cc cc 00 0E 00 0E 05 01 12 0A 10 02 00 0A 00 00 83 00 00 50 00 04 00 50 12 34 56 78 9A BC DE F0 43 21
响应帧:03 00 00 16 02 F0 80 32 03 00 00 cc cc 00 02 00 01 00 00 05 01 FF
写DB1.DBD2为0x12345678
请求帧:03 00 00 27 02 F0 80 32 01 00 00 cc cc 00 0E 00 08 05 01 12 0A 10 02 00 04 00 01 84 00 00 10 00 04 00 20 12 34 56 78
响应帧:03 00 00 16 02 F0 80 32 03 00 00 cc cc 00 02 00 01 00 00 05 01 FF
多组写例子
写DB1.DBD2为0x12345678和DB2.DBW10为0xBF1F
请求帧:03 00 00 39 02 F0 80 32 01 00 00 cc cc 00 1A 00 0E 05 02 12 0A 10 02 00 04 00 01 84 00 00 10 12 0A 10 02 00 0A 00 00 83 00 00 50 00 04 00 20 12 34 56 78 00 04 00 10 BF 1F
响应帧:03 00 00 17 02 F0 80 32 03 00 00 cc cc 00 02 00 02 00 00 05 02 FF FF
请填写推广理由:
分享
只看
楼主