ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

欧姆龙NJ501与NB触摸屏分布式总线控制系统开发与调试实战

欧姆龙NJ501与NB触摸屏分布式总线控制系统开发与调试实战

接手一台设备需要做电控系统升级,现场实际情况是:设备本体上面分布着几十个传感器和执行机构,点位不集中,分布在主控制柜、远端两个IO箱和伺服电柜里,连线如果全部拉回主柜,布线量和端子数会非常可怕。再算上几个伺服轴和触摸屏联动,这套系统最终定了欧姆龙NJ501-1300作为主控制器,NB系列触摸屏做人机界面,用EtherCAT总线和EtherNet/IP把分布式IO、伺服和HMI串成一个整体。这种组合在中小型设备里很常见,但真正要把NJ/NX程序、NB触摸屏和分布式总线控制玩明白,还是会踩不少坑。这篇就把整个开发和调试过程做一个拆解,给同样在用欧姆龙平台的朋友做个参考。

1. 项目背景与需求拆解

1.1 这套系统要解决什么问题

现场设备的特点是IO点物理位置分散。机械结构本身分成了三段,每一段都有自己的接近开关、光电传感器、电磁阀和执行气缸,如果按照传统方式把所有信号线都汇到主柜,一方面线槽会被塞满,另一方面后期查线、换线都是一场灾难。所以方案上就要求采用分布式IO架构,把主柜外的信号先在远端IO箱内接线,再通过总线把数据送进控制器。

除了IO分散,设备还带三个伺服轴,负责物料搬运和位置定位,对同步性和响应速度都有要求。如果伺服脉冲线、编码器线也全部拉回主柜,现场干扰和处理难度会大不少。因此伺服驱动器也要求挂到同一条高速总线上,让控制器直接通过总线周期发送位置指令、读取当前状态。

人机界面这边,现场操作人员需要实时看到设备当前运行节拍、报警信息、关键温度或压力数值,还需要支持配方切换。NB系列触摸屏正好贴合这种需求,尺寸适中,组态软件上手快,成本也合适。

1.2 为什么最终落在欧姆龙NJ501-1300上

选NJ501-1300并不是因为它是最高端的型号,而是在这类“中等规模逻辑控制+少量运动控制+分布式IO”的应用里,它的定位很准确。NJ501系列集成EtherCAT主站功能,内置EtherNet/IP端口,本体就自带运动控制能力,不需要单独再配运动控制模块。对于三个伺服轴、几十个IO点、一个NB触摸屏的场景,NJ501-1300的性能余量足够,程序容量和任务周期都能轻松覆盖。

另一个关键点是,NJ/NX系列使用的是IEC 61131-3标准编程体系,Sysmac Studio软件里可以直接用梯形图、结构化文本ST、功能块图FBD混合编程。对于习惯了传统PLC梯形图的人来说,上手不突兀;对于需要做复杂算法的人来说,ST又提供了很好的表达空间。这种“一台PLC里能混合用多种语言”的灵活性,是这个项目最终选型时一个重要的加分项。

从维护角度讲,欧姆龙NJ/NX平台的数据结构是标签化的,所有变量都有符号名,程序读起来比裸地址直观得多。设备后面交给现场维护人员,他们看到的是“传送带启动”“气缸伸出到位”这样的变量名,而不是一串D寄存器地址,排查问题效率完全不一样。

2. 硬件选型与网络拓扑设计

2.1 NJ501-1300的主要角色

NJ501-1300是整台设备的大脑。它负责处理所有逻辑控制、三轴运动控制、EtherCAT总线主站管理、EtherNet/IP通信、报警判定和配方逻辑。

从硬端口上看,NJ501-1300自带EtherCAT主站口和EtherNet/IP口,另外还可以通过扩展单元增加串口或其他通信模块。EtherCAT口专门用来带高速现场总线设备,比如伺服驱动器、分布式IO从站;EtherNet/IP口则用来做上位机通信、触摸屏连接、以及和上位管理系统对接。

NJ501-1300本体还有一个SD卡插槽,可以存放程序备份、配方数据、运行日志。我在这个项目里把每周运行数据记录和报警历史通过程序自动写入SD卡,方便后续追溯设备状态。

2.2 网络拓扑分成两层

整个设备网络我做了两层划分:

