ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

欧姆龙PLC EtherNet/IP通讯配置全指南:从标签集到数据映射

欧姆龙PLC EtherNet/IP通讯配置全指南:从标签集到数据映射 一位搞了十几年自动化现场的老工程师最怕听到的一句话就是“上位机连不上PLC了”。尤其是遇到欧姆龙这种自带 EtherNet/IPEIP协议的设备配置说简单也简单说复杂也复杂。简单是因为欧姆龙把大部分通讯底层都封装好了复杂则在于EIP通讯不光是PLC这一头的事它牵扯到上位机软件、网络交换机、IP地址规划、标签数据映射甚至还有扫描器Scanner和目标设备Target的“主从”关系。我这次要讲的就是完完整整的欧姆龙PLC EIP通讯配置方法。先说清楚一个概念EIP 是 EtherNet/IP 的简称它基于标准的以太网物理层但应用层用的是 CIPCommon Industrial Protocol协议。这意味着你可以用普通的网线、交换机就能搭建一套工业级的实时通讯网络。这篇文章适合刚入行想搞懂通讯原理的电气工程师也适合现场设备已经跑起来但还对配置逻辑“一知半解”的朋友。我会把软件侧、硬件侧、数据映射、常见报错几大块全部拆开揉碎讲一遍争取你从头看到尾自己能独立做一次完整的EIP通讯。1. 为什么选EIP而不是其它通讯方式很多人在选通讯协议时会在 EIP、Profinet、Modbus TCP 之间犹豫。我自己的体会是EIP在欧美系设备中普及率极高尤其在汽车焊装线、轮胎生产线、物流分拣线上几乎成了标准配置。1.1 EIP 的核心优势到底是什么EIP 最吸引人的一点是它用的是标准以太网硬件网线、交换机、水晶头这些材料成本极低随便一个五金店都能买到工业级网线不像某些专用总线需要定制接头和专用电缆那成本完全不是一个量级。另一个优势是它支持同时传输“显式消息”和“隐式消息”。显式消息就是那种你随时发起、随时响应的读写请求比如上位机读一个PLC内部寄存器这种消息不追求极快速度但要求灵活隐式消息则是PLC和PLC之间、或者PLC和驱动器之间周期性交换的实时数据它走的是UDP端口占用的带宽固定速度极快真正做到了“实时响应”。这也是EIP能跟传统串口通讯拉开差距的关键一点。但要注意EIP 虽说物理层是标准以太网但在实际现场千万别直接拿办公网用的交换机去接工业设备。工业EIP通讯对数据包的实时性要求高最好选用支持 IGMP Snooping 和 QoS服务质量的工业交换机。我见过有工厂为了省成本把EIP设备直接接到办公网络交换机上结果高峰期一开视频会议PLC通讯就偶发断开排查了三天才找到根因。1.2 EIP 与其它工业以太网协议的取舍很多人会问既然EIP这么好为什么还是有大量的生产线在用 Profinet这就涉及设备生态的问题。如果你是欧姆龙PLC要和发那科机器人通讯或者跟小原Obara的焊钳控制器SIV32通讯那你就得看对方支持什么协议了。发那科默认走工业以太网时通常用EIP或者Profinet小原SIV32系列则很多场合用的是Profinet但部分型号也能支持EIP。在实际项目里你是没法强行要求所有设备都“听你的”的。所以我在选型时通常遵循一条原则协议的选择不是PLC厂商决定的而是现场第三方设备决定的。如果你的上位机是罗克韦尔AB的那EIP是首选因为EIP本来就是罗克韦尔联合欧姆龙等厂商推的如果你的PLC是西门子的那Profinet是当仁不让的选择如果你是做数据采集的Modbus TCP可能更简单直接。欧姆龙之所以在EIP上做得如此成熟很大程度上是因为它要把自家的PLC、伺服、视觉、温控器全部无缝接入同一个网络这是一个很聪明的策略。2. 欧姆龙PLC EIP通讯配置的工具选型想要配置EIP通讯光靠PLC本体是不行的你必须有匹配的软件工具。欧姆龙PLC产品线比较广不同系列的配置软件是不一样的很多新手第一次就倒在“到底用哪个软件”这一步上。2.1 Sysmac Studio 与 CX-Programmer 的选择欧姆龙目前在主推的是 NJ/NX 系列配套软件是 Sysmac Studio。这个软件功能非常强大集成了PLC编程、EIP配置、运动控制、HMI模拟、甚至视觉配置。如果你用的是NJ501或NX1P2这类机器自动化控制器那么你的EIP配置必须在Sysmac Studio里完成因为新版固件的EIP标签集是直接在软件里做数据管理的。如果你的现场还在用老款的 CP1H、CJ2M、CS1D 这些那你就得用 CX-Programmer 了EIP配置是通过 CX-Integrator 这个附加组件去做的。这两套软件的操作界面完全不一样连IP配置、标签数据映射的入口都不同千万不能混用。我自己一开始是用CX-Programmer入门的后来项目升级到NX系列后花了大半个月才算把Sysmac Studio的EIP配置逻辑完全顺过来。两个软件的思维模式很不一样老款软件是“先有内存地址再绑定到标签”新软件是“先有变量标签再映射到物理通讯”。2.2 软件安装及环境配置要点安装Sysmac Studio的时候有几个坑是必须要提醒的。第一软件版本一定要跟你PLC固件版本匹配我见过有人拿Sysmac Studio V1.10去连接固件版本较新的NX1P2结果项目识别出来全是问号通讯配置界面直接打得开但配置写入失败。建议装新版软件的SE标准版或者直接装最新版V1.60以上现在的版本号可能更高固件版本也顺手升级到官网提供的稳定版。第二安装时一定要退出杀毒软件和系统防火墙否则驱动装不上后面连PLC的时候会一直报“无法找到设备”。因为Sysmac Studio要安装专用的USB驱动程序虽然新版系统能自动识别大多数驱动但防火墙干扰是时常发生的事情。第三系统建议用Windows 10专业版或者Windows 11专业版安装路径中不能有中文字符否则软件运行时偶尔会出现莫名奇妙的崩溃。这一条是真的踩过坑的当初图省事安装在D盘的“欧姆龙软件”文件夹里结果每次打开工程文件都有概率报内存错误。2.3 需要用到的硬件准备软件只是工具硬件才是通讯的基础。配置EIP通讯之前至少要准备一个网口至少备用两个网口的PLC。现在NJ/NX系列最多有内置两个以太网口的型号一个是EIP工业以太网口一个通常用来做EtherCAT或者普通TCP/IP这个一定要分清。很多初学者把EIP网线插到EtherCAT网口上结果IP怎么设都Ping不通那是因为人家走的主站是EtherCAT专用口根本不处理常规EIP报文。除了PLC本体还要准备一根质量可靠的超五类或六类屏蔽网线最好是带金属屏蔽层的工业网线。之前有项目用普通办公网线现场电机一启动通讯直接掉线换成屏蔽双绞线后问题立刻解决。线材这类东西看着不起眼实际影响特别大。3. EIP通讯前期的网络规划与IP地址分配在正式打开软件配置之前我必须先把网络规划这个环节单独拿出来讲一讲。我看到太多现场人员不加规划地随便设IPPLC设192.168.0.10组态软件工控机设192.168.1.55两个子网都不同结果Ping不通还在那搞半天软件配置最后发现是网络段错了白白浪费时间。3.1 IP地址、子网掩码、网关的专业规划EIP通讯对于IP地址的要求跟普通办公网络完全一样只是更强调了稳定性。正常情况下PLC和上位机或者扫描器必须处于同一个网段内比如说 PLC 的IP是 192.168.250.1上位机最好就设 192.168.250.10-192.168.250.254 之间并且子网掩码都要填 255.255.255.0。网关的设置要根据现场来决定。如果PLC只需要跟同一局域网内的设备通讯网关可以不填但如果你的上位机在另一个网段要通过路由器访问PLC那么PLC的默认网关必须填路由器的IP地址。这里面有个容易忽略的点EIP 隐式通讯走的是 UDP数据包通常不会跨三层网络去做广播跨网段会造成实时性严重下降甚至通讯失败。所以对于EIP的隐式连接哪怕是经过路由器我也强烈建议你改为二层交换网络不用路由。IP地址在分配时一定要做成一张地址规划表哪个设备用哪个IP、占哪个端口、备注是什么全部记录清楚。我见过一个车间二十多台设备IP地址全是默认值后来新增了一台设备地址冲突直接把一条生产线的通讯全部搞瘫、现场停机十几分钟排查。3.2 连接方式与网络拓扑设计常见的EIP网络拓扑就两种星型连接和菊花链连接。星型连接最为推荐所有EIP设备PLC、伺服驱动器、视觉传感器、机器人控制器直接连接到一台26口或者48口的工业交换机上结构清晰、故障定位方便哪个节点掉线拔网线单独测试就行。菊花链连接则是在设备数量多、交换机端口不够的时候才会考虑比如A设备两个网口一个进一个出串联下一台设备这种接法省交换机但一旦中间某台设备断电后面的设备全部掉线。我个人经验是给关键设备预留一个调试网口。欧姆龙NX系列的CPU单元往往自带一个“调试用”的百兆口可以用来做程序下载、在线监控而另一个EIP网口专门跑生产数据这样可以避免调试时一时手误把生产通讯弄断开。4. 核心实操在 Sysmac Studio 中配置 EIP 通讯接下来我们进入核心环节——实际操作。这里我以欧姆龙 NJ501-1500 系列 PLC 配合上位机做 EIP 通讯为例逐步演示一遍。上位机我们用一套支持EIP主站的组态软件或者直接用欧姆龙官方的NS系列触摸屏或者第三方的通讯库来模拟。但不管对端是什么EIP配置的底层逻辑是一样的。4.1 新建工程及开启EIP通讯功能第一步打开 Sysmac Studio点击“新建工程”选择你的PLC系列、CPU类型以及固件版本。如果你是第一次使用建议先选择“使用模拟器”这样可以在没有硬件的情况下熟悉界面但我这里为了实操直接选真实PLC。工程建立好之后确认左侧“多视图浏览器”面板中能看到“EtherNet/IP”条目。在NJ/NX系列中EIP配置是作为一个独立节点存在的双击或右键点击它就可以进入“EIP”的配置界面。在这个界面里第一件事就是设置PLC本体的IP地址。这个IP就是前面说的规划的IP例如 192.168.250.1子网掩码 255.255.255.0。如果找不到这个“EtherNet/IP”条目跟你透一个底大概率是你建工程的时候选的CPU型号选错了。NX1P2和NX102系列内置EIPNJ501系列内置EIP但NJ101系列有些没有内置EIP老款的CJ2M则需要加装EIP通信单元如CJ1W-EIP21它在Sysmac Studio中显示为一个扩展单元。这些型号差异务必在选型时看清楚。注意Sysmac Studio 中 EIP 节点配置完成后必须执行“传送到PLC”才会真正把IP等参数写入PLC硬件。如果只下载程序而不下载“配置和设置”IP是不会变的。很多人在这一步卡住以为PLC没有IP或者死机了其实只是没把配置传到位。4.2 创建EIP标签集Tag SetEIP通讯跟传统寄存器地址通讯最大的不同点就是引入了“标签集”的概念。你可以把标签集理解成一个“快递包裹”你要把哪些数据打包发给对方把这个包裹名称起好装上你需要的数据项然后对方只要知道这个包裹名即目标标签就能按格式领取里面的数据。在Sysmac Studio的EIP配置界面中找到“标签集”右键“添加”。一个标签集里能放多个“标签”。这些标签可以是全局变量、可以是数组、也可以是结构体中的成员。举个例子你需要把PLC里的速度值、温度值、启停状态打包发给上位机那就建一个叫“DataToHMI_Send”的标签集里面添加三个标签一个指向D100速度值一个指向D200温度值一个指向W0.00启停状态位。标签集的名称最好用英文字母不要用中文也不要带特殊字符。因为EIP标准对标签名字符集是有限制的有的第三方主站遇到中文标签会直接报错或者显示乱码。欧姆龙官方虽然支持Unicode但为了通用性老老实实用ASCII字符命名最保险。4.3 配置连接Connection与目标IP有了标签集还不够EIP真正要建立的是“连接”。所谓连接就是主动方通常是主站和被连接方这里就是PLC之间建立起一对逻辑通路。在Sysm ac Studio中你需要找到“连接设置”或者“连接”这一选项卡在里面添加一个新的EIP连接。配置连接时要指定是“目标设备”还是“发起方”。如果你这个PLC只是被读取数据那就是“目标设备”等待主站来连接如果PLC本身是主站要去主动读取其它从站设备那它就是“发起方”。欧姆龙PLC两者都可以当。更细致的连接参数有RPI请求数据包间隔、超时时间、传输类型通常是RPI默认设为10ms或20ms超时设为1000ms或2000ms。RPI越短数据实时性越高但对网络压力也越大一般生产线10ms足够用了。4.4 编写程序调用EIP通讯指令标签集和连接都配置好以后还需要在PLC程序中调用相应的EIP通讯指令。Sysmac Studio里常见的功能块有“CMnd”显式消息通讯基于TCP和“EC_IO”隐式数据通讯基于UDP。可能你会问不是配置完标签集就能交换数据吗为什么要写程序指令这里澄清一个概念EIP标签集的配置是静态数据声明相当于你告诉系统“我有这些数据可以被别人读”。但如果你的PLC想让某个标签的值在特定条件下才更新或者在通讯出错时能够手动重连那你必须通过程序去调用指令来控制连接的建立和断开。常见的做法是在一个周期任务里调用“EC_IO”功能块这个功能块需要传入的数据是连接句柄、执行条件、超时时间等。收到TRUE触发时PLC才真正去建立这个隐式连接。很多工程师配置完标签集后没有写任何一条启动连接的指令结果通讯一直处于假死状态就是这个原因。这块内容比较抽象我附一个最低限度的调用逻辑在周期性任务中添加EC_IO输入参数中“Execute”给一个常开触点比如常ON的总是TRUE的继电器目标连接句柄填你配置好的那一个然后“Done”和“Error”管脚输出到两个内部位变量用来监控通讯状态。这样只要PLC一运行连接就会自动维持上位机随时可以读写。5. 数据映射EIP通讯中的核心数据区规划如果把EIP配置比作修一条高速公路那么标签集和连接就是收费站和车道而数据映射就是最后一公里的货物分拣区。这部分往往最能体现一个工程师的基本功。5.1 全局变量与映射地址的建立在Sysmac Studio中默认情况下的变量是全局变量它的存储类型可能是“变量”或者“直接地址”。我建议在EIP通讯中尽量用有业务含义的变量名而不是直接用D区地址。因为EIP标签集引用变量名时数据含义会非常直观比如你引用了一个叫做“Robot_Speed”的变量上位机工程师一看就知道这是机器人速度如果你只是引用了D100那对方还得对照注释才知道这是什么。但这并不意味着直接地址完全不能用。如果你的PLC程序是从CX-Programmer迁移过来的里面用了大量D区、W区、CIO区那你也可以把这些地址当成变量去引用。只是在数据映射时要注意字节序问题——EIP通讯默认是大端序Big Endian欧姆龙PLC的内部数据如果是小端序存储就可能在通讯时出现“高低字节对调”的坑。解决方案有两个要么在PLC程序里做字节交换指令要么让上位机通讯库在解析时自行交换字节我个人推荐后者因为改动上位机代码往往比改动经过验证的PLC逻辑更容易犯错。5.2 不同数据类型在EIP中的尺寸计算做一个简单的数据规划比如要从PLC发8个数据到机器人两个REAL32位浮点、三个INT16位整数、两个BOOL位、一个STRING字符串。那么在配置标签集时每个标签占用的字节数是不一样的。REAL4字节占EIP标签中的4个字节INT2字节占2个字节BOOL在EIP中通常按位打包但为了对齐很多主站会把一个BOOL标签自动扩展为1个字节甚至是4字节的DINTSTRING占用其实际长度对应的字节数如果不注意字节对齐上位机解析出来的数据偏移量跟你预想的完全对不上比如你想着第一个标签是温度值在偏移0-3结果第二个标签因为对齐被放到了偏移8那上位机按你原定的数据表读出来就是乱码。强烈建议最好在标签集配置界面中查看“数据尺寸”这个汇总值把它记录在通讯协议文档里发给对端工程师。5.3 标签集通讯周期与数据一致性数据映射还有一个关键概念叫做“数据一致性”。在生产线上如果上位机某次读取的这批数据中第1毫秒的温度还是旧的第2毫秒的速度已经更新了这样就会导致逻辑判断出错。EIP协议本身支持“数据传送完成”的机制但需要你在PLC配置中开启“多产数据”的锁存功能。在Sysmac Studio的标签集属性中有一项叫“通讯周期”。默认情况下标签集是“变化时发送”也就是当数据变化的时候才发送。但对于需要保证一致性的数据建议改为“周期发送”并且设置一个固定的发送周期比如10ms一次。这样上位机可以保证每次刷新拿到的一批数据来自同一批时间戳。我遇到过真的因为“变化时发送”导致停产的事故。当时一条轮胎检测线PLC发送一组测量数据给视觉检测软件由于数据变化时发送某个数据长时间不变时就再也没有刷新视觉软件按照旧数据判断误杀了好几条正常轮胎还以为是设备故障。最后改成周期发送才彻底解决。6. 实操过程对接第三方设备含伺服、机器人、HMI配置好EIP通讯最终是要对接到具体设备上的。这里我结合一些项目里常见的对接场景发那科机器人、小原SIV32、或者欧姆龙自家伺服讲一下实际对连的过程。6.1 欧姆龙PLC对接发那科机器人的EIP通讯发那科机器人是一款特别常见的工业设备在很多汽车生产线上它既要干搬运、又要干焊接。如果在同一个工位上欧姆龙PLC需要控制发那科机器人的启停同时读取机器人的位置和状态往往就需要EIP通讯。第一步你需要在机器人侧进入“主机通讯”菜单选择EtherNet/IP设置。将机器人的IP设在与欧姆龙PLC同一网段比如PLC是192.168.250.1机器人设192.168.250.3。第二步在机器人侧的配置里给欧姆龙PLC留出“输入输出区域”。发那科机器人的EIP从站地址映射一般是数字量I/O和寄存器数据合并成一个大数组通过EIP发给PLC。这时候你要在欧姆龙PLC的EIP配置里增加一个“设备”节点填入发那科机器人的IP地址然后配置该节点的输入长度、输出长度、设备ID等参数。第三步在欧姆龙侧使用EC_IO功能块建立连接。你可以设定PLC每10ms从机器人读取一定数量的字节到PLC的数据区比如把机器人发来的前10个字节映射到D500-D504作为机器人状态字。同时把PLC的指令区写到机器人侧机器人侧程序再从它的EIP输入区分析这个指令并执行。这里有一个很大的坑发那科机器人的EIP通讯需要机器人侧设定好RACK号和SLOT号默认值可能跟欧姆龙预期的不一致必须两端配置完全一致才能建立连接。如果通讯建立不了优先去看机器人侧的错误代码很多情况是EIP组态文件版本不匹配导致的。6.2 欧姆龙PLC对接小原SIV32焊钳控制器小原SIV32是一款专业的电阻点焊控制器它的通讯接口很灵活常见支持Profinet和EIP。如果你手上的SIV32支持EIP那对接方法和上面发那科的逻辑是一致的PLC作为主站ScannerSIV32作为从站Adapter。连接时需要注意SIV32的“装配对象”Assembly Object长度。通常焊钳控制器的EIP装配对象会定义输入输出各占多少字节比如输出128字节、输入128字节或64字节这个长度在PLC侧配置EIP连接时必须完全一致否则会出现“连接错误”或者“超出最大长度”。之前有另一个项目的朋友跟我说他们跟小原SIV32走Profinet很顺跟欧姆龙走EIP一直连不上。我远程看了下日志发现问题是PLC侧配置的“输出连接长度”比SIV32实际的EIP组态长度多了4个字节在欧姆龙软件里没报错但SIV32端直接拒绝对接。这里要特别强调不同厂商的EIP实现对数据长度是否允许超出是有不同宽容度的欧姆龙有时候会自动补零但第三方设备不一定买账你最好严格按EDS文件里的声明长度来配置。顺带说一句如果你手上的第三方设备只支持Profinet而不支持EIP那你就要在欧姆龙PLC里配置Profinet主站了。新版NX/NJ系列部分型号支持加装Profinet通信模块然后接入Profinet从站设备。两种协议都不能说谁取代谁只是在项目初期就应明确设备的协议栈免得后期再增加转接网关徒增故障点和成本。6.3 欧姆龙PLC与上位机组态软件的通讯现场调试最关键的一环就是让欧姆龙PLC和上位机组态软件比如WinCC、InTouch、组态王、或者自己写的上位机程序建立EIP通讯。实际上现在组态软件大多数都内置了EIP驱动。配置上位机侧的EIP通讯时要填写的参数通常是PLC的IP地址、通讯端口默认44818、目标标签集名称以及要读写的标签列表。组态软件会以“扫描器”的身份访问PLCPLC侧则要确保“目标设备”的角色已经开启。设置完成后你可以先在电脑的“运行”里输入ping 192.168.250.1测试网络通断。Ping通了以后再在上位机组态软件里新建一个变量绑定到PLC的某个标签上比如“Robot_Speed”强制在线看能否读到值。如果读不到八成要回到Sysmac Studio查看“连接状态”有没有变绿。如果连接状态是红色或者灰色说明EIP连接没有建立成功重点排查两部分RPI是否在双方支持的范围内、目标标签是否存在。6.4 EIP的EDS文件是什么说到第三方对接就必须聊一下EDS文件。EDS文件Electronic Data Sheet本质上就是一个“设备说明书”它用标准的文本格式描述了设备的通讯参数、可用的对象、连接长度等信息。当你需要把一个第三方EIP设备接入欧姆龙PLC时可以在Sysmac Studio的设备库中导入它的EDS文件这样系统就会自动识别该设备支持的EIP参数并生成对应的SCAN器件。没有EDS文件你当然也可以手动配置I/O长度和参数但可靠性就差很多。所以项目上有条件的情况下一定要向设备厂家索要最新的EDS文件。发那科、安川、小原这些厂商都是支持提供EDS文件的只要你明确要的是“EtherNet/IP的EDS”他们都能给你正确的版本文件。7. EIP通讯调试心得与常见问题排查表配置EIP通讯不是把软件里几个参数一填就万事大吉了。现场调试时十次有八次会遇到这样那样的问题。我把这几年遇到的典型问题整理了一份排查速查表还有几个在教材上很难找到的经验技巧。7.1 通讯失败排查思路照顺序来当通讯失败时我的排查顺序是固定的你可以参照执行先看链路层通不通Ping再看设备层有没有启动连接连接状态再看数据层有没有数据更新数值是否变化。第一Ping不通。这种情况占了一半以上的故障原因。物理链路有问题、IP地址冲突、子网掩码不一致、网线质量差都可能导致Ping不通。你先在电脑的命令提示符里Ping PLC的IP地址如果不通就先检查网线两端是否松动、交换机端口指示灯是否亮起。如果指示灯亮但Ping不通那就检查PLC的实际IP地址因为上一次配置可能没有传送进去。我的经验是用Sysmac Studio的“连接”功能扫描网络上的PLC它能直接列出所有在线的PLC及其实际IP这个工具比你去猜IP地址高效太多。第二Ping得通但连接建立不了。说明物理链路是好的问题出在EIP协议的参数配置上。你重点查目标设备PLC是否配置了允许连接、连接类型是否匹配一对一还是多播、连接长度是否一致、RPI是否在设备双方支持的范围内。还有一种情况很隐蔽PLC侧有防火墙有些内置工业防火墙选项被误开了需要关闭或者放行端口。第三连接状态正常但数据不对。这就进入数据映射的检查阶段了。看PLC侧标签是否更新了、上位机侧的标签绑定是否对得上、数据类型大小、字节序、偏移量这些是不是有错位。我曾经排查过一次上位机能连上PLC但读出来的速度值忽大忽小后来发现是上位机把INT当成REAL解析了改了数据类型后立刻正常。7.2 常见问题速查表故障现象可能原因解决方法排查工具Ping不通PLCPLC IP配置没传进去使用Sysmac Studio网络扫描重新设置IP系统命令行Ping连接状态红色目标设备不支持该连接参数对应EDS文件核对连接长度/类型Sysmac Studio连接状态通讯时断时续使用了普通办公网线/交换机更换工业屏蔽网线、工业交换机网线测试仪数据刷新慢RPI设置过大将RPI从200ms改为10ms或20ms系统日志、Wireshark抓包数据值大小对调大端序/小端序不匹配上位机按大端序解析或PLC做字节转换在线监控数据第三方设备拒绝连接长度超过EDS声明严格按EDS文件长度设置连接EDS文件文本查看器连接偶尔中断重连不上上位机访问太频繁设置超时重连机制PLC程序中的报警日志标签名找不到大写小写或特殊字符改用ASCII字符且严格区分大小写Sysmac Studio标签列表7.3 实用的线上排查命令很多人忽略了一点EIP通讯其实是可以抓包分析的。你用 Wireshark 软件选择流量经过的网卡设置过滤条件为ip.addr 192.168.250.1就可以看到EIP报文。启动抓包后让上位机重连一次PLC你会在Wireshark里看到两种关键报文一种是 List Identity这是设备发现用的广播包一种是 Forward Open这是建立连接的请求包。如果只看到List Identity而没有Forward Open说明上位机在“发现阶段”卡住了通常是EDS文件不匹配或标签名无法解析。如果看到了Forward Open但返回了错误状态EtherNet/IP的错误码在报文里会有明确的说明比如 Error Code 0x0104 代表请求太频繁0x0111 代表连接不存在。过去几年我见过不少工程师会看不起“抓包”这种手段觉得那是搞IT的人才会用的。但EIP本身就是以太网之上的协议用Wireshark这类工具进行底层的可靠诊断其实是最高效的。你与其在软件界面里盲猜不如直接看报文里写了什么错误码一抓一个准。8. 进阶技巧EIP 与其它工业以太网协议并存现在现场越来越复杂往往一台欧姆龙PLC旁边既要有EIP通讯又要跑EtherCAT还要跟第三方设备做Modbus TCP通讯。这就有必要聊聊多协议并存时的注意事项。8.1 同一个PLC上跑EIP和EtherCAT欧姆龙NJ/NX系列最强的一点是它可以把EtherCAT做运动控制总线把EIP做信息层和PLC-PLC通讯总线两者并行工作。在配置的时候Sysmac Studio中的EtherCAT主站和EIP节点是独立的配置界面互不干扰。但要注意的是两者如果共用同一个以太网口带宽会被共享。我实际的测试经验是如果EtherCAT跑在1ms或0.5ms的周期EIP的RPI又设得很短比如5ms那么通讯负荷几乎要把百兆网口跑满偶发出现EIP数据丢包。所以我的建议是运动控制和PLC-PLC通讯尽量分开网口。如果PLC型号只有一个网口那就别把EIP通讯放在心上尽量把RPI拉长到20ms以上给EtherCAT留足带宽。8.2 通过EIP做PLC与PLC之间的数据交换有时候你不需要上位机就是想实现两台欧姆龙PLC之间的数据交换。这在EIP配置中也是很常见的应用一台PLC作为主站另一台作为从站主站写数据到从站的输出区从站写数据到主站的输入区。配置时需要注意从站的输入/输出区域要与主站的输出/输入区域长度对应。举个例子PLC_A作为主站要发送10个字给PLC_B那么在PLC_A的输出区长度配置为10个字PLC_B的输入区长度也配置为10个字两边通过EIP连接映射起来。数据传输的延迟在10ms左右基本能保证现场逻辑的协同只适合做非严格的协调严格的要做运动控制总线。这种主从站之间最大的坑是数据方向搞反。我也是吃过亏的本地写了一个4字节的地址发现对方读到的一直是旧数据后来才发现那个数据是从对方PLC映像区里读出来的上次通讯值而我真正发的数据在另一个地址里。这种“阴差阳错”只有靠调试时给每个映射区设一个固定特征值比如起始地址放一个0xAA55的测试关键字来验证等连通了再改成业务数据。8.3 EIP通讯与生产安全的联动通讯配置都做完后最后我建议你加一道“看门狗”程序。EIP连接有时候会因为网络瞬时拥堵导致数据短暂中断如果PLC里没有任何检测机制那么上位机或者机器人可能就会在不当的时刻执行旧指令带来安全隐患。正确的做法是在上位机或者机器人的数据中设置一个“运行计数值”标签PLC每循环一次就加1即心跳值。PLC侧再检测这个心跳值是否持续变化。如果超过一定时间如500ms心跳值没有增加就执行安全停机动作或者触发报警。这个技巧虽然简单但在实际生产中能救命。我见过太多项目在调试时都忽略了通讯中断的处理现场一断网设备还在按最后收到的信号继续运行直到机器撞了或者产品报废才意识到问题的严重性。EIP是一个非常成熟、稳定的工业以太网协议但再稳定的协议也经不起粗糙的工程实施。通讯配置的过程说白了就是把通讯双方的工作参数全部对齐并且把异常情况纳入程序设计范围。最后分享一个小技巧。调试EIP通讯之前无论你有多着急先拿一张纸把两端设备的IP地址、子网掩码、网关、目标标签集、连接长度、RPI这些基础参数全部列出来跟对端工程师当面确认一遍再去动软件。纸上对齐过了软件配置基本一次就能通。很多所谓“玄学”通讯问题最后查来查去居然就是某个基础参数填错了。心里有底手上的活才快。
返回列表