ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

NJ501实现无协议串口通信:EtherNet/IP转串口服务器方案详解

NJ501实现无协议串口通信:EtherNet/IP转串口服务器方案详解 欧姆龙NJ系列控制器在很多自动化项目里都会遇到尤其是 NJ501 这种中等性能的机器自动化控制器。不过很多工程师第一次接触 NJ501 的无协议串口通信时往往会卡在一个很基础的问题上NJ501 的 CPU 本体并没有 RS-232C 或 RS-485 串口。控制器上常见的接口是 EtherNet/IP、EtherCAT、USB 和 SD 卡槽并没有像 CP1H 那样板载串口。于是“NJ501 实现无协议串口通信发送”这句话听起来其实有点反直觉。因为要实现真正的串口数据收发必须先决定数据从 NJ501 的哪个物理出口出去。围绕这个问题工程上有两种主流方案一种是在 NJ501 的 CPU 机架上扩展 CJ 系列串行通信单元另一种是通过 NJ501 自带的 EtherNet/IP 接口连接一台“串口服务器”由串口服务器把以太网数据转成 RS-232C/RS-485 字节流。这两种方案都能实现无协议串口通信但编程思路、调试难度、可维护性差别很大。这篇文章会把无协议串口通信这个概念讲透并重点拆解一条适合 NJ501 的落地路线EtherNet/IP 串口服务器透明传输。我们从方案选型、原理、硬件连接、串口参数配置到 NJ501 端的报文构造和发送验证一步一步展开。如果你是刚接触 NJ501或者正被“没有串口”这件事卡住这篇文章值得收藏备查。1. 为什么 NJ501 做无协议串口通信容易卡住1.1 NJ501 的硬件现状先看 NJ501 的硬件构成。NJ501 系列属于 NJ 系列的机器自动化控制器CPU 单元标配的是 EtherNet/IP 端口和 EtherCAT 主站端口。EtherCAT 用于连接伺服和远程 IOEtherNet/IP 用于上位机、HMI、其他 PLC 以及支持 EtherNet/IP 协议的设备通信。所以在硬件层NJ501 并不是一个天生带着串口接口的控制器。如果项目里的扫码枪、称重仪表、老式打印机、显示屏等设备只支持 RS-232C 或 RS-485 串口就会出现一个很现实的问题PLC 程序写好了但数据从哪个接口发出去有些工程师会想到给 NJ501 加装 CJ 单元。NJ/NX 系列控制器可以通过单元适配器连接部分 CJ 系列单元其中也包括 CJ 系列串行通信单元例如 CJ1W-SCU41-V1。这种做法的本质是让 NJ501 通过 CPU 总线去控制一个独立的串行通信单元由这个单元负责 RS-232C / RS-422A / RS-485 电平转换和数据收发。不过这种方式需要仔细确认 NJ501 的 CPU 指令体系和 Sysmac Studio 软件版本是否支持目标功能不能把 CJ 系列的老程序直接照搬过来。很多工程师就是在这里踩坑照着 CJ 系列手册写了发送指令结果在 NJ 的指令集里找不到对应指令或者变量地址体系完全对不上。1.2 “无协议串口通信”到底是什么意思“无协议”这个词听起来像“没有协议”实际意思是PLC 不对通信内容做协议封装也不依赖欧姆龙 HostLink 等专用协议而是把用户组装的字节数组直接通过串口发送出去。很多设备的串口通信都采用这种形式。比如向扫码枪发送一条触发命令随后接收二维码字符串向称重仪表发送一条读取重量命令仪表返回重量数据向打印机发送一段文本指令向 LED 显示屏发送显示内容。这些设备一般会在说明书中给出“报文格式”或“命令格式”常见为十六进制字节也可能是一段 ASCII 字符串。以常见的 Modbus RTU 读寄存器为例PLC 需要发送类似下面这一串十六进制字节01 03 00 00 00 02 C4 0B这串字节的含义是从站地址 01功能码 03起始寄存器地址 0x0000读取数量 0x0002最后两个字节是 CRC16 校验。无协议串口通信时PLC 不会去解释这些字节的意义它只负责把这串字节按顺序从串口发出去。设备收到后自行解析。反过来设备返回的字节也原样交给 PLC由用户在程序里按设备协议解析。理解这一点很重要。因为“无协议”不等于“什么都不管”而是协议帧的组装、校验、超时判断都要用户自己完成。PLC 在这里扮演的是“透明字节管道”的角色。对于 NJ501 来说真正的难点不是串口语法而是控制器本身没有物理串口NJ 使用基于 IEC 61131-3 的变量编程体系不像老式 CJ 系列那样直接对内存地址编程数据帧得在 PLC 内部构造好并通过某个通信通道发出去。1.3 两条实现路线对比针对 NJ501 的无协议串口通信发送工程上主要就两条路线对比项路线 A机架扩展 CJ 串口单元路线 BEtherNet/IP 串口服务器新增硬件CJ 串行通信单元、CJ 单元适配器串口服务器、交换机/网线数据链路NJ CPU 总线 - CJ 串口单元 - RS-232/485NJ EtherNet/IP - TCP/IP - 串口服务器 - RS-232/485编程重点检查 Sysmac 环境下的串口单元通信功能Socket 打开、发送、关闭排错方式查看串口单元状态字需接触单元参数网口抓包 串口调试助手分段定位典型场景无以太网环境或必须使用 CJ 单元已有工业以太网设备分散希望快速落地从工程落地角度看如果项目允许使用工业以太网路线 B 往往更容易跑通。原因有三点第一不需要纠结 CJ 单元与 NJ 的指令兼容问题。NJ501 本身就支持 Socket 通信可以主动向串口服务器的 TCP 端口发送数据。第二中间链路可以清晰分界。网络部分出问题查 PLC 和交换机串口部分出问题查串口服务器和设备接线排查范围小很多。第三串口服务器可以放在设备旁边。RS-232 线可以拉得很短减少因为通信线过长导致的乱码和干扰。对于很多需要做扫码枪、仪表采集的项目这已经是非常实用的架构。2. 理解一次无协议串口发送的完整链路在动手配置之前先把“一次无协议串口发送”的数据流拆开。以路线 B 为例一次完整发送包括这些环节NJ501 内部字节数组
返回列表