第一层是EtherCAT现场总线层,这一层挂着三个伺服驱动器和两组远端IO从站。EtherCAT是菊花链结构,从一个伺服器进线,再出一个网线到下一个设备,IO从站同样串联在链路里。这种结构最大的好处是接线量少,一根网线走完所有设备,而且EtherCAT的数据刷新周期很快,三个伺服轴加两组IO从站,在1ms甚至更短的周期内就能完成所有数据交换。

第二层是EtherNet/IP信息网络层,这一层连接NJ501-1300、NB触摸屏和上位机。触摸屏通过以太网与PLC通信,不需要额外占EtherCAT资源。上位机如果需要采集数据,也走这一层,和现场实时控制分开,互不干扰。

这两层网络的设计思路是让“实时控制数据”和“非实时信息数据”物理隔离。伺服控制和IO刷新走EtherCAT,HMI显示和上位机监控走EtherNet/IP,避免彼此抢占带宽导致控制周期波动。

2.3 NB触摸屏选型细节

NB系列触摸屏在这个项目里选了7寸款,主要考虑是现场操作箱的空间刚好能放下,分辨率满足显示需求,价格也合适。NB系列在欧姆龙HMI里的定位属于经济型,但它该有的功能都不缺,支持以太网通信、报警记录、配方管理、数据记录、多窗口跳转。

NB屏的组态软件是NB-Designer,和NJ平台的Sysmac Studio是两个独立的软件。这个需要注意,新手容易把两者混淆,实际开发中PLC程序用Sysmac Studio写,触摸屏画面用NB-Designer做,两者通过通信设置建立联系。

NB屏和NJ的通信我推荐走以太网FINS/TCP协议,在NB-Designer里配置好PLC的IP地址,再定义好需要读写的地址列表即可。相比串口通信,以太网速度快,能支持更多点位刷新,也不会被RS485的接线距离和干扰问题困扰。

3. Sysmac Studio下的NJ程序开发

3.1 项目创建与硬件配置流程

打开Sysmac Studio,新建项目后第一步是选择CPU型号,这里直接选NJ501-1300。软件会自动把CPU的EtherCAT主站功能、EtherNet/IP功能以及内置I/O都加载进来。

接下来需要做的是在“I/O配置”里搭建设备模型。如果PLC本体带了扩展机架,也要在这里配置各扩展单元。我们这个项目CPU本体没有额外加数字量模块,因为设备IO都通过EtherCAT从站扩展了,本体只留了高速计数和温度等特殊功能接口。

硬件配置这一步最关键的其实是EtherCAT从站的注册。Sysmac Studio支持自动扫描功能,把电脑网口直接连到NJ的EtherCAT口,在软件里选择“从实际设备读取”,就能把链路上的所有伺服和IO从站识别出来。识别完成后软件会把每个从站的型号、版本、通信参数自动填入配置里,非常方便。

不过自动扫描有一个前提条件:EtherCAT链路必须是通的,从站供电也要正常。我第一次扫描时,远端IO箱的电源开关没合上,导致最后一个从站掉线,扫描结果就不完整。所以在做扫描之前,一定先确认所有设备供电和网线连接都正常,最好逐个从站检查指示灯状态。

3.2 全局变量与程序结构规划

NJ/NX程序的核心是变量,不是地址。传统PLC编程时你要惦记着D100是压力值,D110是温度值,NJ平台里你直接定义一个“压力当前值”变量,程序引用时非常直观。

这个项目的程序我按功能模块划分了几个POU,也就是程序组织单元:

  • 主控制逻辑负责设备自动运行流程,包括启动、停止、复位、急停处理。
  • 运动控制逻辑负责三个伺服轴的使能、回原点、定位运动。
  • 报警处理逻辑负责采集各报警条件,生成报警标志位并触发触摸屏报警。
  • 数据记录逻辑负责把关键工艺参数写入SD卡。

每个POU都可以选择不同的编程语言。主控制逻辑用梯形图,方便电工背景的同事理解;运动控制用ST,因为运动指令的参数配置和状态判断用文本表达更清晰;报警处理可以用梯形图或ST,看个人习惯。

变量方面,我建议把所有需要触摸屏访问的变量都用全局变量定义,并且建立一份变量表,把变量名、数据类型、对应中文说明列清楚。NB屏通信时直接按变量名或地址访问,这张变量表能减少后期联调时来回对地址的时间。

3.3 运动控制程序的实现

