欧姆龙OMRON PLC之HostLink通讯协议(五)- CP1H以太网FINS/TCP通讯实例

//写在前面: 自2010年起,本人陆续在新浪博客上面发了几篇OMRON PLC的应用笔记,曾经很疑惑阅读量异常增加,后来发现原来是这里有人转载。现将原文照发在这里,希望能帮到做工控的同行朋友们。

在这里插入图片描述CP1H上面的选件板插槽可以插入1-2块CP1W-CIF41模块,系统即具有了以太网功能,也可以使用CP1W-EXT01和CJ1W-ETN21以太网扩展模块来组态,用于在CX-Programmer软件下的编程或监控,也可以和其它网络设备(可以是上位机,也可以是其它的PLC或者是带有以太网接口的触摸屏等)进行通讯。

在这里插入图片描述图1 CP1W-CIF41
在这里插入图片描述图2 ETN21

就像UDP的TCP之间的特性对比一样,和FINS/UDP方式相比,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。
运行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进制。

一,握手命令
1、客户端向服务器发送命令00000000。这个命令长20字节,分成5组4字节。分别是:
头(FINS) + 长度(Hex0C) + 命令(00000000)+ 错误码(00000000) + 客户机节点地址。
46494E53是FINS的ASCII码值,即命令头。
0000000C是命令长度20。
00000000是命令码。
00000000是错误码。
00000005是客户节点地址,即电脑IP地址的末位。
http://blog.sina.com.cn/hulx
在发送区输入:
46494E53 0000000C 00000000 00000000 00000005
点击发送,PLC立即回应:
46494E53 00000010 00000001 00000000 00000005 00000020
http://blog.sina.com.cn/hulx
到此我们已经成功地完成了第一步!接下来需要的就是之前介绍过的HostLink协议里面FINS的知识了。
在这里插入图片描述图3 网络调试助手 握手成功

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 所有可用的节点地址都已使用。

二、FINS帧发送命令
如果向服务器发送FINS帧,就要用到这个命令。由于FINS帧长度是12-2012,因此命令长度可变,
头(FINS)+长度+命令(00000002)+错误码+FINS帧。

FINS命令帧内容可参考欧姆龙OMRONPLC之HostLink通讯协议(三)-FINS命令W字/位操作篇,里面有存储区代码和操作代码的内容。

例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:是读取数量。
http://blog.sina.com.cn/hulx
回应:
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后面的(强制)字样。

在这里插入图片描述图4 网络调试助手 强制置位
在这里插入图片描述图5 CX-Programmer 强制置位成功

例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后面的(强制)字样不见了,表示已经成功地取消了强制。
在这里插入图片描述图6 网络调试助手 取消强制
在这里插入图片描述图7 CX-Programmer 取消强制成功

以下内容2019/12/30增补

与CIO不同,对于W、A、H及D 这样的寄存器进行位操作,其实不用强制操作,直接写入更简洁,可以减少操作步骤,下面以W位操作为例介绍。

例2-7、W212.01 按位置位:

发送:
46494E53 0000001B 00000002 00000000 80000200 20000005 00FF0102 3100D401 000101

20000005:20是目标地址,05是源地址;
00FF0102:0102是寄存器写操作代码;
3100D401:31是W位代码,00D401是地址,Hex00D4.01=212.01;

000101:0001是数量,01代表写入值1;

回应:

46494E53 00000016 00000002 00000000 C0000200 20000005 00FF0102 0000

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

例2-8、W212.01 按位复位:
发送:
46494E53 0000001B 00000002 00000000 80000200 20000005 00FF0102 3100D401 000100

20000005:20是目标地址,05是源地址;
00FF0102:0102是寄存器写操作代码;
3100D401:31是W位代码,00D401是地址,Hex00D4.01=212.01;

000100:0001是数量,00代表写入值0;

回应:

46494E53 00000016 00000002 00000000 C0000200 20000005  00 FF0102 0000

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

+++++++++++++++++++++++正文结束++++++++++++++++++++++

附录1、CIF41配置的主要操作步骤
1、硬件设置及接线
槽位对应DIP开关拨打ON,如插在第1槽DIP开关地4位置ON,如插在第2槽DIP开关地5位置ON,表示Toolbus。使用网线连接PC与CIF41。

在这里插入图片描述2、以太网选件板IP地址设置
PC打开浏览器,访问默认设定网页:http://192.168.250.1/C00.htm;输入密码:ETHERNET(大写),点击【登陆】按钮进入设置界面。然后点击【设置】中【系统设置】选项进入系统设置界面,设置IP地址、子网掩码、FINS节点地址一定要设置为ip地址的最低位,点击【传送】,然后点击【重启】按钮,即可。

3、PC电脑IP地址设置
PC与CIF41的IP地址需设置为同一网段,末位不一致。子网掩码设置默认255.255.255.0
http://blog.sina.com.cn/hulx
附录2、查看CIF41的ip地址
http://blog.sina.com.cn/hulx
如果不知道CIF41的ip地址,可以通过PLC内存查看。
http://blog.sina.com.cn/hulx
1、对于CP1H/L/E-30/40/60,有2个插槽:
插在选件板插槽1,IP地址保存在D32155-32156两个寄存器中。
插在选件板插槽2,IP地址保存在D32455-32456两个寄存器中。
第二槽的IP地址还保存在D32303-32304中,而TCP端口号保存在D32301,UDP端口号
保存在D32302,FINS节点地址保存在D32454。
2、而对于CP1H/L/E-14/20,只有1个插槽:
IP地址保存在D32455-32456两个寄存器中。

