nas可以做网站下载服务器吗,个人定制网站怎么做,网站 建设app,中国建设银行官网站保本理财1、介绍 对于上位机开发来说#xff0c;欧姆龙PLC支持的主要的协议有Hostlink协议#xff0c;FinsTcp/Udp协议#xff0c;EtherNetIP协议#xff0c;本项目使用Hostlink协议。
Hostlink协议是欧姆龙PLC与上位机链接的公开协议。上位机通过发送Hostlink命令#xff0c;可…1、介绍 对于上位机开发来说欧姆龙PLC支持的主要的协议有Hostlink协议FinsTcp/Udp协议EtherNetIP协议本项目使用Hostlink协议。
Hostlink协议是欧姆龙PLC与上位机链接的公开协议。上位机通过发送Hostlink命令可以对PLC进行I/O读写、可以对PLC进行I/O读写、改变操作模式、强制置位/复位等操作。由于是公开协议即便是非欧姆龙的上位设备软件都可以通过该协议和欧姆龙PLC实现通信链接
Hostlink通讯协议有两种模式C-mode和FINS
上个文章采用C-mode方式本篇采用FINS方式
1Cmode专用于hostlink通讯指令采用的是ASCII码适用于所有OMRON的PLC通讯。只能上位机发出指令给CPUCPU无法主动发数据给上位机只可以通过串口进行通讯。
2FINS采用的二进制码适用于新开发的PLC可用在多种网络设备Controller Link, Ethernet, etc可被 CPU、IO模块、上位机主动发出不同的指令分别适用于不同的信息接受单元。有两种链接协议CMND和hostlink当上位机是做发送源时必须采用hostlink协议既可以通过串口通讯也可以通过各类网络通讯(适应性较强)。
欧姆龙PLC与上位机连接时一般采用的是Hoslink协议它是一种简易经济的通讯方式比较适合一台上位机和一台PLC或者多台PLC进行通讯。上位机可对PLC进行程序传送和读写等操作。HOSTLINK系统允许一台上位机通过上位机链接命令向HOSTLINK系统的PLC发送命令PLC处理来自上位机的每条指令并把结果传回上位机。
2、欧姆龙Fins协议
欧姆龙FINS协议:现代工业自动化领域的通信利器欧姆龙FINS协议全称为”Factory Interface Network Service是日本欧姆龙(Omron)公司开发的一套高效的工业自动化通信协议。它作为欧姆龙工业设备之间的通信接日被广泛应用于全球范围内的工业自动化领域。
支持以太网的欧姆龙PLC CPU、以太网通信模块根据型号的不同一般都会支持FINS(Factory Interface Network Service)协议一些模块也会支持EtherNet/IP协议。Fins协议封装在TCP/UDP之上。
下图表述了FINS会话开始几个数据帧的作用。FINS协议的会话有一次请求帧请求帧中附带着发起方的节点参数。PLC端Server端会确认并将自己的节点参数放回给请求方。 1、Fins协议和我们常用的ModbusTCP协议不同首先体现在有握手验证命令就是说在正常的三次握手的基础上还需要进行一次握手如果能正常握手方可通信这样做的目的也是为了PLC通信安全。
命令均为十六进制 字节数据流 2、Fins握手命令
发送报文格式
返回报文格式 3、Fins通信命令
Fins通信协议的整体命令如下所示 4、Fins读取数据
Fins读取数据的报文会在通用命令的基础上将 Parameter替换为 AreaAddressLength因此读取数据命令如下所示
读取数据返回命令如下所示 5、Fins写入数据
Fins写入数据会在通用命令的基础上将 Parameter替换为 AreaAddressLengthValue因此写入数据命令如下所示 写入数据返回命令如下所示 3、开搞Fins协议
1、确认环境
确认你的cx-simulator的串口设置已经设置好虚拟串口工具软件的com2 2、运行网络调试工具NetAssist.exe 3、发送握手报文
首先要有握手验证命令就是说在正常的三次握手的基础上还需要进行一次握手如果能正常握手方可通信这样做的目的也是为了PLC通信安全。 发送:46 49 4E 53 00 00 00 0C 00 00 00 00 00 00 00 00 00 00 00 04 接收:46 49 4E 53 00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 0A
发送报文格式 1发送报文分析
发送:46 49 4E 53 00 00 00 0C 00 00 00 00 00 00 00 00 00 00 00 04 接收:46 49 4E 53 00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 0A
46494E53转换成ASCII编码就是FINS
0000000C指后面跟的字节长度12个字节不包括自己的字节长度也就是后面的 000000000000000000000004它有12个字节
00000000固定命令
00000000错误代码
00000004PC节点IP当设置为0时会自动获取节点IP
当前我的机器IP地址是 格式中的clientnode就是指PC的IP地址中的最后一位也就是4转换成16进制就是4它占4个字节所以是 00000004每2位算一个字节。其实这个地址写什么都可以PLC并不会去校验客户端的IP地址只是一个表示占位格式而已。
发送报文共占20个字节。
2接收报文分析如下
报文格式 发送:46 49 4E 53 00 00 00 0C 00 00 00 00 00 00 00 00 00 00 00 04 接收:46 49 4E 53 00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 0A
46494E53ASCII编码就是FINS
00000010指后面跟的字节长度16个字节不包括自己的长度
00000001固定命令
00000000错误代码
00000004本机电脑节点IP
0000000APLC节点IP
servernode就是PLC的IP地址的最后一位其实clientnode和servernode写什么都可以也只是表示一个占位。
接收报文共24个字节比发送多了servernode4个字节 4、读取和写入CIO区的2进制数据 设置CIO0.0到0.5的6个数据分别是111101 1、读取指令读取CIO区0.0开始的6个bool数据 发送:46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 30 00 00 00 00 06 接收:46 49 4E 53 00 00 00 1C 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 01 01 01 01 00 01
1发送46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 30 00 00 00 00 06
发送报文格式 发送报文分析如下
46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 30 00 00 00 00 06
46494E53ASCII编码FINS
0000001A指后面跟的字节长度26个字节不包括自己的长度
00000002固定命令
00000000错误代码00000000表示没有错误
80ICF固定值0x80
00RSV固定值
02GCT固定值
00PLC网络地址
0APLC节点地址PLC的IP地址最后一位
00PLC单元地址
00PC网络地址
04PC节点地址客户端IP地址最后一位
00PC单元地址
00SID固定值
0101读指令
30读地址区(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0)
000000起始地址占3个字节
0006读个数占2个字节
--------------------------------------------------------------------------------------------------------------------------------
2接收46 49 4E 53 00 00 00 1C 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 01 01 01 01 00 01
接收报文格式 接收报文分析如下
46 49 4E 53 00 00 00 1C 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 01 01 01 01 00 01
46494E53ASCII编码FINS
0000001C指后面跟的字节长度1C转换成10进制就是28就是指后面的字节长度是28个56个字符每2个字符为1个字节
00000002固定命令
00000000错误代码全是0表示没有错误
C0ICF固定值
00RSV固定值
02GCT固定值
00PLC网络地址
0APLC节点地址
00PLC单元地址
00PC网络地址
04PC节点地址
00PC单元地址
00SID
0101读指令
0000读取成功标识
01 01 01 01 00 01读到的数据这是2进制的数据也就是C#中的bool类型表示truetruetruetruefalsetrue与内存存储区的数据一致。 2、写入指令写入CIO区0.0开始的6个bool数据true, true, false, false, true,true 发送:46 49 4E 53 00 00 00 20 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 30 00 00 00 00 06 01 01 00 00 01 01 接收:46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00 1发送报文分析如下
写入命令格式 发送46 49 4E 53 00 00 00 20 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 30 00 00 00 00 06 01 01 00 00 01 01
46494E53ASCII编码FINS
00000020指后面跟的字节长度20转换成10进制就是32表示后面有32个字节64个字符
00000002固定命令
00000000错误代码全0表示没有错误
80ICF固定值
00RSV固定值
02GCT固定值
00PLC网络地址
0APLC节点地址
00PLC单元地址
00PC网络地址
04PC节点地址
00PC单元地址
00SID
0102写指令
30写地址区(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0)
000000起始地址即0.0开始的地址
0006写入个数占2个字节
01 01 00 00 01 01 写入数据具体来说表示true, true, false, false, true,true
2接收报文分析如下
返回命令如下 46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00
46494E53ASCII编码FINS
00000016指后面跟的字节长度表示后面的字节有22个字节
00000002固定命令
00000000错误代码
C0ICF
00RSV
02GCT
00PLC网络地址
0APLC节点地址
00PLC单元地址
00PC网络地址
04PC节点地址
00PC单元地址
00SID
0102写指令
0000写入成功标识也就是说写入成功啦没有错误。
以上读取或写入命令之前都必须先发送握手报文命令而且只能发一次握手报文 5、读取和写入D区的ushort类型数据
首先设置内存区D区100的4个数据注意D区设置的数据类型为10进制无符号的整数对应C#中就是ushort类型。 1、读取D区100开始的4个数据 发送:46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 82 00 64 00 00 04 接收:46 49 4E 53 00 00 00 1E 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 00 7B 00 87 00 92 03 84
1发送报文分析如下
46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 82 00 64 00 00 04
46494E53ASCII编码FINS
0000001A指后面跟的字节长度26个字节不包括自己的长度
00000002固定命令
00000000错误代码表示没有错误
80ICF
00RSV
02GCT
00PLC网络地址
0APLC节点地址PLC的IP地址最后一位
00PLC单元地址
00PC网络地址
04PC节点地址客户端IP地址最后一位
00PC单元地址
00SID
0101读指令
82读地址区(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0)
006400起始地址100转成16进制就是64占3个字节就是006400
0004读取的个数占2个字节 2接收报文分析如下
46 49 4E 53 00 00 00 1E 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 00 7B 00 87 00 92 03 84
46494E53ASCII编码FINS
0000001E指后面跟的字节度
00000002固定命令
00000000错误代码全是0表示没有错误
C0ICF固定值
00RSV固定值
02GCT固定值
00PLC网络地址
0APLC节点地址
00PLC单元地址
00PC网络地址
04PC节点地址
00PC单元地址
00SID
0101读指令
0000读取成功标识
00 7B 00 87 00 92 03 84读到的数据00 7B转换成10进制就是123。00 87就是13500 92就是14603 84就是900
这里注意10进制的无符号整数占2个字节也就是PLC中的一个寄存器PLC中的word占一个寄存器在C#占2个字节用来表示整数(不用带小数) 2、向D区30的地址写入4个ushort数据110, 120, 130, 140 发送:46 49 4E 53 00 00 00 22 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 82 00 1E 00 00 04 00 6E 00 78 00 82 00 8C 接收:46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00
写入成功 发送报文分析
46 49 4E 53 00 00 00 22 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 82 00 1E 00 00 04 00 6E 00 78 00 82 00 8C
46494E53ASCII编码FINS
00000022指后面跟的字节长度
00000002固定命令
00000000错误代码全0表示没有错误
80ICF固定值
00RSV固定值
02GCT固定值
00PLC网络地址
0APLC节点地址
00PLC单元地址
00PC网络地址
04PC节点地址
00PC单元地址
00SID
0102写指令
82写地址区(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0)
001E00起始地址即0.0开始的地址
0004写入个数占2个字节
00 6E 00 78 00 82 00 8C写入数据具体来说表示00 6E》110 00 78》120 00 82》130 00 8C》140
接收报文分析
46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00
46494E53ASCII编码FINS
00000016指后面跟的字节长度表示后面的字节有22个字节
00000002固定命令
00000000错误代码
C0ICF
00RSV
02GCT
00PLC网络地址
0APLC节点地址
00PLC单元地址
00PC网络地址
04PC节点地址
00PC单元地址
00SID
0102写指令
0000写入成功标识也就是说写入成功啦没有错误。
以上读取或写入命令之前都必须先发送握手报文命令而且只能发一次握手报文
6、读取和写入H区的short类型数据 设置H区的4个数据 1、读取H区100开始的4个short类型的数据 发送:46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 B2 00 64 00 00 04 接收:46 49 4E 53 00 00 00 1E 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 00 6E 00 6F FF 90 FF 8F
1发送报文分析如下
46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 B2 00 64 00 00 04
46494E53ASCII编码FINS
0000001A指后面跟的字节长度26个字节不包括自己的长度
00000002固定命令
00000000错误代码表示没有错误
80ICF
00RSV
02GCT
00PLC网络地址
0APLC节点地址PLC的IP地址最后一位
00PLC单元地址
00PC网络地址
04PC节点地址客户端IP地址最后一位
00PC单元地址
00SID
0101读指令
B2读地址区(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0,H字:B2)
006400起始地址100转成16进制就是64占3个字节就是006400
0004读取的个数占2个字节 2接收报文分析如下
46 49 4E 53 00 00 00 1E 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 00 6E 00 6F FF 90 FF 8F
46494E53ASCII编码FINS
0000001E指后面跟的字节度
00000002固定命令
00000000错误代码全是0表示没有错误
C0ICF固定值
00RSV固定值
02GCT固定值
00PLC网络地址
0APLC节点地址
00PLC单元地址
00PC网络地址
04PC节点地址
00PC单元地址
00SID
0101读指令
0000读取成功标识
00 6E 00 6F FF 90 FF 8F读到的数据00 6E转换成10进制就是110。00 6F就是111FF 90就是65424FF 8F就是65423这里要将65424-65536-112同样65423-65536-113short的表示范围是 -32,768 到 32,767表示有符号 16 位整数ushort:代表有符号的16位整数范围从0 到 65,535这就也说明了我们需要对返回的数据进行有效的处理这个留着在后面的通讯库封装代码中去处理。 2、向H区30的地址写入4个short数据分别是-98654-800327 发送:46 49 4E 53 00 00 00 22 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 B2 00 1E 00 00 04 FF 9E 02 8E FC E0 01 47 接收:46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00
发送报文分析
46 49 4E 53 00 00 00 22 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 B2 00 1E 00 00 04 FF 9E 02 8E FC E0 01 47
46494E53ASCII编码FINS
00000022指后面跟的字节长度
00000002固定命令
00000000错误代码全0表示没有错误
80ICF固定值
00RSV固定值
02GCT固定值
00PLC网络地址
0APLC节点地址
00PLC单元地址
00PC网络地址
04PC节点地址
00PC单元地址
00SID
0102写指令
82写地址区(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0)
001E00起始地址即0.0开始的地址
0004写入个数占2个字节
FF 9E 02 8E FC E0 01 47写入数据具体来说表示FF 9E》-98 02 8E》654FC E0 》-80001 47》327
同样的可以看到写入的负数前面的第一个是F这是因为负数用补码表示。
接收报文分析
46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00
46494E53ASCII编码FINS
00000016指后面跟的字节长度表示后面的字节有22个字节
00000002固定命令
00000000错误代码
C0ICF
00RSV
02GCT
00PLC网络地址
0APLC节点地址
00PLC单元地址
00PC网络地址
04PC节点地址
00PC单元地址
00SID
0102写指令
0000写入成功标识也就是说写入成功啦没有错误。
以上读取或写入命令之前都必须先发送握手报文命令而且只能发一次握手报文
7、读取和写入W区的float类型数据
float类型的数据是包括正负整数和正负小数如40-982.34-89.53
设置W区的5个数据 1、读取W区100开始的5个float数据 发送:46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 B1 00 64 00 00 0A 接收:46 49 4E 53 00 00 00 2A 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 47 AE 3F 81 8F 5C BF 82 00 00 42 F6 00 00 C4 75 C0 00 44 02
1发送报文分析如下 46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 B1 00 64 00 00 0A 46494E53ASCII编码FINS 0000001A指后面跟的字节长度26个字节不包括自己的长度 00000002固定命令 00000000错误代码表示没有错误 80ICF 00RSV 02GCT 00PLC网络地址 0APLC节点地址PLC的IP地址最后一位 00PLC单元地址 00PC网络地址 04PC节点地址客户端IP地址最后一位 00PC单元地址 00SID 0101读指令 B1读地址区(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0,H字:B2) 006400起始地址100转成16进制就是64占3个字节就是006400 000A读取的个数占2个字节这里为什么是A即10个因为一个float类型是占2个寄存器的那么5个float就是10个寄存器所以是A需要注意这个不同的地方。
2接收报文分析如下 46 49 4E 53 00 00 00 2A 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 47 AE 3F 81 8F 5C BF 82 00 00 42 F6 00 00 C4 75 C0 00 44 02 46494E53ASCII编码FINS 0000001E指后面跟的字节度 00000002固定命令 00000000错误代码全是0表示没有错误 C0ICF固定值 00RSV固定值 02GCT固定值 00PLC网络地址 0APLC节点地址 00PLC单元地址 00PC网络地址 04PC节点地址 00PC单元地址 00SID 0101读指令 0000读取成功标识47 AE 3F 81 8F 5C BF 82 00 00 42 F6 00 00 C4 75 C0 00 44 02读到的数据47 AE 3F 81是第一个数据 8F 5C BF 82是第二个数据00 00 42 F6是第三个数据00 00 C4 75是第四个数据C0 00 44 02是第五个数据这里为什么是这样的数据如果转成10进制都不是当初设置的1.01-1.02123-980523这是因为存在大小端字节序的问题这需要在程序后端进行处理这里返回的数据是没有问题的等后面在我的封装通讯库的进行处理保证响当当的没有问题。
2、向W区30的地址写入5个数据120, -130, -140,15.6f,-89.4f 发送:46 49 4E 53 00 00 00 2E 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 B1 00 1E 00 00 0A 00 00 42 F0 00 00 C3 02 00 00 C3 0C 99 9A 41 79 CC CD C2 B2 接收:46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00
发送报文分析 46 49 4E 53 00 00 00 2E 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 B1 00 1E 00 00 0A 00 00 42 F0 00 00 C3 02 00 00 C3 0C 99 9A 41 79 CC CD C2 B2 46494E53ASCII编码FINS 0000002E指后面跟的字节长度 00000002固定命令 00000000错误代码全0表示没有错误 80ICF固定值 00RSV固定值 02GCT固定值 00PLC网络地址 0APLC节点地址 00PLC单元地址 00PC网络地址 04PC节点地址 00PC单元地址 00SID 0102写指令B1写地址区(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0) 001E00起始地址 000A写入个数占2个字节要写入5个float的每个float占2个寄存器5个就是10个寄存器所以是A;00 00 42 F0 00 00 C3 02 00 00 C3 0C 99 9A 41 79 CC CD C2 B2写入数据具体来说00 00 42 F0是第一个 00 00 C3 02是第二个 00 00 C3 0C是第三个 99 9A 41 79是第四个 CC CD C2 B2是第五个。但这5个数据都不是120, -130, -140,15.6f,-89.4f转换成16进制的表示这也是因为存在大小端字节序的问题在后面的通讯库封装中来处理发送的报文指令绝对没有错。
接收报文分析 46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00
ASCII编码FINS 00000016指后面跟的字节长度表示后面的字节有22个字节 00000002固定命令 00000000错误代码 C0ICF 00RSV 02GCT 00PLC网络地址 0APLC节点地址 00PLC单元地址 00PC网络地址 04PC节点地址 00PC单元地址 00SID 0102写指令 0000写入成功标识也就是说写入成功啦没有错误。 以上读取或写入命令之前都必须先发送握手报文命令而且只能发一次握手报文
4、小结
这节我们读取和写入了CIO区D区H区W区的二进制数据ushort数据short数据float数据充分熟悉了fins指令的格式要求都有固定的格式。 FINS协议是一种基于TCP/IP网络通信的实时通信协议.能够实现欧姆龙工业设备之间的数据交换和控制指令传输。它采用了客户端/服务器模型客户端发送请求服务器返回响应通过建立连接、传输数据包来实现设备之间的通信。 FINS协议的核心是消息和指令的传输。消息格式包括消息头、命令和数据区。消息头定义了消息的类型、长度和地址等信息。命令部分包含了具体的指令内容如读取数据、写入数据或执行其他操作。数据区则是存储实际的数据信息。
注意几点
1读取命令0101写入命令0102固定的不能改
2存储区代号(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0,H字:B2)固定的不能改
3协议头部46 49 4E 53转换成ascii码就是fins
码字不易截图不易写作不易共享不易请多多点赞支持。