三个伺服轴,对应三条执行机构,运动控制使用Sysmac Studio里的MC功能块,遵循PLCopen标准。常用的运动指令是MC_Power、MC_Home、MC_MoveAbsolute、MC_MoveRelative、MC_Stop,这些都是封装好的功能块,直接在ST里调用。

以一个轴为例,使能伺服用MC_Power,输入参数包括Axis、Enable、RegulatorOn等。回原点用MC_Home,可以配置原点输入信号类型、回零方向、速度等。定位用MC_MoveAbsolute,需要指定目标位置、速度、加速度、减速度。

实际调试中,加减速时间的匹配是一个容易被忽略的点。如果加速度设置过大,机械冲击会很严重,设备上某个工件的定位会晃动;如果加速度太小,节拍又跟不上。我通常的做法是先按机构允许的最大加速度的一半设置,现场观察运行效果再做微调,逐步逼近最优值。

运动状态的处理也要特别注意。MC_MoveAbsolute功能块在执行过程中会输出Busy信号,逻辑里判断“到位”必须使用Done信号,而不是直接用当前位置和目标位置做比较。用当前位置比较容易出现位置到了但指令还没结束的情况,导致下一工步提前执行。

3.4 任务周期与程序执行机制

NJ程序的执行靠任务驱动,Sysmac Studio里默认有一个主周期任务,还会有I/O刷新任务、初始化任务等。

主周期任务里执行的就是设备运行主程序,周期时间可以根据需要设置。这个项目设置的是2ms,主要考虑伺服控制环和EtherCAT刷新周期的匹配。如果程序中有大量浮点运算或数据处理,主任务周期要留有余量,不要让任务实际执行时间逼近周期上限。

初始化任务只在PLC上电或程序切换时执行一次,适合放一些变量初始值、恢复出厂参数、读取SD卡配置等操作。我把伺服参数初始化、某些故障复位标志的清除都放在初始化任务里,避免程序重启后还残留旧状态。

任务分配的合理性对系统稳定性有直接影响。建议把运动控制相关逻辑放在一个较高的优先级任务里,把触摸屏数据交互、非实时监控逻辑放在低优先级任务。这样就算HMI通信偶尔有波动,也不会影响到伺服轴的运动控制。

4. 分布式总线控制的实现要点

4.1 EtherCAT从站的选择与地址分配

分布式IO从站我用了欧姆龙NX系列EtherCAT从站单元配合NX数字量IO单元,这种组合比较灵活,可以根据每组IO点的数量选不同通道数的IO单元。

地址分配方面,EtherCAT链路上每一个从站都要有唯一的节点地址。Sysmac Studio支持在软件里直接给从站编号,也可以用从站本体上的拨码开关设置。我习惯在软件里分配,并且按物理位置顺序命名:主柜附近从站编号1,远端第一个IO箱编号2,远端第二个IO箱编号3。这样日后在Sysmac Studio里看网络拓扑时,一眼就能知道哪个从站对应哪里的信号。

从站地址分配完成后,伺服驱动器的地址也在同一机制下管理。每个伺服驱动器和IO从站的节点地址不能重复,这个在配置时要特别检查。地址冲突的常见现象是总线上某个从站随机掉线或无法进入运行状态,排查起来比较费时间。

4.2 EtherCAT接线规范与供电考虑

EtherCAT网线传输距离和线材质量有直接关系,建议使用带屏蔽的工业以太网线,接头使用金属外壳的RJ45连接器。两个从站之间的网线长度不要超过100米,实际现场布线时尽量走独立的线槽,避免和动力电缆绑在一起。

供电也是一个容易出问题的环节。EtherCAT从站单元需要工作电源,IO单元还需要传感器电源。我在远端IO箱里单独放了一个24V电源给从站和传感器供电,没有从主柜拉一根长线过去。分布式IO的意义就在于让供电也跟着去本地化,这样既能减少压降,又能避免某一处短路影响整机。

还有一个细节是EtherCAT的链路方向。EtherCAT从站一般有两个RJ45口,一个IN一个OUT,接线时必须保证数据从主站出来后依次进入每个从站的IN口,再从OUT口出来到下一个设备。这个平时不会出错,但在从站类型比较多、安装方向不一致时,会偶尔把IN/OUT接反,导致链路不通。

4.3 PDO映射与I/O数据交换

