原文:http://blog.sina.com.cn/s/blog_539cee190102wr4t.html

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通讯实例供参考。
http://blog.sina.com.cn/hulx
电脑和PLC通讯,通常都是电脑做为客户端,PLC作为服务器端。如果是PLC之间进行通讯,任何一台PLC都可以作为服务器或者客户端。
http://blog.sina.com.cn/hulx
硬件:
     CP1H-X40DR-A 1台
     CP1W-CIF41 1块
     网线、交换机
软件:
    网络调试助手(或者其它网络调试软件)
    CX-Programmer
http://blog.sina.com.cn/hulx
CP1W-CIF41已经配置成ip=192.168.1.32,subnet MASK=255.255.255.0,port=9600。
运行CX-Programmer,在查看窗口添加D0、D1、W210通道和W212.01位用于监控。
http://blog.sina.com.cn/hulx
客户端电脑配置成ip=192.168.1.5,subnet MASK=255.255.255.0。
运行网络调试软件,协议类型选择 TCP Client,远程主机地址处改为PLC地址和相应的端口号,即192.168.1.32:9600,之后即可点连接。发送和接收区都设置成16进制。
http://blog.sina.com.cn/hulx
一,握手命令
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)成功记录。
http://blog.sina.com.cn/hulx
如果发生错误,服务器回应的命令会包含错误码,连接断开,端口立刻关闭。当连接建立之后,不要再次发送这个命令,否则服务器会返回03错误码,即不支持的命令。全部的错误代码如下:
http://blog.sina.com.cn/hulx
十六进制错误码   含义
00000000           正常
00000001           头不是‘FINS’ (ASCII code)。
00000002           数据太长。
00000003           不支持的命令。
00000020           所有的连接被占用。
00000021           制定的节点已经连接。
00000022           未被指定的IP地址试图访问一个被保护的节点。
00000023           客户端FINS节点地址超范围。
00000024           相同的FINS节点地址已经被使用。
00000025           所有可用的节点地址都已使用。
http://blog.sina.com.cn/hulx
二、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:是数量。
http://blog.sina.com.cn/hulx
返回:
   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代表写入成功。
http://blog.sina.com.cn/hulx
例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
http://blog.sina.com.cn/hulx
例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。
http://blog.sina.com.cn/hulx
回应:
   46494E53 00000016 00000002 00000000 C0000200 05000020 00FF2301  0000
2301后面紧跟的0000表示操作成功。
注意在CX-Programmer查看窗口中W212.01的值1后面的(强制)字样。

图4 网络调试助手 强制置位
http://blog.sina.com.cn/hulx

图5 CX-Programmer 强制置位成功

http://blog.sina.com.cn/hulx
例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表示操作成功。
http://blog.sina.com.cn/hulx
例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。
http://blog.sina.com.cn/hulxhttp://blog.sina.com.cn/hulx
回应:
   46494E53 00000016 00000002 00000000 C0000200 05000020 00FF2301  0000
2301后面紧跟的0000表示操作成功。
注意在CX-Programmer查看窗口中W212.01的值0后面的(强制)字样不见了,表示已经成功地取消了强制。
http://blog.sina.com.cn/hulx

图6 网络调试助手 取消强制
http://blog.sina.com.cn/hulx

图7 CX-Programmer 取消强制成功
http://blog.sina.com.cn/hulx


附录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两个寄存器中。
2、而对于CP1H/L/E-14/20,只有1个插槽:
       IP地址保存在D32455-32456两个寄存器中。
http://blog.sina.com.cn/hulx
例如本例中,CIF41插在插槽2,查看D32455=#C0A8,D32456=#0120,对应的IP地址就是192.168.1.32。

