新闻中心

创新、诚信、务实、高效

新闻中心
联系我们

上海金沙江路3131创意园10号楼202室

英文

024-23609806 024-23609560

传真:021-38686488

行业要闻
您的位置:主页 > 新闻中心 > 行业要闻 >
欧姆龙PLC之CP1H以太网FINS/TCP通讯实例
发布时间:2016-10-11 10:54 来源:欧姆龙 阅读:
CP1H上面的选件板插槽可以插入1-2块CP1W-CIF41模块(见图1),系统即具有了以太网功能,也可以使用CP1W-EXT01和CJ1W-ETN21以太网扩展模块(见图2)来组态,用于在CX-Programmer软件下的编程或监控,也可以和其它网络设备(可以是上位机,也可以是其它的PLC或者是带有以太网接口的触摸屏等)进行通讯。

就像UDP的TCP之间的特性对比一样,和FINS/UDP方式相比,FINS/TCP具有更好的可靠性,但是不如前者的效率高。FINS/TCP不可以使用广播,同时最多16个连接。本文给出FINS/TCP通讯实例供参考。

电脑和PLC通讯,通常都是电脑做为客户端,PLC作为服务器端。如果是PLC之间进行通讯,任何一台PLC都可以作为服务器或者客户端。

硬件:
  CP1H-X40DR-A 1台
   CP1W-CIF41 1块
   网线、交换机

 

软件:
   网络调试助手(或者其它网络调试软件)
   CX-Programmer

这里假定CP1W-CIF41已经配置好:

ip=192.168.1.32

subnet MASK=255.255.255.0

port=9600

配置方法可以参看文末的附录1、CIF41配置的主要操作步骤

 

运行CX-Programmer,在查看窗口添加D0、D1、W210通道和W212.01位用于监控。

客户端电脑配置成:

ip=192.168.1.5

subnet MASK=255.255.255.0
运行网络调试软件,协议类型选择 TCP Client,远程主机地址处改为PLC地址和相应的端口号,即192.168.1.32:9600,之后即可点连接。发送和接收区都设置成16进制(见图3)。

 

一,握手命令

 

1、客户端向服务器发送命令00000000。这个命令长20字节,分成5组4字节。格式为:

 

头(FINS) + 长度(Hex0C) + 命令码(00000000)+ 错误码(00000000) + 客户机节点地址。
46494E53是FINS的ASCII码值,即命令头。
0000000C是命令长度20。
00000000是命令码。
00000000是错误码。
00000005是客户节点地址,即电脑IP地址的末位。

在发送区输入:
46494E53 0000000C 00000000 00000000 00000005

 

点击发送,PLC立即回应(见图3):
46494E53 00000010 00000001 00000000 00000005 00000020

 

下面我们解释这一条回应:

 

2、服务器端(PLC)向客户端(电脑)发送的命令00000001。这个命令长24字节,分成6组4字节。格式为:

 

头(FINS)+ 长度(Hex10) + 命令码(00000001) + 错误码  + 客户机节点地址 + 服务器地址。


前面回应的字符串里面错误代码为0,表明客户端ip地址05已被服务器32(hex20)成功记录。

如果发生了错误,服务器回应的命令会包含错误码,连接断开,端口立刻关闭。当握手成功之后,不要再次发送这个命令,否则服务器会返回03错误码,即不支持的命令。这里全部的错误代码含义如下:

十六进制错误码    含义

00000000            正常
00000001            头不是‘FINS’ (ASCII code)。
00000002            数据太长。
00000003            不支持的命令。
00000020            所有的连接被占用。
00000021            指定的节点已经连接。
00000022            未被指定的IP地址试图访问一个被保护的节点。
00000023            客户端FINS节点地址超范围。
00000024            相同的FINS节点地址已经被使用。
00000025            所有可用的节点地址都已使用。

 

到此,我们已经成功地完成了关键的第一步!接下来需要的就是之前介绍过的HostLink协议里面有关FINS的内容了。

 

二、FINS帧发送命令

 

如果向服务器发送FINS帧,就要用到下面这个命令。由于FINS帧长度是12-2012,因此这个命令的长度可变,格式为:

 

头(FINS) + 长度 + 命令(00000002)+ 错误码 + FINS帧

