欧姆龙通信协议 FINS 2.0

admin 2021年12月2日11:12:46评论311 views字数 3518阅读11分43秒阅读模式

欧姆龙通信协议 FINS 2.0

••••

欧姆龙通信协议 FINS 2.0

点击上面“蓝字”关注我们

欧姆龙通信协议 FINS 2.0

欧姆龙通信协议 FINS 2.0

0x00 FINS简介

欧姆龙通信协议 FINS 2.0

欧姆龙全球制造用于工业和制造业的机器。FINS用于通过网络控制其中一些机器。FINS以太网协议基于OSI模型:

OSI layer

Protocol

7 Application Layer

FINS

6 Presentation Layer

5 Session Layer

4 Transport Layer

ISO-on-TCP (RFC 1006)

3 Network Layer

IP

2 Data Link Layer

Ethernet

1 Physical Layer

Ethernet

其中,第1-4层会由计算机自己完成(底层驱动程序),关于这些神马的定义,大家可以上网查一下;

第7层,FINS,这一层和用户数据相关,对PLC数据的读取报文在这里完成

欧姆龙通信协议 FINS 2.0

图1 FINS协议请求结构模型

欧姆龙通信协议 FINS 2.0

图2 FINS协议响应结构模型

欧姆龙通信协议 FINS 2.0

0x01 协议依赖

欧姆龙通信协议 FINS 2.0

FINIS协议使用的TCP端口:9600

FINS协议使用的编码格式为:ASCII

欧姆龙通信协议 FINS 2.0

0x02 FINS协议

欧姆龙通信协议 FINS 2.0


FINS会话流程



FINS会话流程是基于TCP/IP协议,下图表述了FINS会话开始几个数据帧的作用。FINS协议的会话有一次请求帧,请求帧中附带着发起方的节点参数。PLC端(Server端)会确认并将自己的节点参数放回给请求方。

欧姆龙通信协议 FINS 2.0

图3 FINS会话流程


FINS帧结构



FINS帧结构包含三部分组成,分别由FINS Header、FINS Commands和FINS Text组成。

欧姆龙通信协议 FINS 2.0

图4 FINS 帧结构

FINS Header 是由标示性的 FINS的ASCII开头,

即:0x46 0x49 0x4e 0x53 转换成字符串就是“FINS”。

FINS Commands 是由功能码组成,分别为Request 和 Response两种内容组成。

FINS Header部分

FINS Header部分包含了3个信息:协议标识符,数据长度、预留及帧类型组成。如图5所示:

欧姆龙通信协议 FINS 2.0

图5 S7CommPlus Header结构

FINS Header的结构为:

  • 0~3:Protocol ID,协议ID,通常为0x46 0x49 0x4e 0x53 即“FINS”;

  • 4~7:Length,数据长度,指后续跟着的字符长度。

  • 8~10:Reserved,预留,通常为0x00 0x00 0x00;

  • 11:Type,数据帧类型,一般有以下值:

    • 0x00:connect requst 连接请求数据帧

    • 0x01:connect Response,连接请求确认数据;

    • 0x02:data,数据传输;

  • 12~15:Reserved,保留。

举个例子,如图6所示:

欧姆龙通信协议 FINS 2.0

图6 FINS Header结构内容举例

接下来介绍重要的部分(FINS Commands),后面的帧结构都是由PDU类型与功能码来决定的。

FINS Commands部分

FINS Commands部分分为Commands 和 Response两中结构类型。
Commands结构类型如下:

欧姆龙通信协议 FINS 2.0

图7 FINS Commands结构内容举例

具体内容如下:
  • 0:ICF:(Information Control Field)信息控制码:

欧姆龙通信协议 FINS 2.0

  • 1:Rev:(Reserved)预留 一般为0x00。

  • 2:GCT:(Gateway count)网关数量,一般为0x02。

  • 3:DNA:(Destination network address)目标网络地址。

    • 00:本地网络

    • 01 to 7F:远程网络

  • 4:DA1:(Destination node number)目标节点号。

    • 01 to 7E:SYSMAC NET 网络节点号

    • 01 to 3E:SYSMAC LINK 网络节点号

    • FF:广播节点号

  • 5:DA2:(Source unit number)源单元号。

    • 00:PC(CPU)

    • FE:SYSMAC NET连接单元或者SYSMAC LINK单元连接网络

    • 10 to 1F:CPU 总线单元

  • 6:SNA:(Source network address)源网络地址。

    • 00:本地网络

    • 01 to 7F:远程网络

  • 7:SA1:(Source node number)源节点号

    • 01 to 7E:SYSMAC NET 网络节点号

    • 01 to 3E:SYSMAC LINK 网络节点号

    • FF:广播节点号

  • 8:SA2:(Source Unit address)源单元地址

    • 00:PC(CPU)

    • FE:SYSMAC NET连接单元或者SYSMAC LINK单元连接网络

    • 10 to 1F:CPU 总线单元

  • 9:SID:(Service ID) 序列号 范围00-FF

  • 10~11:Commands code:命令码,分为一级命令码和二级命令码。详细的命令码可参考FINS Commands code。

举个例子,如图8所示:

欧姆龙通信协议 FINS 2.0



几个关键功能码



本节主要介绍STOP、RUN及FORCED(强制输出)三个功能码结构。

FINS RUN

通过PC将PLC改变DEBUG、MONITOR及RUN三种模式切换。

欧姆龙通信协议 FINS 2.0

图9 FINS RUN数据格式

  • 0~1:Commands Code:功能码,0x04,0x01
  • 2~3:Program No.:项目码,一般为0xFF,0xFF
  • 4:Mode:模式
    • Debug模式 0x00,0x00
    • Monitor模式 0x00,0x02
    • Run模式 0x00,0x04

举个例子,如图10所示:

欧姆龙通信协议 FINS 2.0

图10 RUN例子

FINS STOP

通过PC将PLC改变PROGRAM模式,停止程序运行。

欧姆龙通信协议 FINS 2.0

图11 FINS STOP数据格式

  • 0~1:Commands Code:功能码,0x04,0x01
  • 2~3:Program No.:项目码,一般为0xFF,0xFF

举个例子,如图12所示:

欧姆龙通信协议 FINS 2.0

图12 SetVariable帧结构

FINS FORCED

Forced功能码可以强制设置或者强制重置位。也可以强制设置状态及释放状态。在恢复强制状态前,程序将无法继续执行。其命令结构如下图所示。

欧姆龙通信协议 FINS 2.0
  • 0~1:Commands Code:功能码,0x04,0x01

  • 2~3:No.of bits/flags:位号。

  • 4~9:Force Set/Reset data:强制/置位数据。

  • 4~5:Set/Reset Specification:执行动作。

    • 0x0000:强制复位

    • 0x0001:强制置位

    • 0x8000:强制释放并复位

    • 0x8001:强制释放并置位

    • 0xFFFF:解除强制状态

  • 6:Memory Area Code:存储区域代码

  • 7~9:Bit/Flags:位/状态设置

举个例子,如图13所示:

欧姆龙通信协议 FINS 2.0

图13


FINS Commands Code



下表是PDU Type几种典型的数据类型及含义:

序号

一级命令

二级命令

含义

1

0x01

0x01

读存储区域

2

0x02

写存储区域

3

0x04

连续读多个存储区域

4

0x03

0x06

读项目区域

5

0x07

写项目区域

6

0x04

0x01

运行

7

0x02

停止

8

0x05

0x01

读控制数据区

9

0x06

0x01

写控制状态

10

0x07

0x01

读时钟

11

0x02

写时钟

12

0x21

0x01

清除错误

13

0x22

0x0F

读文件存储区序号

14

0x10

读文件存储区

15

0x11

写文件存储区

16

0x23

0x01

强制设置/置位

17

0x02

取消强制设置/置位

18

0x0A

读多个强制状态


FINS Memery Area Code



下表是OP Code几种典型的数据类型及含义:

存储区

数据

数据地址

地址范围

存储区代码

位数

起始范围

第三字节

CIO

Bit status

00000 to 25515

0000 to FFFF

00 to 0F

00

1

Word contents

000 to 255

00 to 00

80

2

LR

Bit status

LR 0000 to LR 6315

03E8 to 0427

00 to 0F

00

1

Word contents

LR 00 to LR 63

00 to 00

80

2

HR

Bit status

HR 0000 to HR 9915

0428 to 048B

00 to 0F

00

1

Word contents

HR 00 to HR 99

00 to 00

80

2

AR

Bit status

AR 0000 to AR 2715

048C to 04A7

00 to 0F

00

1

Word contents

AR 00 to AR 27

00 to 00

80

2

Timer/

Counter

Completion Flag status

TIM 000 to TIM 511

CNT 000 to CNT 511

0000 to 01FF

00 to 00

01

1

PV

TIM 000 to TIM 511

CNT 000 to CNT 511

00 to 00

81

2

DM

Word contents

DM 0000 to DM 9999

0000 to 270F

00 to 00

82

2


欧姆龙通信协议 FINS 2.0

欧姆龙通信协议 FINS 2.0

0x03 结尾

欧姆龙通信协议 FINS 2.0

以上仅仅是个人对欧姆龙通信协议 FINS 2.0理解和建议。如果有其他想法或者想一起讨论的可以关注下面公众号。

如有侵权请及时联系删除。

公众号专注工业控制系统网络安全内容,以工控设备、工控协议、协议解析及检测评估为主要内容及研究方向。




本文始发于微信公众号(渗透云笔记):欧姆龙通信协议 FINS 2.0

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月2日11:12:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   欧姆龙通信协议 FINS 2.0https://cn-sec.com/archives/491771.html

发表评论

匿名网友 填写信息