PLC问答
> 欧姆龙NJ501运行中D寄存器数值被莫名改写,交叉引用查不到写入源,如何用强制/监视追踪?
欧姆龙NJ501运行中D寄存器数值被莫名改写,交叉引用查不到写入源,如何用强制/监视追踪?
设备用NJ501-1500,程序中D1000用于记录产量,最近发现运行几小时后D1000会跳变成非预期值,梯形图里没有直接MOV到D1000,交叉引用只显示读操作,怀疑是间接寻址、ST程序或外部通信写入,但现场不允许长时间停机,想在线追出到底是谁改了D1000。
4 个回答
✓ 最佳回答
欧姆龙口诀:CP和NJ两个宇宙,软件工具别混用;CP模拟量看单元号和地址表,NJ运动控制先Power再Move;EtherCAT从站进OP,轴诊断读详细码。
✓ 最佳回答
建议用在线监视+数据追踪定位:1)在Sysmac Studio中打开该变量,右键“添加到监视窗口”,勾选“变化时记录”,设置触发条件为值变化,可抓取改写时刻;2)检查是否有ST程序使用数组越界或指针(如AT指定地址、Index寄存器IR),NJ中若用数组下标超范围会覆盖相邻变量;3)查看是否有EtherNet/IP或Modbus TCP从站把该地址映射为写入区,进入“EtherNet/IP连接设置”核对输入/输出标签;4)用“交叉引用”切换到“变量”视图而非仅梯形图,确认HMI、上位机标签;5)临时在D1000写入前加置位标志位(如Set M100),触发后用“采样追踪”回看前几个扫描周期的调用栈。
欧姆龙PLC,CP系列(CP1H/CP1L)和NJ/NX系列是两个宇宙:CP系列用CX-Programmer/CX-One,是传统的梯形图,模拟量模块要设单元号(旋转开关)和分配的字地址;NJ/NX用Sysmac Studio,是IEC 61131-3体系(梯形图+ST),运动控制用MC指令(MC_Home、MC_MoveAbsolute),EtherCAT才是NJ的标配总线。跨系移植基本等于重写。记住:CP1H内置模拟量(XA型)通道地址是固定的(200-203输入、210-213输出),扩展模块按单元号分配。
NJ的坑集中在运动控制:一,轴参数——反转限制、原点和跟踪误差在轴设置里,不是程序里;二,MC指令必须先使能轴(MC_Power)再走运动指令,没有Power直接Move会报错;三,EtherCAT从站配置——伺服型号版本和配置文件(ESI)要匹配,扫描后从站状态要进OP(运行态);四,程序的EtherCAT周期和运动控制周期要一致,别混用。报0x8400这类轴错误码,去Sysmac Studio的轴诊断里看详细原因,别看着代码猜。