例如本例中,CIF41插在插槽2,查看D32455=#C0A8,D32456=#0120,对应的IP地址就是192.168.1.32。

原文于2016.10.02发表于新浪博客

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: LabVIEW是一种图形化编程环境,可以帮助用户快速构建各种不同的应用程序。对于欧姆龙OMRON PLCFINS/TCP NJ501 CJ2M的网口TCP通信,我们可以使用LabVIEW来实现。 首先,我们需要在LabVIEW中安装适用于OMRON PLCTCP/IP套件,该套件可以帮助我们与PLC进行通信。接下来,我们需要创建一个TCP/IP客户端,用于与PLC建立连接。 在LabVIEW中,可以通过使用数据流来传输和接收数据。我们可以创建一个用于与PLC通信的循环,该循环包括以下步骤: 1. 建立连接:使用TCP/IP客户端节点来建立与PLC的连接。我们需要指定PLC的IP地址和端口号。 2. 发送命令:通过TCP/IP客户端发送需要执行的命令给PLC。命令可以是读取或写入PLC的数据,如读取PLC的寄存器或在PLC中写入数据。 3. 接收响应:从PLC接收响应数据。响应数据可以是PLC读取的数据或执行结果的确认信息。 4. 断开连接:当通信完成后,我们可以使用TCP/IP客户端节点来断开与PLC的连接。 通过这种方式,我们可以在LabVIEW中实现与OMRON PLCFINS/TCP NJ501 CJ2M的网口TCP通信。LabVIEW提供了丰富的TCP/IP通信功能和界面设计工具,有助于简化通信过程和数据处理操作。 ### 回答2: 在LabVIEW中使用TCP/IP协议与欧姆龙Omron PLC(型号:NJ501 CJ2M)进行通信时,可以按照以下步骤进行配置和实施。 1. 首先,确保LabVIEW的开发环境已经正确安装和配置。 2. 在LabVIEW中,打开“工具”菜单,并选择“网口通讯工具”。 3. 在网口通讯工具中,点击“新建”按钮创建一个新的网口通讯对象。 4. 在通讯对象的属性设置中,选择TCP/IP协议,并输入PLC的IP地址和端口号。确保PLC和计算机连接在同一个局域网内。 5. 建立通讯连接后,可以使用LabVIEW提供的TCP/IP通讯函数进行数据的读取和写入。例如,可以使用“TCP/IP客户端读取.vi”函数来读取PLC中的数据。 6. 在读取数据时,输入PLC中寄存器的地址和长度,通过该函数读取到的数据可以在LabVIEW中进行进一步处理和分析。 7. 在写入数据时,同样需要输入PLC中寄存器的地址和长度,以及要写入的数据值。通过该函数可以将数据写入PLC中,实现对PLC的控制。 需要注意的是,获取PLC的数据和控制PLC之前,要确保已经正确配置了PLC的端口号和地址,并将PLC与计算机通过网线连接稳定。 此外,还需要了解PLC的寄存器地址和功能码的具体设置,以便正确地读取和写入数据。 以上是使用LabVIEW与欧姆龙Omron PLC(NJ501 CJ2M)通过TCP/IP进行通信的基本流程。根据实际需要,还可以进一步扩展和优化这个通信过程。 ### 回答3: LabVIEW是一款强大的图形化编程环境,可以用于各种领域的数据采集、控制和监测等应用。在LabVIEW中,我们可以通过使用TCP/IP协议来实现与欧姆龙OMRON PLC的通信。 要实现LabVIEW与OMRON PLCTCP通信,我们需要知道PLC的IP地址和端口号。首先,我们需要在LabVIEW中创建一个TCP客户端,然后设置该客户端的目标IP地址OMRON PLC的IP地址,目标端口号为PLCFINS/TCP端口。 接下来,我们可以使用LabVIEW提供的TCP相关函数和VI来实现与PLC的通信。例如,我们可以使用"TCP Open Connection"函数来打开与PLC的连接,然后使用"TCP Write"函数向PLC发送指令,同时使用"TCP Read"函数来读取PLC返回的数据。 在与欧姆龙OMRON PLC进行通信时,我们需要使用FINS命令来与PLC进行数据交换。FINSOMRON PLC通信协议的一种,可以实现数据的读取和写入。对于NJ501 CJ2M PLC,我们可以先编写FINS命令,然后将命令发送给PLC进行执行。 总结起来,要实现LabVIEW与欧姆龙OMRON PLCTCP通信,我们需要先设置PLC的IP地址和端口号,然后在LabVIEW中创建TCP客户端,使用相应的TCP函数和VI来实现数据的读取和写入。同时,我们还需要使用FINS命令来与PLC进行数据交换。通过以上步骤,我们可以在LabVIEW中实现与OMRON PLC的通信。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值