26

FINS协议格式及功能码简介

 4 years ago
source link: https://www.tuicool.com/articles/vAB3um6
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

一、FINS 报文格式

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

yy6jE3n.jpg!web

FINS请求报文

qA3iAvE.jpg!web

FINS响应报文

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

ICF

bUfy22A.jpg!web

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字节的命令代码开始。如果有同样是文本,它是在命令代码之后添加的。

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

BzqeQbv.jpg!web

二、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可靠。特别是,当发送大量涉及重要路由的数据时,用户必须在应用程序中编写度量(如重试),以便提高可靠性。通信过程如下图所示。

yui6jaI.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK