欧姆龙(Omron)协议解析

ops/2024/10/21 3:51:58/

1. 协议概述
   欧姆龙(Omron)是来自日本的知名电子和自控设备制造商,其中、小型PLC在国内市场有较高的占有率,有CJ、CM等系列。PLC可以支持Fins、Host link等协议进行通信。

  支持以太网的欧姆龙PLC CPU、以太网通信模块根据型号的不同,一般都会持 FINS(Factory Interface Network Service)协议,一些模块也会支持EtherNet/IP协议。Omron fins协议缺省TCP/UDP端口号为9600。Fins协议封装在TCP/UDP之上,需要注意的是基于TCP的Fins数据包和基于UDP的包在头部上差异较大。协议的具体构造可以参考欧姆龙官方文档。

  FINS协议实现了OMRON PLC与上位机以太网通信。Fins基于TCP/UDP的报文的概览如下:

Fins over TCP
+-----------------------------------------------------------+
|  Fins/TCP Header  |         Fins over UDP(optional)       |
+-----------------------------------------------------------+/                                    \/              Fins over UDP           \  +---------------------------------------+|  Fins/UDP Header  |   Command Data    |+---------------------------------------+

由上图可知,Fins/TCP实际上是将Fins/UDP报文作为其负载,在其前面加了一个Fins/TCP报头。需要注意的是,Fins/TCP报文中负载即Fins/UDP部分不一定会出现,它可以只有一个简单的Fins/TCP报头。

  先介绍Fins/UDP报文的组成,然后再介绍Fins/TCP结构。

2. 协议详解
2.1 Fins over UDP
  基于UDP的Fins协议的结构相对简单,整体结构由报头和数据两部分组成,如下所示:

Fins over UDP
+--------------------------+
|      Fins/UDP Header     |
+--------------------------+
|  Command Data(opitonal)  |
+--------------------------+

 其中报头部分为必要组成部分,为固定长度12个字节,数据部分非必现。

2.1.1 Fins/UDP Header
  报头部分由11个定长字段组合而成,前面10个字段分别简称为:ICF、RSV、GCT、DNA、DA1、DA2、SNA、SA1、SA2、SID,如下所示:

0         1           2          6                     7
+---------+-----------+----------+---------------------+
| Gateway | Data Type | Reserved |  Response setting   |
+------------------------------------------------------+
|                      Reserved                        |
+------------------------------------------------------+
|                    Gateway Counts                    |
+------------------------------------------------------+
|                Destination Network Address           |
+------------------------------------------------------+
|                Destination Node Number               |
+------------------------------------------------------+
|                Destination Unit Addres               |
+------------------------------------------------------+
|                 Source Network Address               |
+------------------------------------------------------+
|                   Source Node Number                 |
+------------------------------------------------------+
|                    Source Unit Addres                |
+------------------------------------------------------+
|                         Service Id                   |
+------------------------------------------------------+
|                       Command                        |
+                                                      +
|                       Code(2B)                       |
+------------------------------------------------------+

上述11个字段中,除最后一个Command Code字段为2个字节外,其余所有字段均只占1个字节。

2.1.2 Information control filed
  ICF,信息控制字段,1个字节,由4个子字段组成,分述如下:

1... .... = Gateway bit,是否使用网关,0x01表示使用;
.1.. .... = Data Type bit,数据类型比特位,0x01表示响应,0x00表示命令;
..0. .... = Reserved bit,保留比特位,默认置0;
...0 .... = Reserved bit,保留比特位,默认置0;
.... 0... = Reserved bit,保留比特位,默认置0;
.... .0.. = Reserved bit,保留比特位,默认置0;
.... ..0. = Reserved bit,保留比特位,默认置0;
.... ...1 = Response setting bit,响应标志,0x01表示非必需回应,0x00表示必须进行回应。


2.1.3 Reserved
  保留字段,1个字节,置为0x00。

2.1.4 Gateway count
  网关计数,1个字节,置为0x02。

2.1.5 Destination network address
  目标网络地址,1个字节,取值如下:

  1.  00:表示本地网络
  2.  0x01~0x7F:表示远程网络

2.1.6 Destination node number
  目标节点编号,1个字节,取值如下:

  1.  0x01~0x3E: SYSMAC LINK网络中的节点号;
  2.  0x01~0x7E: YSMAC NET网络中的节点号;
  3.  0xFF: 广播传输。

  Omron的官方手册中,该字段只能取上述值,实际抓包有其它值出现,被wireshark标记为unknown。

