三、FINS /TCP命令
1、FINS指令格式 手册中的格式如下:
举例说明:
利用FINS/TCP的方式读取PLC的DM1通道的数据,格式解析如下: FINS帧格式: ICF RSV GCT DNDADASNSA1 SA2 SID Command TEXT A 1 2 A code 固定 固定 目标网络号 00 目标节点号 01 目标单元号 00 源网络号 00 源节点号 C7 源单元号 00 MR服C 务号,随便 00 01 SRC 80 00 02 01 820000000001 返回时为C0 写07也可,但返回也是02 00表示本地网络,否则需创建路由表 00表示本地网络,否则需创建路由表 DNA: 同一网络(本地网络 默认为00) SNA : 同一网络(本地网络 默认为00) DA1:PLC站号 IP地址 DA2:PLC CPU单元
SA1:上位机PC IP地址
MR、SR参见FINS命令第5章;
前面的ICF、RSV等为指定一些目标地址和源地址的网络号、节点号、单元号及其他固定的格式,后面关于Command code以及TEXT的内容,需要根据上位机实现什么的操作,填写不同的操作数据,就读取DM1通道的数据;
DM区的Memory area code为82;
读取存储区的Command code为0101;
下面利用网络调试助手进行测试:
2、使用网络调试助手测试FINS/TCP
利用上位发送FINS/TCP的格式如下:ETN21手册,编号W421,P196。
数据长度(Length):从Command(功能指令)至结尾,按字节单位累加,用十六进制表示
1) FINS节点地址数据发送(客户端->服务器)握手命令
FINS(包头) 数据长度 功能码 错误码 末位IP地址
发送:4649 4E53 0000 000C 0000 0000 0000 0000 0000 00C7 (本机IP地址末位为
199)。 A B C D E
A : FINS 命令(固定包头)
B : 数据长度=从功能码数起至数据结尾(以字节为单位,一个字节占用两位 ) C : 功能码分为 00000000:客户端 服务端 00000001:服务端 客户端 00000002:FINS贞发送命令
00000003:FINS 贞发送错误通知命令 00000006:确立通信连接 D : 错误码分为 00000000:为正常
00000001:数据头不是FINS或ASCII格式 00000002:数据长度过长
00000003:命令(C 功能码 )错误 00000020:连接/通信被占用 E: 000000C7为本机IP地址末位(十六进制表示),如PLC为客户端:192.168.250.1 本机IPC(服务器)IP:192.168.250.199 。199转为16进制C7
FINS 数据长度 功能码 错误码 应答返回地址 握手成功
反馈:46 49 4E 53 00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 C7 00 00 00 01 ;
发送及返回截图如下:
2)读DM0开始的2个通道:
FINS包头 数据长度 功能码 错误码 发送 FINS帧格式 读取码 发送:46494E53 0000001A 00000002 00000000 800002 000100 00C700 FF 0101 读DM区(功能码) 起首地址 个数
82 0000 00 0002
注:01 为PLC的IP地址 ;C7为本机的IP地址
字起首地址 位起首地址
FINS包头 数据长度 功能码 错误码 应答FINS帧格式 读取码 返回:46494E53 0000001A 00000002 0000000 C00002 00C700 000100 FF 0101 接收正常 接收到两组数据 0000 C000 4541
注:C7 为本机的IP地址 ;01为PLC的IP地址
3)写DM0开始的2个通道:
FINS包头 数据长度 功能码 错误码 发送FINS帧格式 写入码 发送:46494E53 0000001E 00000002 00000000 800002 00 0100 00C700 FF 0102 写DM区(功能码) 起首地址 个数 待写入两组数据
82 0000 00 0002 C000 4541
字起首地址 位起首地址
FINS包头 数据长度 功能码 错误码 应答FINS帧格式 写入码 返回:46494E53 0000001C 00000002 0000000 C00002 00C700 000100 FF 0102 写入正常 0000