【转】欧姆龙OMRON PLC之 CP1H 以太网FINS/TCP通讯实例相关推荐

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

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

  2. 记录一下川崎机器人实现FINS TCP 通讯

    这里写自定义目录标题 记录下项目上使用的通讯 川崎机器人套接字编程 FINS TCP报文分析 握手 读取 写入 川崎机器人通讯源码 记录下项目上使用的通讯 开个坑,在项目中利用川崎机器人自带的TCP实 ...

  3. 【转】欧姆龙OMRON PLC之HostLink通讯协议-FINS命令W字/位操作篇

    CP1E/L/H新增W寄存器后,Host Link命令的"C-模式"命令不能对此寄存器进行操作,需要用到FINS命令来进行. FINS命令格式:@+2字节地址+FA+0000000 ...

  4. 欧姆龙程序PLC案例标准程序 使用欧姆龙CP1H写的脉冲伺服 步进控制程序案例

    欧姆龙程序PLC案例标准程序 使用欧姆龙CP1H写的脉冲伺服 步进控制程序案例+威纶通触摸屏程序+案例文档(电子档). 里面的内容非常实用,注释非常详细. 本案例包含CP1H的4个轴的程序指令进行说明 ...

  5. 【工控老马】欧姆龙PLC Socket发送Fins/TCP命令解析

    欧姆龙Socket tool发送Fins/TCP命令 实验设备:CJ2M-CPU33(PLC) 实验目的:发送Fins/TCP命令读写CJ2M-CPU33的数据 实验步骤: 1. 系统概述,硬件搭建和 ...

  6. 西门子200smart与台达MS300变频器和欧姆龙E5CC温控器通讯程序 触摸屏与plc以太网通讯,PLC本体com口与变频器通讯485口相连,扩展模块SB CM01与欧姆龙温控器485通讯

    西门子200smart与台达MS300变频器和欧姆龙E5CC温控器通讯程序 器件:西门子s7 200 smart PLC,扩展模块SB CM01,台达MS300变频器,欧姆龙E5cc 温控器,昆仑通态 ...

  7. 爱普生机器人与欧姆龙PLC Fins/Tcp协议驱动程序 自己开发,提供项目源码Fins/Tcp协议源码

    爱普生机器人与欧姆龙PLC Fins/Tcp协议驱动程序 自己开发,提供项目源码Fins/Tcp协议源码

  8. AIRIOT物联网低代码平台如何配置欧姆龙omron驱动?

    数据采集与控制是物联网的核心能力之一,AIRIOT物联网低代码平台提供了丰富的驱动,兼容了市面上95%以上的传感器.控制器及数据采集设备等,并且在持续增加中,能够快速.便捷地实现数据采集与控制功能. ...

  9. 欧姆龙CP1H与三菱变频器通讯 CIF01(232串口方式) 欧姆龙CP1H 与变频器modbus 通讯案例

    欧姆龙CP1H与三菱变频器通讯 CIF01(232串口方式)可直接拿来实用了,欧姆龙CP1H 与变频器modbus 通讯案例 采用的器件:欧姆龙CP1H PLC,2个CP1W CIF01(232串口单 ...

最新文章

  1. 由浅入深理解java集合(二)——集合 Set
  2. tftp的c语言实现,GitHub - ideawu/tftpx: TFTP server and client implementation in C
  3. 轻松处理高于平常10倍的视频需求,还能节省60%的IT成本,蓝墨做对了什么?
  4. Python网络爬虫开发实战,关于过程中的异常处理
  5. JAVA NIO 简介 (netty源码死磕1.1)
  6. 将netcat-openbsd替换成为netcat-traditional
  7. android studio | openGL es 3.0增强现实(AR)开发 (1) 建立一个openGL es 3.0开发环境
  8. android 写字板_微软正在Windows 10上的写字板中测试广告
  9. 计算机硬件的五大功能模块,什么是操作系统的五大功能模块
  10. 暑期计算机数学培训心得体会,关于暑期培训心得体会三篇
  11. 电脑远程桌面怎么关闭计算机,远程控制电脑怎么关闭
  12. 云计算机遇与挑战,中国云计算产业发展面临机遇与挑战
  13. 已拦截跨源请求:同源策略禁止读取位于 http:**** 的远程资源。(原因:CORS 头缺少 ‘Access-Control-A
  14. 计算机网络-HTTP协议
  15. NVM安装nodejs的方法
  16. 真正拖垮年轻人认知水平的,是幸存者偏差!
  17. PE市盈率们之间的区别
  18. Android掌中游斗地主游戏源码完整版
  19. TSCLIB.DLL函数库使用说明
  20. 祝学校计算机系的新年贺词,新年祝福语:学校新年贺词祝福短信

热门文章

  1. 嵌入式分享合集117
  2. 网页中嵌入Flash的方法讨论
  3. HTML——Http协议
  4. POJ3322-经典的游戏搜索问题
  5. finale 2014 java_【求助】MC闪退问题,并不是JAVA没装
  6. 西门子HMI触摸屏如何组态当用户注销或自动注销时自动跳转到指定画面?
  7. 如何实现计算机上的文件共享
  8. XMPP中文 XEP-0045: 多用户聊天(二)
  9. android编译openssl静态库.a 动态库.so
  10. 【笔记分享】RS触发器