赞
踩
1.1 Fins通信概述
FINS(factory interface network service)通信协议是欧姆龙公司开发的用于工业自动化控制网络的指令/响应系统。运用 FINS指令可实现各种网络间的无缝通信,通过编程发送FINS指令,上位机或PLC就能够读写另一个PLC数据区的内容,甚至控制其运行状态,从而简化了用户程序。FINS协议支持工业以太网,这就为OMRON PLC与上位机以太网通信的实现提供了途径。
1.1.1支持的设备
带有网口且可以访问内部地址的设备都支持Fins通讯(NX701除外,NX701没有内部地址),其余具体型号如下。
系列 | 型号 |
CP | CP1H-E/CP1L-E/CP1W-CIF41(只能做服务器) |
CJ | CJ1M-CPU1*-ETN/CJ1W-ETN21/CJ1W-EIP21 |
CS | CS1W-ETN21/CS1W-EIP21 |
NX1P | NX1P全系列 |
NJ | NJ全系列 |
1.1.2 通信例程
一、上位机发送Fins TCP命令读写CP/CJ/CS数据
1、系统概述,硬件搭建和接线
CJ1W-ETN21模块IP地址为10.110.59.33;计算机IP地址为10.110.59.192
2、操作步骤
(1)硬件设置:
CJ1W-ETN21的两个拨码的含义如下:
设置CJ1W-ETN21网口模块单元号为1,节点号为33。
(2)软件设置
a 在CX-Programmer中新建CJ2M的工程,把PLC切换到编程模式创建IO表,双击读取出来的ETN21模块,设置IP地址与子网掩码,其中最后一个网段与硬件节点号一致,设置完成后下载到PLC,模块重启。
b 打开SocketTool软件,新建一个TCP客户端:
IP地址设置PLC的IP地址,对方口设置9600。
c 上位编写Fins/TCP命令,具体格式如下:
握手信号:
即:
46494E53 0000000C 00000000 00000000 000000C0(C0=192 计算机节点号)
FINS/TCP头代码与FINS头代码,命令格式如下:
其中ICF数据格式如下:
即发送数据时候,ICF=80
RSV固定00,GCT固定02
DNA为目标网络号
DA1为目标节点号
DA2为目标单元号
SNA为源网络号
SA1为源节点号
SA2为源单元号
SID设置00
计算机IP:10.110.59.192 PLC IP:10.110.59.33
即目标(PLC)网络号0,单元号0(CPU单元),节点号33
源(计算机)网络号0,单元号0,节点号192
即FINS头代码为:
800002 002100 00C000 00
注:PLC侧直接对CPU操作,与以太网模块实际单元号没有关系,固定为0。
d 使用0101代码读取D0 D1数据,完整命令如下:
46494E53 0000001A(发送字节数) 00000002 00000000
800002 002100(PLC节点) 00C000(PC节点) 00
0101(读取码) 82(DM地址) 000000(D0) 0002(2个数据)
0101指令说明如下:
e 使用0102代码写D100数据,完整命令如下:
46494E53 0000001C(发送直接数) 00000002 00000000
800002 002100 00C000 00
0102(写代码) 82(DM地址) 006400(D100) 0001(写下一个数据) 1234
0102代码格式说明如下:
3、现象和结论:
a 发送握手信号,先点击链接按钮,出现以下提示,即可以开始发送数据:
选择以16进制反馈,得到结果如下:
说明反馈正确,此时ETN21模块TCP灯亮。
握手信号反馈格式如下:
b 使用0101代码读取D0 D1数据,完整命令如下:
46494E53 0000001A 00000002 00000000 800000200 210000C0 00000101 82000000 0002
反馈如下:
即46494E53 0000001A 00000002 00000000(FINS/TCP头代码)
C00002 00C000(计算机节点) 002100(PLC节点) 00 0101(读数据) 0000(正常反馈) 11223344(数据)。
FINS/TCP命令反馈格式如下:
c 使用0102写D100数据,完整命令如下:
46494E53 0000001C 00000002 00000000 80000200 210000C0 00000102 82006400 00011234
接收到的反馈如下:
即46494E53 0000001A 00000002 00000000(FINS/TCP头代码)
C00002 00C000(计算机节点) 002100(PLC节点) 00 0102(写命令) 0000(正常结束)
4、注意事项
(1)FINS/TCP命令每次通讯前必须先进行握手,完成后即可不断发送FINS命令,如果发送顺序不对,TCP灯会熄灭,需要重新进行握手。
(2)使用软件发送代码时,中间不能加空格,否则会导致反馈不正常。
(3)在没有建立过路由表的情况下,网络号都为0。
二、上位机发送FINS UDP命令读写CP/CJ/CS数据
1、系统概述,硬件搭建和接线
内置EIP模块拨码设置IP地址10.110.59.3;计算机IP地址为10.110.59.192。
2、操作步骤
(1)硬件设置:
CJ2M内置的EIP口两个拨码含义如下:
设置CJ2M内置EIP口模块单元号为1,节点号为3。
(2)、软件操作:
a 在CX-Programmer中新建CJ2M的工程,把PLC切换到编程模式创建IO表,双击读取出来的EIP21模块,设置IP地址与子网掩码,其中最后一个网段与硬件节点号一致:
b 打开SocketTool,新建一个UDP客户端:
IP地址设置PLC的IP地址,对方端口设置9600,本地端口设置10000(两个端口号不能设置成一样的)。
c 上位编写FINS/UDP命令,具体格式说明如下:
其中ICF数据格式如下:
即发送数据时候,ICF=80
RSV固定00,GCT固定02
DNA为目标网络号
DA1为目标节点号
DA2为目标单元号
SNA为源网络号
SA1为源节点号
SA2为源单元号
SID设置00
计算机IP:10.110.59.192 PLC IP:10.110.59.3
即目标(PLC)网络号0,单元号0,节点号03
源(计算机)网络号0,单元号0,节点号192
即FINS头代码为:
800002 000300 00C000 00
注:PLC侧直接对CPU操作,与以太网模块实际单元号没有关系,固定为0。
d 使用0101代码读D100的数据,命令如下:
0101(读代码) 82(DM代码地址) 006400 (D100) 0001(1个数据)
0101指令说明如下:
e 用0102代码写W0.05为ON,命令如下:
0102(写代码) 31(W位地址代码)000005(W0.05) 0001(1个数据) 01(ON)
0102代码格式说明如下:
3、现象和结论
a 读D100数据,完整命令如下:
800002003000C000000101820064000001
把显示十六进制值打钩,发送数据,接收到的反馈如下:
FINS/UDP命令反馈格式如下:
即:C00002 00C000(计算机节点) 000300(PLC节点) 000101(读数据) 0000(正常反馈) 0123(数据)。
b 写W0.05完整命令如下:
80000200030000C00000010231000005000101
把显示十六进制值打钩,发送数据,接收到的反馈如下:
即:C00002 00C00(计算机节点) 000300(PLC节点) 00 0102(写命令) 0000(正常结束)
4、注意事项
(1)PLC直接连接计算机,直连网线与交叉网线都可以。
(2)建立UDP客户端时设置的对方端口号需要与PLC设置的端口号一致,默认9600,否则通讯不上。
(3)以太网参数设置好后,可以连接CX-P软件测试设置与连接是否正确。
(4)在没有建立过路由表的情况下,网络号都为0。
(5)PLC侧直接对CPU操作,与以太网模块实际单元号没有关系,固定为0。
(6)输入命令的时候中间不能加空格,否则无法得到正确反馈。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。