『7x24小时有问必答』
    做工业自动化的都知道,PLC 和上位机通不通,直接决定了整套设备能不能跑起来。欧姆龙的 Fins/TCP 和 HostLink 这俩协议,现场用得最多,但新手很容易在握手、地址配置上栽跟头。这篇我不搞虚的理论,全按现场调试的流程来,从接线到排错,一步一步说清楚,看完你直接能上手配。

一、Fins/TCP 协议:以太网通信实操
Fins/TCP 是现在主流的,走以太网,速度快(10~100MB/s),最多能连 254 个节点,现场拉根网线就能用,比串口干爽多了。但有个坑:节点地址必须和 IP 末位一致,很多人第一次配就栽在这。
第一步:先搞定通信握手(现场最容易漏的一步)
Fins/TCP 不是插上网线就通,必须先握手 —— 相当于 “互相报个身份”,不然 PLC 不认你发的命令。
1. 客户端发握手请求(电脑→PLC)
你得发个 20 字节的命令帧,格式我直接给现成的,改改节点地址就能用:
46494E53 000000000000000 00000000 00000005
前 4 个 “46494E53” 是固定的,就是 “FINS” 的 ASCII 码,改了就报错;
0000000C 是帧长度(12 hex = 20 字节),不用动;
最后一组 “00000005” 是你电脑的节点地址 ——必须和电脑 IP 末位一样!比如你电脑 IP 是 192.168.1.5,这里就填 05。
2. PLC 给响应(PLC→电脑)
如果握手成功,PLC 会回一个 24 字节的帧:
46494E53 00000010 00000001 00000000 00000005 00000020
响应码 “00000001” 就是 “成了” 的意思;
最后一组 “00000020” 是 PLC 的节点地址(32 decimal),记下来!后面发命令要用到。
现场踩坑点千万别重复发握手命令!我见过有人连不上,就反复点发送,结果 PLC 直接返回 00000003 错误(不支持的命令),还把端口关了,得重启 PLC 才恢复。
第二步:错误码排错(现场调试速查)
握手失败别慌,看 PLC 回的错误码,对应下面的问题改就行,比瞎试快多

补充个小技巧:连不上先查三件事:①电脑和 PLC 是不是同一网段(比如都是 192.168.1.X);②防火墙关没关(尤其 win10/11,容易挡 9600 端口);③节点地址和 IP 末位对不对(强制要求,没商量)。

第三步:FINS 帧读写数据(拿实际案例说)
握手成了,就能发命令读写数据了。FINS 帧格式是 “头 + 长度 + 命令 + 内容”,长度 12~2012 字节,现场常用的就是读 DM 区、写 W 区、强制位,我各举一个实际案例,你照着改地址就行。

