1、欧姆龙PLC之CP1H以太网FINS/TCP通讯实例CX-OneCX-OneFINSUDP/TCP 指令Ethernet选件板 型号:CP1WCIF41CPIH/CPIL(10 点的 CP1L 除外)通信选件积CP1H上面的选件板插槽可以插入1-2块CP1W-CIF41模块,系统即具有了以太网 功能,也可以使用CP1W-EXT01和CJ1W-ETN21以太网扩展模块来组态,用于在 CX-Programmer软件下的编程或监控,也可以和其它网络设备(可以是上位机, 也可以是其它的PLC或者是带有以太网接曰的触摸屏等)进行通讯。CP1W-CIF41Ethemet图 1 CP1W-CIF41图 2
2、ETN21就像UDP的TCP之间的特性对比一样,和FINS/UDP方式相比,FINS/TCP具有更 好的可靠性,但是不如前者的效率高。不可以使用广播,同时最多16个连接。 本文给出FINS/TCP通讯实例供参考。电脑和PLC通讯,通常都是电脑做为客户端,PLC作为服务器端。如果是PLC之 间进行通讯,任何一台PLC都可以作为服务器或者客户端。硬件:CP1H-X40DR-A 1 台CP1W-CIF41 1 块网线、交换机软件:网络调试助手(或者其它网络调试软件)CX-ProgrammerCP1W-CTF41 已经配置成 ip=192. 168. 1. 32, subnet MASK=255. 2
3、55. 255. 0, port=9600o运行CX-Programmer,在查看窗口添加DO、DI、W210通道和W212. 01位用于监 控。客户端电脑配置成 ip=192. 168. 1. 5, subnet MASK=255. 255. 255. 0。运行网络调试软件,协议类型选择TCP Client,远程主机地址处改为PLC地址 和相应的端口号,即192. 168. 1.32:9600,之后即可点连接。发送和接收区都设 置成16进制。,握手命令1、客户端向服务器发送命令000000000这个命令长20字节,分成5组4字节。 分别是:头(FINS) + 长度(HexOC) + 命令(0
4、0000000) + 错误码(00000000) + 客 户机节点地址。46494E53是FINS的ASCII码值,即命令头。0000000C是命令长度20o00000000是命令码。00000000是错误码。00000005是客户节点地址,即电脑IP地址的末位。在发送区输入:46494E53 0000000C 00000000 00000000 00000005点击发送,PLC立即回应:46494E53 00000010 00000001 00000000 00000005 00000020到此我们己经成功地完成了第一步!接下来需要的就是之前介绍过的HostLink 协议里面FINS的知识了
5、。图3网络调试助手握手成功2、这个是服务器端(PLC)向客户端(电脑)发送的命令00000001 o这个命令 长24字节,分成6组4字节。分别是:头(FINS) +长度(HexlO) +命令(OOOOOOO1) /错误码+客户机节点地址 +服务器地址。十六进制错误码含义00000000000000010000000200000003000000200000002100000022000000230000002400000025二、FINS帧发送命令 如果向服务器发送FINS帧, 因此命令长度可变,上面的命令错误代码为0,客户端ip地址05已被服务器32 (hex20)成功记录。 如果发生错误,
6、服务器回应的命令会包含错误码,连接断开,端口立刻关闭。当 连接建立之后,不要再次发送这个命令,否则服务器会返回03错误码,即不支 持的命令。全部的错误代码如下:正常头不是FINS (ASCII code) o数据太长。不支持的命令。所有的连接被占用。制定的节点已经连接。未被指定的IP地址试图访问一个被保护的节点。 客户端FINS节点地址超范围。相同的FINS节点地址己经被使用。所有可用的节点地址都已使用。就要用到这个命令。由于FINS帧长度是12-2012,头(FINS) +长度+命令(00000002) +错误码+FINS帧。FINS命令帧内容可参考欧姆龙OMRON PLC之HostLink
7、通讯协议-FINS命令W 字/位操作篇,里面有存储区代码和操作代码的内容。例2-1、读DM0开始的2个通道:发送:20000005: 20是目标地址,05是源地址;00FF0101 : 0101 是读操作;82000000: 82是DM存储区代码,000000是起始地址;0002:是数量。返回:46494E53 0000001A 00000002 00000000 C0000200 05000020 00FF0101 00001234 567800001234: 0000代表操作成功,1234是读回的第一个字,即D0=Hexl234,5678: Dl=Hcx5678例2-2、W210寄存器写入
8、Hex0388:发送:46494E53 0000001C 00000002 00000000 80000200 20000005 00FF0102B100D200 0001038820000005: 20是目标地址,05是源地址;00FF0102: 0102是写操作代码;B100D200: B1 是 W 字代码,00D2 是起始地址,Hex00D2=212,;00010388:是写入数量,0388是写入首个内容;回应:46494E53 00000016 00000002 OOOOOOOO C0000200 05000020 OOFFO1O2 00000102后面紧跟的0000代表写入成功。例2
9、-3、W210寄存器读取:发送:46494E53 OOOOOO1A 00000002 OOOOOOOO 80000200 20000005 OOIFOIOIB1OOD2OO 000120000005: 20是目标地址,05是源地址;00FF0101: 0101是读操作代码;B100D200: B1 是 W 字代码,00D2 是起始地址,Hex00D2=212,;0001:是读取数量。回应:46494E53 00000018 00000002 OOOOOOOO COOOO2OO 05000020 OOIFOIOI000003880102后面紧跟的0000代表读取成功,W210=Hex0388例
10、2-4、强制 W212. 01=0n:发送:46494E53 OOOOOO1C 00000002 OOOOOOOO 80000200 2000000500FF230100010001 3100D40120000005: 20是目标地址,05是源地址;00FF2301: 2301是强制操作代码;00010001:前面的0001是数量,后面的0001代表强制置位操作;3100D401: 31 是 W 位代码,00D401 是起始地址,Hex00D4. 01=212. 01 o 回应:46494E53 00000016 00000002 OOOOOOOO C0000200 0500002000FF2
11、30100002301后面紧跟的0000表示操作成功。注意在CX-Programmer查看窗口中W212. 01的值1后面的(强制)字样。图4网络调试助手强制置位图5 CX-Programmer强制置位成功例 2-5、强制 W212. 01=0ff :发送:46494E53 OOOOOOIC 00000002 00000000 80000200 2000000500FF230100010000 3100D40120000005: 20是目标地址,05是源地址;00FF2301: 2301是强制操作代码;00010000: 0001是数量,0000代表强制复位操作;3100D401: 31 是
12、W 位代码,00D401 是起始地址,Hex00D4. 01=212. 01 回应:46494E53 00000016 00000002 00000000 C0000200 0500002000FF230100002301后面紧跟的0000表示操作成功。例2-6、取消W212.01强制:发送:46494E53 OOOOOOIC 00000002 00000000 80000200 2000000500FF2301 0001FFFF 3100D40120000005: 20是目标地址,05是源地址;00FF2301: 2301是强制操作代码;0001FFFF: 0001是数量,FFFF代表取消强
13、制操作;3100D401: 31 是 W 位代码,00D401 是起始地址,Hex00D4. 01=212. 01 o 回应:46494E53 00000016 00000002 00000000 C0000200 0500002000FF230100002301后面紧跟的0000表示操作成功。注意在CX-Programmer查看窗口中W212. 01的值0后面的(强制)字样不见了, 表示己经成功地取消了强制。网络调试助至 1协诙炎23| TCP Chen* H(2本地主机地址|132.168 1 5 532343运程主机地址|192 168 1 32 9600廖晰开 I挫收区设羞I- 擒收转
14、向文件. .Q自动换行丘示 r as示投收时向Q十六逐制昱示 r科伟播收5?示发送区设近L有用文件数1K源 厂自动I发谖附加位I自汕发该应窖包.P技+六退制发送 r-发送冏MB riooo -网络数据接收(Receivefrom19200001O00OOOO0100OOOOOO00OOOO050000OO201 A00000002000000OOco0002OO0500OO200078160000OO020000OOOOco0002OO0500OO2000168. 1.32 .930】20000020000OOCO00OO0500000000020000000500000000FF0000OO
15、co00OO050000FF0000OO00OO000046494E53 OOOOOOIC 00000002 OOOOOOOO 80000200 20000005 OOFF2301I001FFFF 31O0D4O1夏位计裁I以TX:232RX:210Tj9以太网选件板CP1W-CIF41图6网络调试助手取消强制J【j jlwx.vczMjTriPLC名称名.地址值(二踊)| -新 PLC1DOCHANNEL (十六进制,通道)12340001 0010 0011 0100新 PLC1D1CHANNEL (十六进制,通道)56780101 0110 0111 1000=新 PLC1W210CHA
16、NNEL (+A1,通道)0388-i-7iJ0000 0011 1000 1000新 PLC1W212.01BOOL (On/Off,接制11shee11 人 sheet2 入 sheet3 /11 | 需要帮助,清按F1新PLC1(网络:0,节点:0)-监视模式 力图7 CX-Programmer取消强制成功附录1、CIF41配置的主要操作步骤1、硬件设置及接线槽位对应DIP开关拨打ON,如插在第1槽DIP开关地4位置ON,如插在第2槽 DIP开关地5位置ON,表示Toolbuso使用网线连接PC与CIF41。Web功能用于设定CIF41初始IP地址2、以太网选件板IP地址设置PC打开浏览
17、器,访问默认设定网页:. 168. 250. 1/C00. htm;输入密 码:ETHERNET (大写),点击【登陆】按钮进入设置界面。然后点击【设置】中【系统设置选项进入系统设置界面,设置IP地址、子网掩码、FINS节点地址 一定要设置为ip地址的最低位,点击【传送】,然后点击【重启】按钮,即可。3、PC电脑IP地址设置PC与CIF41的IP地址需设置为同一网段,末位不一致。子网掩码设置默认255. 255. 255. 0附录2、查看CIF41的ip地址如果不知道CTF41的ip地址,可以通过PLC内存查看。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两个寄存器中。例如本例中,CIF41插在插槽2,查看D32455=#C0A8, D32456=#0120,对应的IP 地址就是 192. 168. 1.320