OmronFins通讯协议docx.docx
《OmronFins通讯协议docx.docx》由会员分享,可在线阅读,更多相关《OmronFins通讯协议docx.docx(10页珍藏版)》请在冰豆网上搜索。
OmronFins通讯协议docx
Omron-Fins通讯协议
OMRONFINS通讯
1.OMRONFINS通讯
1.1FINS通讯概述
FINS(factoryinterfacenetworkservice)通信协议是欧姆龙公司开发的用于工业自动化控制网络的指令/响应系统。
运用FINS指令可实现各种网络间的无缝通信,通过编程发送FINS指令,上位机或PLC就能够读写另一个PLC数据区的内容,甚至控制其运行状态,从而简化了用户程序。
FINS协议支持工业以太网,这就为OMRONPLC与上位机以太网通信的实现提供了途径。
1.2Fins帧的结构
发送命令结构:
发送命令结构:
当结束码不为0000时,则代表执行错误,应重发当前帧。
2FINS在以太网上的帧格式
Fins在以太网上帧格式比较简单,简单来说就是在上面所说的Fins帧的基础上加上以太网的包头就可以了。
具体帧格式分为UDP/IP帧格式和TCP/IP帧格式。
2.1FINSUDP/IP的帧格式
帧格式:
UDP/IP帧+FINS命令帧
UDP/IP帧
FINS命令帧
UDP/IP的帧格式:
共10个字节,其名称如下:
ICF
RSV
GCT
DNA
DA1
DA2
SNA
SA1
SA2
SID
其每个字节的具体解释如下:
ICF:
发送接收标志字节,发送报文:
ICF=80HEX;响应报文:
ICF=C0;
RSV:
固定为00HEX;
GCT:
固定为02HEX;
DNA:
目标网络号;本网络:
00;远程网络:
01-7F;
DA1:
目标节点号;对于以太网来说,即该网络IP地址最后一位的值;
DA2:
目标单元号;对于CPU来说,固定为00;
SNA:
源网络号;本网络:
00;
SA1:
源节点号;IP地址最后一位的值;
SA2:
源单元号:
可设置为与目标单元号相同;
SID:
服务ID,响应端将接收过来的SID复制后添加到响应帧中;
举例说明:
PCIP地址:
10.11.1.19
PLCIP地址:
10.11.1.86
如果要请求DM10开始的10个字的内容
则PC发送命令如下:
UDP/IP帧
FINS命令帧
80000200
13
0000
56
0000
010182000A00000A
源IP地址
目标IP地址
源IP地址:
PLC地址(IP地址最后位)
目标IP地址:
通讯主机地址(IP地址最后位)
而PLC返回命令如下:
8000020000560000130000Data1—Data10
不同plc型号返回有区别,这里仅作参考
实例:
(读取CIO区452地址:
01C4;长度为1个字)
发送码:
80000200200000BE000001018001C4000001
说明80000200消息头
20为PLC地址
0000默认
BE为计算机地址
0000默认
0101命令码
80读取区域
01C400读取地址
0001读取长度
返回码:
c0000200be0000200000010100000002
说明:
c0000200be0000200000为网络头
0101其中第二个01位命令码
0000成功与否标识0040或9505标识码不清楚
0002为读取内容
如果要把10个数据写入到从DM10开始的10个数据区中
则发送命令如下:
80000200560000130000010282000A00000AData1-Data10
具体说明如下:
UDP/IP帧
FINS命令帧
800002000A0000140000
0102
82000A00
000A
Data1-Data10
写命令
起始数据地址
写入的数量
具体数值
PLC返回为:
800002000014000001020000
测试工具截图:
PLC存储区已经写入:
2.2FINS/TCP的帧结构:
和FINS/UDP相比,FINS/TCP多了一个握手过程,即双方建立了TCP的物理连接后,TCP客户端(PC)需向TCP服务器(PLC)发送一个连接请求帧,PLC接收到请求帧后,会为该请求分配一个FINS/TCP端口号,并返回响应帧给客户端,此时双方的FINS/TCP通信才真正建立。
客户端的FINS/TCP请求帧格式如下:
名称
内容
说明
头标识
46494E53
即为ASCII码:
FINS
长度
0000000C
后续字节长度=12
命令码
00000000
为0
错误代码
00000000
为0
客户端节点地址
00000000to000000FE
0到254,为0服务端会自动分配节点号
服务端接收到连接请求后,返回帧格式如下:
名称
内容
说明
头标识
46494E53
ASCII:
FINS
长度
00000010
从命令码开始的数据长度
命令码
00000001
固定值00000001
错误码
4个字节错误信息
参考错误信息码表
客户端节点地址
00000001to000000FE
1到254
服务端节点地址
00000001to000000FE
1到254
错误信息码表:
举例说明:
PC作为TCPCLIENT端:
IP地址:
10.11.1.86
PLC作为TCPSERVER端:
IP地址:
10.11.1.13
采用TCP测试工具建立连接并发送请求帧如下图所示:
从上图可知,返回帧中的错误码为00000000,说明无错误,FINS/TCP建立完成,现在可以正常发送读写报文帧了。
报文帧的格式即为:
FINS/TCP帧+FINS命令帧
其中FINS/TCP的帧格式如下:
名称
内容
说明
头标识
46494E53
即为ASCII码:
FINS
长度
00000014to000007E4
后续字节长度
命令码
00000002
发送读写指令时,固定为00000002
错误代码
00000000
为0
FINS/UDP帧
参考FINS/UDP命令帧格式
遵守FINS/UDP命令帧格式
现在,需要请求从DM100开始的2个字的数据,则发送报文如下:
46494e530000001A000000020000000080000200560000EF00000101820064000002
其中红色部分为FINS/TCP帧,绿色部分遵照FINS/UDP帧格式
图示如下:
PLCD区内容
如果要把16#ABCD,16#1234写入到从D10开始的2个字中,则发送命令如下:
再检查下PLC中的D区,发现已经被写入:
注:
如果客户端想断开当前连接,则只需要发送一条不符合帧格式的帧即可。