实验时间:2014年10月8日
实验设备:CP1H-XA40DR-A、CP1W-EXT01、CJ1W-ETN21、网线
实验目的:利用SOCKETTOOL发送fins/TCP命令,对CPU内存进行读取和写入。
实验步骤:
1、 IP地址设置:
①打开电脑本地连接查看IP地址如下:
②usb线连上电脑,打开I/O表,将ETN21模块的ip地址与电脑设置为同一个网段不同节点,节点号跟硬件上的node number一样,下载重启模块,如下:
2、 配置socketool软件 ①软件选TCP Client,创建,输入ETN21的IP地址和端口号,端口号9600,如下:
点击连接,显示十六进制值打勾:
3、 握手信号
TCP方式客户端需要发给服务器握手信号,等待服务器正常反馈表示握手成功,才能正常交流数据。客户端发出的命令格式如下:
服务器反馈的命令格式如下:
故sockettool发送命令为:46494E53(FINS)0000000C(长度12字节)00000000(命令
代码)00000000(错误代码)000000D6(客户端节点号214),即:46494E530000000C0000000000000000000000D6 46494E530000000C00000000000000000000003C
反馈是46494E53(FINS)00000010(长度16字节)00000001(命令代码)00000000(错误代码)000000D6(客户端节点号)00000003(服务器节点号) 通讯建立成功。
4、TCP命令
①命令帧如下,ETN手册W421第7-4有相关介绍,如下:
Fins 命令格式:
实验现象:
1、勾选16进制,输入读取D1命令:发送Fins/TCP命46494E53(FINS)0000001A(数据长度26)00000002(命令代码)00000000(错误代码)80000200030000D600000101820001000001(FINS命令帧),即:
46494E530000001A000000020000000080000200030000D600000101820001000001 46494E530000001A0000000200000000800002000100003C00000101820001000001
写入命令,CIO区100.01和100.02置位:发送Fins/TCP命令46494E53(FINS)0000001C(数据长度28)00000002(命令代码)00000000(错误代码)
80000200030000D6000001023000640100020101(FINS命令帧)
即:46494E530000001C000000020000000080000200030000D6000001023000640100020101
查看内存:
并可看到输出灯100.01和100.02亮。 上述FINS DATE: 80 ICF
0101/0102 读/写 Response C0 ICF 0101 读内存 00 RSV 02 GCT 00 DNA D6 DA1 0000 表示正常完成 00 DA2 00 SNA 03 SA1 /1111 /反馈D1为1111 00 SA2 00 SID 82/30 D区字/CIO位 000000/006401 D0/CIO100.01 0001/0002 0101 1个/2位 数据 00 RSV 02 GCT 00 DNA 03 DA1 00 DA2 00 SNA D6 SA1 00 SA2 00 SID
实验总结:
1、 Socket Tool 中一定要将下面以显示十六进制值打钩,否则无法正确读到数 据。
2、对为操作由于命令发送是按字节发送,故对单个字置1或0时要用01或者00。
3、注意ETN模块面板node number要和IP地址最后一位一样。
4、如果通讯建立之后又发送了一次握手信号,将会反馈错误代码00000003(该命令不支持)并且通讯将会中断;发送错误会反馈错误信息,一样会中断。 5、错误代码有如下:
因篇幅问题不能全部显示,请点此查看更多更全内容