0x00 FINS简介
欧姆龙全球制造用于工业和制造业的机器。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数据的读取报文在这里完成。
图1 FINS协议请求结构模型
图2 FINS协议响应结构模型
0x01 协议依赖
FINIS协议使用的TCP端口:9600
FINS协议使用的编码格式为:ASCII
0x02 FINS协议
FINS会话流程
FINS会话流程是基于TCP/IP协议,下图表述了FINS会话开始几个数据帧的作用。FINS协议的会话有一次请求帧,请求帧中附带着发起方的节点参数。PLC端(Server端)会确认并将自己的节点参数放回给请求方。
图3 FINS会话流程
FINS帧结构
FINS帧结构包含三部分组成,分别由FINS Header、FINS Commands和FINS Text组成。
图4 FINS 帧结构
FINS Header 是由标示性的 FINS的ASCII开头,
即:0x46 0x49 0x4e 0x53 转换成字符串就是“FINS”。
FINS Commands 是由功能码组成,分别为Request 和 Response两种内容组成。
FINS Header部分
FINS Header部分包含了3个信息:协议标识符,数据长度、预留及帧类型组成。如图5所示:
图5 S7CommPlus Header结构
FINS Header的结构为:
举个例子,如图6所示:
图6 FINS Header结构内容举例
接下来介绍重要的部分(FINS Commands),后面的帧结构都是由PDU类型与功能码来决定的。
FINS Commands部分
FINS Commands部分分为Commands 和 Response两中结构类型。
Commands结构类型如下:
图7 FINS Commands结构内容举例
具体内容如下:
举个例子,如图8所示:
几个关键功能码
本节主要介绍STOP、RUN及FORCED(强制输出)三个功能码结构。
FINS RUN
通过PC将PLC改变DEBUG、MONITOR及RUN三种模式切换。
图9 FINS RUN数据格式
举个例子,如图10所示:
图10 RUN例子
FINS STOP
通过PC将PLC改变PROGRAM模式,停止程序运行。
图11 FINS STOP数据格式
举个例子,如图12所示:
图12 SetVariable帧结构
FINS FORCED
Forced功能码可以强制设置或者强制重置位。也可以强制设置状态及释放状态。在恢复强制状态前,程序将无法继续执行。其命令结构如下图所示。
举个例子,如图13所示:
图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 511CNT 000 to CNT 511 | 0000 to 01FF | 00 to 00 | 01 | 1 |
PV | TIM 000 to TIM 511CNT 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 |
0x03 结尾
以上仅仅是个人对欧姆龙通信协议 FINS 2.0理解和建议。