EtherCAT从站设备和主站交换数据靠的是过程数据对象PDO。每个从站会在配置时提供一组输入数据和一组输出数据,比如一个8路输入模块的输入PDO里包含8个BOOL值、一个输入诊断字等。

Sysmac Studio里配置好从站后,软件会自动建立I/O映射,把从站的输入输出映射到NJ程序的变量上。你可以在I/O映射表里看到每个变量对应的物理点位,并直接修改变量名称。这个环节我建议把变量名起得和现场信号一一对应,比如“IO箱1气缸到位”“IO箱2光电传感器”等,不要留着默认的“Input00”这种名字。

伺服驱动器的PDO映射相对复杂,通常包括控制字、目标速度、目标位置、状态字、当前位置、当前速度等。伺服驱动器的调试软件一般会提供默认PDO分配,直接导入Sysmac Studio即可。默认配置下,三大伺服轴的位置指令和反馈信息都能在主站里正常访问,不需要额外修改PDO内容。

4.4 分布式IO刷新与任务联动

EtherCAT的IO数据刷新是由主站自动完成的,不需要为每个从站单独写通信程序。主站每个刷新周期把输出数据发送到从站,同时从每个从站采集输入数据。

这里需要注意的是,从站IO数据在程序中的使用时机。NJ默认情况下,I/O刷新任务和主周期任务有一个先后关系,如果程序逻辑里用了最新IO状态做逻辑判断,要确保刷新任务先于逻辑任务执行。Sysmac Studio里可以设置这些任务的优先级,默认配置一般也能满足常用场景,但做了复杂任务架构后就要仔细确认执行顺序。

我在项目里把“IO刷新任务”设置为主任务周期的一部分,EtherCAT刷新和IO处理都在同一个周期内完成,这样运动控制和IO逻辑使用的状态数据都是同一时刻的,不会出现半个周期不一致的问题。

5. NB触摸屏的画面开发与数据通信

5.1 NB-Designer工程建立与通信配置

NB屏的画面开发在NB-Designer里完成。新建工程时选择触摸屏具体型号,然后配置通信设备。NB屏可以同时配置多个通信连接,比如以太网连接PLC、串口连接打印机等。这个项目只用了一个以太网连接,指向NJ501-1300的IP地址。

NJ侧的IP地址要在Sysmac Studio里设置并保存到CPU,NB侧的IP地址则在NB-Designer的系统参数里设置。两块设备的IP要在同一个网段,比如PLC是192.168.250.1,NB屏就设置成192.168.250.10。不需要配置额外的路由,直连交换机即可。

通信参数里选择FINS/TCP协议,波特率、端口号等默认即可。保存配置后下载到触摸屏,这时触摸屏和PLC就建立了底层通信通道。NB屏处于运行状态时会周期性地通过FINS指令读写PLC变量,无需在PLC程序里编写通信代码。

5.2 画面布局和监控控件的绑定

NB-Designer提供了一套丰富的控件库,包括数值显示、指示灯、按钮、报警列表、趋势图等。

这个项目的触摸屏画面分成了几个主要页面:主画面显示设备运行状态和当前报警;参数画面显示关键工艺参数,并允许操作员修改;配方画面用于切换不同产品的参数组;手动画面用于调试时逐个控制IO点。

控件绑定数据时需要指定PLC地址或符号。NB-Designer支持直接使用NJ的全局变量名,这一点非常方便。数值显示控件里选“直接地址”,输入变量名“当前温度”,运行后就能实时显示该变量值。按钮控件则绑定一个BIT类型的变量,按下时置ON,松开时置OFF,用来控制气缸、电机等。

需要提醒的是,触摸屏上修改PLC变量时,要注意控制权限。如果操作员误改了设备坐标或配方数据,可能导致设备动作异常。所以涉及关键参数的修改画面,我在PLC程序里加了权限判断和范围限制,比如配方值超过上下限时自动拒绝,并触发一个报警提示。

5.3 报警记录与配方功能

报警显示是NB屏和PLC配合完成的。一种做法是PLC把每个报警条件对应一个全局变量,NB屏的报警控件采集这些变量的ON/OFF状态,显示当前报警信息和报警时间。另一种做法是PLC把报警代码写入寄存器,NB屏按报警代码查表显示对应文本。

我用了混合方式:少量关键报警用最直观的变量ON/OFF方式,其余报警统一通过报警代码寄存器。这样画面上的报警列表简洁可控,不会因为报警数量多而导致画面控件过于复杂。

