前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FINS协议格式及功能码简介

FINS协议格式及功能码简介

作者头像
FB客服
发布2019-06-18 12:21:01
5.9K0
发布2019-06-18 12:21:01
举报
文章被收录于专栏:FreeBuf

FINS(factoryinterface network service)通信协议是欧姆龙公司开发的用于工业自动化控制网络的指令/响应系统。使用FINS指令可实现各种网络间的无缝通信,包括用于信息网络的Ethernet(以太网),用于控制网络的ControllerLink和SYSMAC LINK。通过编程发送FINS指令,上位机或PLC就能够读写另一个PLC数据区的内容,甚至控制其运行状态,从而简化了用户程序。FINS协议支持工业以太网,这就为OMRON PLC与上位机以太网通信的实现提供了可能。

一、FINS报文格式

FINS通信数据以UDP/IP包或TCP/IP的形式发送和接收包,默认通讯端口为9600。通信过程中包含请求报文和响应报文,每个报文由FINS报文头和FINS请求帧/响应帧组成,报文具体格式如下:

FINS请求报文

FINS响应报文

当一个FINS命令发送时,一个FINS报文头将发送自动生成并附加,FINS报文头格式说明如下:

ICF

RSV

RSV(预留)总是00十六进制。这些位元被系统使用。不在响应中访问它们。

GCT

当跨8个网络层与CPU单元通信时在2.0或更高版本中,设置GCT(网关计数:通过的桥的数量)通过)到07十六进制当发送一个鳍命令。否则,设置GCT到02十六进制(见注)时发送。当接收到鳍响应时,GCT为为通过的每个桥(网络)和接收结果值。此值供系统使用。

DNA

目的网络地址。在以下范围内指定(十六进制)。

00:本地网络

01至7F:远程网络地址(小数:1至127)

DA1

目的节点的地址。在以下范围内指定(十六进制):

00:本地PLC内部通讯

01 ~ 20:控制器链路网络节点地址(1 ~ 32位小数)

01至FE:以太网(1至254十进制,以ETN21结尾的以太网单元)

FF:广播传输

DA2

目标单位地址。在以下范围内指定(十六进制):

00:CPU单元

FE:连接到网络的控制器链路单元或以太网单元

10到1F: CPU总线单元

SNA

源网络地址。在以下范围内指定(十六进制):

00:本地网络

01至7F:远程网络(1至127位小数)

SA1

源节点的地址。在以下范围内指定(十六进制):

00: PLC内部通讯

01 ~ 20:控制器链路网络节点地址(1 ~ 32位小数)

01至FE:以太网(1至254十进制,以ETN21结尾的以太网单元)

SA2

源单位地址。在以下范围内指定(十六进制)。

00:CPU单元

10到1F: CPU总线单元

SID

服务ID。用于标识生成传输的进程。设置SID到00到FF之间的任意数字。

FINS请求帧由功能码(四位十六进制)和参数(数据内容)组成。命令代码是表示命令内容的2字节代码。fins命令必须以2字节的命令代码开始。如果有同样是文本,它是在命令代码之后添加的。

FINS响应帧由功能码(四位十六进制)、结束码(篇幅有限就不展开了)和参数(文本)组成。结束码是显示命令执行结果的2字节代码。(第一个字节显示一般类别,第二个字节显示详细结果。)

二、FINS功能码

类型

功能码

名称

功能

功能

I/O区读写

01

01

内存读取

读取连续I/O内存区域数据

01

02

内存写入

向连续I/O内存区

01

03

内存填充

向特定范围I/O内存区填充相同的数据

01

04

非连续内存读取

读取指定的非连续I/O内存区域数据

01

05

内存转移

将非连续内存区的

参数区读写

02

01

参数区读取

读取连续参数区内容

02

02

参数区写入

写入连续参数区内容

02

03

参数区填充

向特定范围参数区填充相同的内容

程序区读写

03

06

程序读取

读取UM(用户内存)区

03

07

程序写入

写入UM(用户内存)区

03

08

程序清除

清除UM(用户内存)区

操作模式切换

04

01

运行

将CPU单元操作模式切换为运行或监视

04

02

停止

将CPU单元操作模式切换为编程

设备配置读取

05

01

CPU单元数据读取

读取CPU单元数据

05

02

连接状态读取

读取对应地址的模块数量

状态读取

06

01

CPU单元状态读取

读取CPU单元状态

06

20

循环时间读取

读取最大、最小和平均循环时间

时间数据读写

07

01

时钟读取

读取当前年、月、日、分、秒和星期几

07

02

时钟写入

改变当前年、月、日、分、秒和星期几

故障信息显示

09

20

信息读取/清除

读取和清除信息,读取故障和严重故障信息

访问控制权限

0C

01

获取访问权限

只要没有其它设备持有访问权限,则获得访问权限

0C

02

强制获取访问权限

即使有其它设备持有访问权限,仍获得访问权限

0C

03

释放访问权限

即使已经持有访问权限,仍释放访问权限

错误日志

21

01

清除错误

清除错误或报警

21

02

读取错误日志

读取错误日志

21

03

清除若无日志

清除错误日志指针

FINS登入日志

21

40

FINS登入日志读取

CPU单元自动保存有执行过FINS登入命令的日志。这条命令读取此日志。

21

41

FINS登入日志清除

清除FINS登入列表

文件内存

22

01

文件名读取

读取文件内存区数据

22

02

单个文件读取

从某个文件中的指定位置读取特定长度的文件数据

22

03

单个文件写入

从某个文件中的指定位置写入特定长度的文件数据

22

04

文件内存格式化

格式化文件内存

22

05

文件删除

从文件内存中删除指定文件

22

07

文件复制

在系统中将某些文件复制到其他位置

22

08

重命名文件

改变一个文件的名字

22

0A

内存区间数据转移1

在I/O内存和文件内存间转移或比较数据

22

0B

内存区间数据转移2

在参数区和文件内存间转移或比较数据

22

0C

内存区间数据转移3

在用户内存和文件内存间转移或比较数据

22

15

创建/删除文件夹

创建或删除一个文件夹

22

20

存储盒转移(只针对CP1H,CP1L CPU单元)

在存储盒与CPU单元间转移和修改数据

调试

23

01

强制设置/重置

强制设置或重置位,或推出强制设置状态

23

02

强制设置/重置取消

取消所有强制设置或重置过的位

三、FINS通信过程

以FINS/UDP为例,(FINS/TCP通信过程更复杂,现有资料介绍的比较少,下次会仔细介绍)UDP/IP是一种无连接的通信协议。当一个消息从一个节点发送到另一个节点,这两个节点具有相等的关系,两者之间没有明显的联系。如果使用TCP就像打电话一样呼叫时,UDP更像是手工传递备忘录。虽然UDP协议速度快,数据通信不如TCP可靠。特别是,当发送大量涉及重要路由的数据时,用户必须在应用程序中编写度量(如重试),以便提高可靠性。通信过程如下图所示。

*本文作者:工控安全123,转载请注明来自FreeBuf.COM

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、FINS报文格式
    • ICF
      • RSV
        • GCT
          • DNA
            • DA1
              • DA2
                • SNA
                  • SA1
                    • SA2
                      • SID
                      • 二、FINS功能码
                      • 三、FINS通信过程
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档