OmronFins通讯协议.docx
《OmronFins通讯协议.docx》由会员分享,可在线阅读,更多相关《OmronFins通讯协议.docx(11页珍藏版)》请在冰豆网上搜索。
OmronFins通讯协议
编号:
_______________
本资料为word版本,可以直接编辑和打印,感谢您的下载
OmronFins通讯协议
甲方:
___________________
乙方:
___________________
日期:
___________________
说明:
本合同资料适用于约定双方经过谈判、协商而共同承认、共同遵守的责任与义务,同时阐述确定的时间内达成约定的承诺结果。
文档可直接下载或修改,使用时请详细阅读内容。
1.OMRONFINS通讯
1.1FINS通讯概述
FINS(factoryinterfacenetworkservice)通信协议是欧姆龙公司开发的用于工业自动化
控制网络的指令/响应系统。
运用FINS指令可实现各种网络间的无缝通信,通过编程
发送FINS指令,上位机或PLC就能够读写另一个PLC数据区的内容,甚至控制其运行状态,从而简化了用户程序。
FINS协议支持工业以太网,这就为OMRONPLC与上位机以
太网通信的实现提供了途径。
1.2Fins帧的结构
发送命令结构
发送命令结构:
0102写数据
结束码:
0000无错误,否则执行出错;
举例说明:
要读取DM10开始10个字的内容:
0101HEX82hex000A00000A
命令码存储区代码(82代表D区)待读数据起始地址读取字的数量存储区代码(82代表D区80代表CIO区)
响应
命令码结束码读取的10个字的数据
当结束码不为0000时,则代表执行错误,应重发当前帧。
2FINS在以太网上的帧格式
Fins在以太网上帧格式比较简单,简单来说就是在上面所说的Fins帧的基础上加上以太
网的包头就可以了。
具体帧格式分为UDP/IP帧格式和TCP/IP帧格式。
2.1FINSUDP/IP的帧格式
帧格式:
UDP/IP帧+FINS命令帧
UDP/IP帧FINS命令帧
UDP/IP的帧格式:
共10个字节,其名称如下:
ICFRSVGCTDNADA1DA2SNASA1SA2SID其每个字节的具体解释如下:
ICF发送接收标志字节,发送报文:
ICF=80HEX响应报文:
ICF=C0
RSV固定为00HEX;
GCT固定为02HEX;
DNA:
目标网络号;本网络:
00;远程网络:
01-7F;
DA1:
目标节点号;对于以太网来说,即该网络IP地址最后一位的值;
DA2:
目标单元号;对于CPU来说,固定为00;
SNA源网络号;本网络:
00;
SA1:
源节点号;IP地址最后一位的值;
SA2源单元号:
可设置为与目标单元号相同;
SID:
服务ID,响应端将接收过来的SID复制后添加到响应帧中;
举例说明:
PCIP地址:
10.11.1.19
PLCIP地址:
10.11.1.86
如果要请求DM10开始的10个字的内容
则PC发送命令如下:
UDP/IP帧
FINS命令帧
80000200
13
0000
56
0000
010182000A00000A
源IP地址
目标IP地址
源IP地址:
PLC地址(IP地址最后位)
目标IP地址:
通讯主机地址(IP地址最后位)
而PLC返回命令如下:
8000020000560000130000Data1Data10
不同plc型号返回有区别,这里仅作参考
实例:
(读取CIO区452地址:
01C4;长度为1个字)
发送码:
80000200200000BE000001018001C4000001
说明80000200消息头
20为PLC地址
0000默认
BE为计算机地址
0000默认
0101命令码
80读取区域
01C400读取地址
0001读取长度
返回码:
c0000200be0000200000010100000002
说明:
c0000200be0000200000为网络头
0101其中第二个01位命令码
0002为读取内容
如果要把10个数据写入到从DM10开始的10个数据区中
则发送命令如下:
80000200560000130000010282000A00000AData1-Data10
具体说明如下:
UDP/IP帧
FINS命令帧
800002000A0000140000
0102
82000A00
000A
Data1-Data10
写命令
起始数据地址
写入的数量
具体数值
PLC返回为:
800002000014000001020000
测试工具截图:
|鲤区|r自动发送每隔[w:
・5|发送|停止|
17按十大进•厂发送文件厂发烘接收觐的教据渚空|尴顼|广糖包发送逸项|
80000200560000130000010282000A00000A加EDQ皿D5DQDQMp口050。
崩叫口7QO呻叩g口。
红框部分即为要写入的数值
接收区|哲停显示]洁空保存选项||7十六进制实时)||
cO00Q20013000Q5600000100OD
PLC存储区已经写入:
4-0
+1
+2
+3
+4
+5
+6
+7
+8
+9
DOOOOO
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
D00010
oo^r
0002
0003
0004
00昕
0006
0008
0009
000A
D00020
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
DOOOSO
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
D00040
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
D00050
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
2.2FINS/TCP的帧结构:
和FINS/UDP相比,FINS/TCP多了一个握手过程,即双方建立了TCP的物理连接后,TCP
客户端(PQ需向TCP服务器(PLQ发送一个连接请求帧,PLC接收到请求帧后,会为该
请求分配一个FINS/TCP端口号,并返回响应帧给客户端,此时双方的FINS/TCP®信才真正
建立。
客户端的FINS/TCP请求帧格式如下:
名称内容说明
头标识
46494E53
即为ASCII码:
FINS
长度
0000000C
后续字节长度=12
命令码
00000000
为0
错误代码
00000000
为0
客户端节点地址
00000000to000000FE
0到254,为0服务端会自动分配节点号
服务端接收到连接请求后,返回帧格式如下:
名称内容说明
头标识
46494E53
ASCII:
FINS
长度
00000010
从命令码开始的数据长度
命令码
00000001
固定值00000001
错误码
4个字节错误信息
奔勺加该信息码表
客户端节点地址
00000001to000000FE
1到254
服务端节点地址
00000001to000000FE
1到254
错误信息码表:
Errorcode(hexadecimal)
Details
00000000
Normal
00000001
TheheaderisnotFINS'(ASCIIIcode).
00000002
Thedatalengthistoolong.
00000003
Thecommandisnotsupported.
00000020
Allconnectionsareinuse.
00000021
Thespecifiednodeisalreadyconnected.
00000022
AttempttoaccessaprotectednodefromanunspecifiedIPaddress.
00000023
TheclientFINSnodeaddressiscutofrange
00000024
ThesameFINSnodeaddressisbeingusedbytheclientandserver.
00000025
Allthenodeaddressesavailableforallocationhavebeenused.
举例说明:
PC作为TCPCLIENT:
IP地址:
10.11.1.86
PLC作为TCPSERVE端:
IP地址:
10.11.1.13
采用TCP测试工具建立连接并发送请求帧如下图所示:
服务端为容户端自动分配的节点地址
正常发送读写报文帧了。
报文帧的格式即为:
FINS/TCP^+FINS命令帧
其中FINS/TCP的帧格式如下:
名称
内容
说明
头标识
46494E53
即为ASCII码:
FINS
长度
00000014to000007E4
后续字节长度
命令码
00000002
发送读写指令时,固定为00000002
错误代码
00000000
为0
FINS/UDP帧
亲FINS/UDP命令帧格式
遵守FINS/UDP命令帧格式
现在,需要请求从DM100开始的2个字的数据,则发送报文如下:
46494e530000001A000000020000000080000200560000EF0000010182006400
002
其中红色部分为FINS/TCP^,绿色部分遵照FINS/UDP帧格式
图示如下:
每隔I>
r连援上后自劫发一送
每隔|omw
断开连接|计数
发送区]r自动发送每隔[im发送|停止|
17按十大进I厂发敝件厂发送接收到的教力渚空|尴顼]广播包发送选项|
46494e530000001A0000000200000000800002005&0000EF00000101620064000002
接收区暂停显示]涪空保存选攻|4十土逃制
r保存到交件〔实时)||
SB49^4?
S300OCTOOla0000000200000000cO0002700e£00005S000001010040atcl1234
PLCD区内容
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
D0QW0
ABCD
1234|
0000
0000
0000
0000
0000
0000
0000
0000
如果要把16#ABCD,16#1234写入到从D10开始的2个字中,则发送命令如下:
目目IF
|10.11.1.8&
目标诙口位无~
厂指定本地赣口
kxi
类型E3
r目可遂接
每隔I>
r连援上后自劫发一送
每隔|omw
断开连接|
计数
发送[Tea
接收回
漕空|
发送区]r自动发送每隔[im发送|停止|
17按十大进I厂发敝件厂发送接收到的教力渚空|尴顼]广播包发送选项|
46494e53000000IE0000000200000000800002005&0000EF0000
010282000A000002|ABCD12"34~|
接收区暂停显示]涪空保存选攻|4十土逃制
r保存到交件〔实时)||
丽渤口0口0~口01&叩0000O2p5"5ci。
口口口切口。
口027口。
药CO口056口000
01020000j
错误码为00000000代表指令执行成功
再检查下PLC中的D区,发现已经被写入:
+0
+1
+2
+3
+4
+5
6
T
+8
+9
D00010
ABCD
1234
0003
0004
0005
0006
0007
0008
0009
OOOA
D0Q020
0000
000Q
0000
000Q
0000
OOQQ
0000
0000
0000
0000
DD0C30
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
DD0040
0000
0000
0000
0000
0000
0000
0000
0000
0000
00001
注:
如果客户端想断开当前连接,则只需要发送一条不符合帧格式的帧即可。