FINS命令帧内容可参考“欧姆龙OMRON PLC之HostLink通讯协议-FINS命令W字/位操作篇”一文,里面有存储区代码和操作代码的内容。点击文末原文链接即可查看。
http://blog.sina.com.cn/hulx
例2-1、读DM0开始的2个通道:
 

发送:
   46494E53 0000001A 00000002 00000000 80000200 20000005 00FF0101 82000000 0002

 

20000005:20是目标地址,05是源地址;
00FF0101 :0101是读操作;
82000000:82是DM存储区代码,000000是起始地址;
0002:是数量。

返回:
  46494E53 0000001A 00000002 00000000 C0000200 05000020 00FF0101 00001234 5678

00001234:0000代表操作成功,1234是读回的第一个字,即D0=Hex1234,
5678:D1=Hex5678

例2-2、W210寄存器写入Hex0388:

 

发送:
  46494E53 0000001C 00000002 00000000 80000200 20000005 00FF0102 B100D200 00010388


20000005:20是目标地址,05是源地址;
00FF0102:0102是写操作代码;
B100D200:B1是W字代码,00D2是起始地址,Hex00D2=212,;
00010388:是写入数量,0388是写入首个内容;

回应:
  46494E53 00000016 00000002 00000000 C0000200 05000020 00FF0102 0000

 

0102后面紧跟的0000代表写入成功。

例2-3、W210寄存器读取:

 

发送:
  46494E53 0000001A 00000002 00000000 80000200 20000005 00FF0101 B100D200 0001

 

20000005:20是目标地址,05是源地址;
00FF0101:0101是读操作代码;
B100D200:B1是W字代码,00D2是起始地址,Hex00D2=212,;
0001:是读取数量。

回应:
  46494E53 00000018 00000002 00000000 C0000200 05000020 00FF0101 00000388

 

0102后面紧跟的0000代表读取成功,W210=Hex0388

例2-4、强制W212.01=On:

 

发送:
  46494E53 0000001C 00000002 00000000 80000200 20000005 00FF2301 00010001 3100D401


20000005:20是目标地址,05是源地址;
00FF2301:2301是强制操作代码;
00010001:前面的0001是数量,后面的0001代表强制置位操作;
3100D401:31是W位代码,00D401是起始地址,Hex00D4.01=212.01。

回应:
  46494E53 00000016 00000002 00000000 C0000200 05000020 00FF2301 0000


2301后面紧跟的0000表示操作成功。
注意在CX-Programmer查看窗口中W212.01的值1后面的(强制)字样(见图5)。

 

例2-5、强制W212.01=Off:
发送:
 46494E53 0000001C 00000002 00000000 80000200 20000005 00FF2301 00010000 3100D401

 

20000005:20是目标地址,05是源地址;
00FF2301:2301是强制操作代码;
00010000:0001是数量,0000代表强制复位操作;
3100D401:31是W位代码,00D401是起始地址,Hex00D4.01=212.01。

 

回应:
  46494E53 00000016 00000002 00000000 C0000200 05000020 00FF2301 0000

 

2301后面紧跟的0000表示操作成功。

例2-6、取消W212.01强制:
发送:
  46494E53 0000001C 00000002 00000000 80000200 20000005 00FF2301 0001FFFF 3100D401


20000005:20是目标地址,05是源地址;
00FF2301:2301是强制操作代码;
0001FFFF:0001是数量,FFFF代表取消强制操作;
3100D401:31是W位代码,00D401是起始地址,Hex00D4.01=212.01。

回应:
  46494E53 00000016 00000002 00000000 C0000200 05000020 00FF2301 0000


2301后面紧跟的0000表示操作成功。

 

注意在CX-Programmer查看窗口中W212.01的值0后面的(强制)字样不见了,表示已经成功地取消了强制。

乐利(中国)有限公司 ICP备案编号:沪ICP备12040820  

电话:400-995-9955 021-3868-8888 传真:021-3868-6488

友情链接: 静音式发电机组 | 波形护栏 | 杭州装修网 | 香丹清效果怎么样 | 巴西比戈 | 空气能热水器 | 合肥装修网 | 电动葫芦 | IPSA官网 | 科威电工 | 软起动 | 走刀式分板机 |