案例 1:读 DM0、DM1(现场查参数常用)
发命令帧(读 2 个通道):
46494E53 000000100000002 00000000 80000200 20000005 00FF0101 82000000 0002
20000005:前面记的 PLC 节点 20,电脑节点 05(别搞反!);
00FF0101:0101 是 “读” 的操作码,固定;
82000000:82 代表 DM 区,0000 是起始地址(DM0);
0002:读 2 个(DM0 和 DM1)。
PLC 回的帧(成功的话):
46494E53 000000100000002 00000000 C0000200 05000020 00FF0101 00001234 5678
后面的 1234 是 DM0 的值,5678 是 DM1 的值,直接记下来就行。
案例 2:写 W210=0388(设参数常用)
发命令帧
46494E53 000000100000002 00000000 80000200 20000005 00FF0102 B100D200 00010388
00FF0102:0102 是 “写” 的操作码;
B100D200:B1 是 W 区代码,00D2 是地址(hex00D2=210,就是 W210);
00010388:写 1 个数据,值是 0388。
PLC 回帧(成功就回这个):
46494E53 00000016 00000002 00000000 C0000200 05000020 00FF0102 0000
最后是 0000,就是 “写进去了”,没毛病。
案例 3:强制 W212.01=On(现场调试临时控点)
有时候要临时开个点测试,就用强制:
发命令帧
46494E53 000000100000002 00000000 80000200 20000005 00FF2301 00010001 3100D401
00FF2301:2301 是 “强制” 的操作码;
00010001:1 个点,0001 是 “置位”(On);
3100D401:31 是 W 位代码,00D401 是地址(hex00D4=212,01 是位,就是 W212.01)。
查结果:打开 CX-Programmer,看 W212.01 后面带个 “(强制)”,就说明成了,测试完记得取消强制(把 0001 改成 FFFF 就行)。
二、HostLink 协议:串口通信老办法
HostLink 是老协议了,走 RS-232C 或 RS-422,1 对 1 最远 15 米,1 对多最远 500 米,最多连 32 台 PLC。现在新项目少用,但老设备改造还得会,它命令是 @开头的 ASCII 码,记几个常用的就行。
常用命令:写 W 区、读 W 区、强制位1. 写 W210=0388(PLC 地址 0)
发命令
@00FA0000000000102B100D2000001038873*CR
@00:PLC 地址 0(现场多台 PLC 时,地址从 0 开始编);
B1:W 区代码;
00D200:W210 的地址(hex00D2=210);
0388:要写的值;
73:校验码(不用自己算,串口工具能自动生成)。
PLC 回
@00FA00400000000102000040*CR
中间有 0000,就是写成功了。
2. 强制 W212.01=On
发命令
@00FA0000000002301000100013100D40104*CR
00010001:1 个点,0001 是置位;
31:W 位代码;
00D401:W212.01 地址。
现场提醒:HostLink 用 RS-422 时,总线两端必须接 120Ω 终端电阻,不然传远了会丢包,我之前在车间 300 米的线,没接电阻一直断,接上就好。
三、常见网络配置问题
网络配置:以太网选件板怎么设?
不管用哪种协议,PLC 的 IP 得先设对。欧姆龙以太网选件板(比如 CIF41)默认 IP 是 192.168.250.1,现场改 IP 很简单,用浏览器就能设:
1. 改 PLC IP 步骤(现场实操)
(1)电脑连 PLC 的网口,把电脑 IP 改成 192.168.250.X(X≠1);(2)打开浏览器,输http://192.168.250.1/C00.htm,密码是 “ETHERNET”(全大写,别写错);
(3)进 “系统设置”,改 IP(比如 192.168.1.32),子网掩码 255.255.255.0;
(4)关键一步:FINS 节点地址设成 IP 末位(32),不然握手肯定失败;
(5)点 “传送” 保存,再点 “重启”,等一会就生效了。
2. 忘了 PLC IP?这么查!
现场经常遇到不知道 PLC IP 的情况,不用慌,查 PLC 的寄存器就行:
机型 CP1H/L/E-30/40/60:
选件板插插槽 1:IP 存在 D32155-D32156;
插插槽 2:IP 存在 D32455-D32456;
机型 CP1H/L/E-14/20:只有 1 个插槽,IP 在 D32455-D32456。
举例:查 D32455=16C0A8,D32456=160120
C0A8 转十进制是 192.168,0120 是 1.32,所以 IP 是 192.168.1.32,直接用这个连就行。

四、最后:协议怎么选?给现场的建议

过来人的经验
    新项目优先用 Fins/TCP,后期加设备方便,不用重新布线;
    关键设备建议做 “协议冗余”—— 比如主用 Fins/TCP,备用 HostLink,断一个还有另一个能用;
    不管用哪种,通信参数(IP、节点地址、端口)一定要记在设备标签上,不然下次维护找不到。

五、C# Winforms代码
我会在下一篇文章链接里面放出来,这里会太占空间,请留意。

这套流程我在现场用了无数次,从接线到排错都覆盖到了。你第一次配的时候,建议先在办公室用电脑连 PLC 测试,没问题再拿到现场接设备,能少走很多弯路。如果遇到奇怪的错误,评论区问我,咱们一起琢磨!

用得上的话大家帮点点关注收藏一下。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码