欧姆龙Socket tool发送Fins/TCP命令
实验设备:CJ2M-CPU33(PLC)
实验目的:发送Fins/TCP命令读写CJ2M-CPU33的数据

实验步骤:

1、 系统概述,硬件搭建和接线:

欧姆龙 plc 采集 java_网络协议

图1.1

2、软件设置

①首先在PLC里通过CX-Programmer设置CJ2M-CPU33模块的IP地址和子网掩码,传送IO表设置,如下图所示:

欧姆龙 plc 采集 java_网络_02

图1.2

②修改电脑的IP地址:

CJ2M-CPU33的IP地址要与电脑同网段。

欧姆龙 plc 采集 java_网络协议_03

图1.3

③Socket tool设置如下

选择TCP Client,点击创建

欧姆龙 plc 采集 java_网络协议_04

图1.4

点击连接

欧姆龙 plc 采集 java_错误代码_05

图1.5

④发送握手信号

从客户端发送给服务器的握手信号格式:

欧姆龙 plc 采集 java_错误代码_06

图1.6

从服务器发送给客户端的握手信号格式:

欧姆龙 plc 采集 java_欧姆龙 plc 采集 java_07

图1.7

本实验是从客户端发命令到PLC,故发送命46494E53(FINS)0000000C(长度12字节)00000000(命令代码)00000000(错误代码)00000003(客户端节点号)

欧姆龙 plc 采集 java_网络协议_08

图1.8

反馈是46494E53(FINS)00000010(长度16字节)00000001(命令代码)00000000(错误代码)00000003(客户端节点号)00000001(服务器节点号)

通讯建立成功。

TCP命令格式

欧姆龙 plc 采集 java_欧姆龙 plc 采集 java_09

图1.9

FINS FRAME格式

欧姆龙 plc 采集 java_tcp/ip_10


欧姆龙 plc 采集 java_网络协议_11

图1.10

3、实验现象:

A、读取W100的数据

给CJ2M-CPU33的W100赋值#1234

欧姆龙 plc 采集 java_网络_12

图1.11

发送Fins/TCP命46494E53(FINS)0000001A(数据长度26)00000002(命令代码)00000000(错误代码)800002000100000300000101B10064000001(FINS命令帧)

欧姆龙 plc 采集 java_网络协议_13

图1.12
反馈是46494E53(FINS)00000018(数据长度24)00000002(命令代码)0000 0000(错误代码)C0 00 02 00 03 00 00 01 00 00 01 01 00 00 12 34 (FINS反馈帧1234是反馈数据)

B、往D0中写入数据#1234

发送Fins/TCP命令46494E53(FINS)0000001C(数据长度28)00000002(命令代码)00000000(错误代码)8000020001000003000001028200000000011234(FINS命令帧)

欧姆龙 plc 采集 java_网络协议_14

图1.13

反馈如下46494E53(FINS)00000016(数据长度22)00000002(命令代码)00 000000(错误代码)C0 00 02 00 03 00 00 01 00 00 01 02 00 00(FINS反馈帧0000是反馈代码表示通讯正常)

在CX-Programmer中监控D0可以看到值是#1234

欧姆龙 plc 采集 java_网络_15

图1.14

4、实验总结:

A、如果通讯建立之后又发送了一次握手信号,将会反馈错误代码00000003(该命令不支持)并且通讯将会中断

B、错误代码是

欧姆龙 plc 采集 java_错误代码_16

图1.15