配方功能在NB-Designer里做成配方表,每一行对应一种产品工艺参数。操作员在屏上选择配方号并确认后,NB屏会把整行参数写入PLC的数组变量里,PLC程序再根据当前配方值执行控制。需要注意配方数据一定要有写完成标志,否则可能写到一半就切换了执行状态,导致参数不完整。

6. 调试实录与常见问题排查

6.1 现场调试的基本顺序

配合系统上电后的调试,我没有一上来就跑自动流程,而是按层级逐步验证。

第一步,检查EtherCAT链路。Sysmac Studio的EtherCAT诊断页面可以直观显示所有从站是否在线、状态是否为“运行”。这一步通过后再做伺服驱动器和IO从站的IO映射检查。

第二步,手动测试每个伺服轴。分别使能三个轴,用Sysmac Studio的在线监控功能直接给目标位置和速度,确认机械动作方向、原点信号和限位信号都正确。手动都跑顺了,再进入自动程序联调。

第三步,验证触摸屏通信。在NB屏上放置一个测试数值控件,绑定PLC的某个整数变量,在Sysmac Studio里在线修改该变量,观察屏上数值是否同步变化。这一关过了,后续报警、配方等功能才能继续验证。

第四步,进入空载自动运行。让设备按正式流程跑空循环,观察节拍、运动轨迹、时序配合。空载运行稳定后,再带料运行,确认传感器检测和加工效果。

6.2 现场高频问题速查表

现象可能原因排查方法
Sysmac Studio扫描不到从站从站供电未上、网线IN/OUT接反、从站地址冲突检查从站指示灯,核对接线方向,断开其他从站逐个接入
从站配置后无法进入运行状态从站固件版本与Sysmac Studio软件版本不匹配升级Sysmac Studio或更新从站固件
触摸屏显示数值不刷新IP地址不在同一网段、通信配置错误、PLC侧变量名拼写错误用Ping工具确认网络通断,核对NB-Designer中的变量名
伺服轴运行抖动或梯队不平滑加减速时间设置不合理、伺服增益未完整调试回伺服调试软件重新整定增益,增大加减速时间再试
远程IO箱输入信号偶发丢失EtherCAT通信受到干扰检查网线屏蔽层接地、重新走线避免与动力电缆并行
NB屏报警不弹出报警变量地址偏移、报警优先级设置不当确认报警控件关联的变量地址与PLC程序一致,调整报警触发条件

6.3 调试过程中最值得分享的几个经验

第一,EtherCAT通信问题不要一上来就怀疑硬件。很多时候是网线接头做得不好、屏蔽层没有良好接地,或者从站供电质量差。我遇到过一次远程IO箱的传感器信号偶发误动作,查了很久最后发现是24V电源功率裕量不够,IO模块驱动传感器后电压跌落,导致输入状态不稳定。把所有从站和传感器供电分开并加大电源功率后问题消失。

第二,触摸屏的变量名大小写和PLC必须完全一致。NJ平台变量名严格区分大小写,NB-Designer通信时也有同样的规则约束。我在变量名里统一用小写加下划线,避免过两天自己都记不清是“Enable”还是“enable”。项目多、变量多之后,这个习惯能节省大量联调时间。

第三,NJ程序在线修改功能虽然好用,但改动涉及运动控制逻辑时,务必先确认伺服轴处于停止状态,并有专人值守急停按钮。程序在线传送的一瞬间,一些中间变量会重置,万一伺服使能逻辑处理不当,轴可能突然动作。任何在线操作都要有安全意识。

7. 项目收尾后的几点思考

整套系统做下来,最大的体会是,NJ501-1300加NB触摸屏加EtherCAT分布式总线的组合,确实适合这个量级的设备。程序结构清晰,调试效率高,设备投用后的稳定性也不错。最让我满意的是维护便利性,现场电工拿一台笔记本接上Sysmac Studio,就能看到所有变量和从站状态,故障定位时间大大缩短。

如果后续要在这个方案上做扩展,我会考虑增加更多的数据分析和远程监控功能。NJ501-1300的EtherNet/IP口已经具备通信能力,剩余容量也够,往MES系统推数据、做设备OEE统计都是可行的。NB屏这边也可以通过以太网连接上位机或远程运维网关,实现远程画面监控和程序监控。不过这些都是后话,先把当前这套分布式总线的应用做得扎实,才是最基本的功底。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进