2.1.7 Destination unit address
  目标单元地址,1个字节,取值如下:

  1. 0x00:PC(CPU);
  2. 0xFE: SYSMAC NET Link Unit or SYSMAC LINK Unit connected to network;
  3. 0x10~0x1F:CPU总线单元 ,其值等于10 + 单元号(前端面板中配置的单元号)。

  Omron的官方手册中,该字段只能取上述值,实际抓包有其它值出现,被wireshark标记为unknown。

2.1.8 Source network address
  源网络地址,1个字节,取值如下:

  1. 0x00:表示本地网络
  2. 0x01~0x7F:表示远程网络

2.1.9 Source node number
  源节点编号,1个字节,取值如下:

  1. 0x01~0x3E: SYSMAC LINK网络中的节点号;
  2. 0x01~0x7E: YSMAC NET网络中的节点号;
  3. 0xFF: 广播传输

Omron的官方手册中,该字段只能取上述值,网上的实际抓包发现会有其它值出现,被wireshark标记为unknown。

2.1.10 Source unit address
  源单元地址,1个字节,取值如下:

  1. 0x00:PC(CPU);
  2. 0xFE: SYSMAC NET Link Unit or SYSMAC LINK Unit connected to network;
  3. 0x10~0x1F:CPU总线单元 ,其值等于10 + 单元号(前端面板中配置的单元号)。

Omron的官方手册中,该字段只能取上述值,实际抓包有其它值出现,被wireshark标记为unknown。

2.1.11 Service ID
  服务ID,1个字节,取值0x00~0xFF,产生会话的进程的唯一标识。

2.1.12 Command Code字段
  2个字节,其取值由第一个字节表示的大分类和第二个字节表示的子分类复合而成,取值及其含义如下表:


http://www.ppmy.cn/ops/123414.html

相关文章

车辆重识别(2022ACM SIGGRAPH调色板:图像到图像的扩散模型)论文阅读2024/10/09

[2] Palette: Image-to-Image Diffusion Models ( ACM SIGGRAPH 2022) 作者:Chitwan Saharia、William Chan、Huiwen Chang 单位:Google Research, Brain Team 摘要: 本文基于条件扩散模型开发了一个统一的图像到图像翻译框架,并…

请解释一下Java中的泛型擦除。你对Java中的XML和JSON了解多少?

请解释一下Java中的泛型擦除。 Java中的泛型擦除(Type Erasure)是指Java编译器在编译泛型代码时,会移除泛型类型参数的相关信息,使得生成的字节码中不包含泛型类型信息。这个过程使得Java的泛型在运行时(Runtime&…

pytest的基础入门

pytest判断用例的成功或者失败 pytest识别用例失败时会报AssertionError或者xxxError错误,当捕获异常时pytest无法识别到失败的用例 pytest的fixture夹具 pytest的参数化 #coding:utf-8 import pytestfrom PythonProject.pytest_test.funcs.guess_point import ge…

一台电脑轻松接入CANFD总线_来可CNA板卡介绍

在工业控制领域,常常使用的总线技术有CAN(FD)、RS-232、RS-485、Modbus、Profibus、Profinet、EtherCAT等。RS-485以其长距离通信能力著称,Modbus广泛应用于PLC等设备,EtherCAT则以其低延迟和高实时性在自动化系统中备受青睐。 其中&#xff…

YOLOv5改进——普通卷积和C3模块更换为GhostConvV2卷积和C3GhostV2模块

目录 一、GhostNetV2核心代码 二、修改common.py 三、修改yolo.py 三、建立yaml文件 四、训练 一、GhostNetV2核心代码 在models文件夹下新建modules文件夹,在modules文件夹下新建一个py文件。这里为GhostV2.py。复制以下代码到文件里面。 # TODO: ghostnetv…

Qt打开excel文件,并读取指定单元格数据

1. 下载并安装QXlsx库,详见之前的博文Qt子线程创建excel文件报错QObject: Cannot create children for a parent that is in a different thread.-CSDN博客 2. // 创建一个XlsxDocument对象QString filename "D:\\mydocuments\\data_acquisition\\data\\tes…

【mysql】使用AbstractRoutingDataSource实现多数据源 与 获取mapper上注解

使用AbstractRoutingDataSource实现多数据源 与 获取mapper上注解 背景 随着业务发展速度越来越快,数据的增长也呈现倍数级别增长,数据库的压力,对于查询和写入等所有操作,都依赖于主库,其实有一些对于时效性要求不高…

使用idea和vecode创建vue项目并启动(超详细)

一、idea创建vue项目 创建项目之前先下载好插件 新建项目找到vue生成器 写好名称,找到自己需要存放的地址,node解释器安装方式可以看我上一个博客,vueCLI是选择vue的版本,我们可以使用idea自带的vue版本默认是vue3,创…