
摘要本文系统讲解欧姆龙PLC的通讯配置与故障排查覆盖CP1E/CP1H、CJ2M、NJ/NX等常用机型。内容从物理接口与协议对应关系入手重点介绍以太网FINS/TCP读写DM区的完整实例含帧结构、命令码与地址核对、串口Host Link的配置与C模式命令并给出通讯不上时的分层排查方法与交叉验证手段。文中端口号、命令码、内存区代码等关键数值均依据欧姆龙官方手册核对。做设备维护和程序调试时欧姆龙PLC通讯几乎是绕不开的一关电脑连不上PLC、触摸屏读不到DM区数据、上位机软件频繁超时很多故障最后都出在通讯这一环。面对CP1E、CP1H、CJ2M这些老型号和NJ、NX这些新型号再加上FINS/TCP、Host Link、NT Link、Modbus一串名词新手往往分不清哪种接口该用什么协议、参数在哪里设。其实只要先理清物理接口与协议的对应关系再按统一的步骤配置网络号、节点号、单元号通讯问题大多能快速定位。这篇围绕“欧姆龙PLC通讯”结合CP1E/CP1H、CJ2M、NJ/NX几类常用机型编程软件分别对应CX-Programmer和Sysmac Studio把以太网FINS/TCP、串口Host Link的配置和读写过程系统讲一遍并给出通讯不上的分层排查方法。文中端口号、命令码、内存区代码等关键数值均依据欧姆龙官方操作手册与官方FAQ核对。一、欧姆龙PLC常见通讯方式与接口1.1 各系列机型的通讯接口不同机型的接口差别很大配置前先认清手上的PLC有哪些口。小型机CP1E/CP1H/CP1L本体带一个USB外设口和最多两个串口选件槽可插CP1W-CIF01RS-232C、CP1W-CIF11/CIF12RS-422A/485或CP1W-CIF41以太网选件板CP2E部分型号直接集成以太网口。CJ2M模块化机型在CPU上自带USB口部分CPU如CPU3□内置EtherNet/IP口也可插CJ1W-ETN21以太网单元和SCU串口通讯单元。NJ/NX系列则以以太网口为主支持EtherNet/IP并用Sysmac Studio配置。先确认物理接口再谈协议是配置通讯的第一步。1.2 FINS、Host Link、NT Link分别是什么FINS是欧姆龙自家的工厂接口网络服务协议可以理解为一套统一的命令格式上位机或PLC用它读写对方内存区、改变运行模式。FINS既能跑在以太网上FINS/TCP或FINS/UDP也能跑在串口上串口FINS。Host Link是较早的上位机链接协议分C模式命令和FINS命令两类主要跑在RS-232C/485串口上适合一对一或一对多的轮询通讯。NT Link是PLC与欧姆龙触摸屏之间的专用高速链接分1:1和1:N普通NT Link波特率常见为38400高速NT Link为115200。Modbus则在部分机型上以简易主站或串口网关方式支持用来对接第三方仪表和变频器。通讯方式物理接口协议/默认参数典型用途以太网FINS/TCPRJ45以太网口FINS over TCP默认端口9600上位机、跨网段、需可靠连接的读写以太网FINS/UDPRJ45以太网口FINS over UDP默认端口9600PLC之间、局域网点对点数据交换EtherNet/IPRJ45以太网口CIP标签数据链接NJ/NX与控制器、远程IO通讯Host LinkRS-232C/485串口C模式或FINS标准9600、7,2,E上位机、触摸屏经串口读写PLCNT LinkRS-232C/422A串口1:1/1:N38400或115200欧姆龙触摸屏与PLC专用链接Modbus-RTURS-485串口主站/从站8位数据对接第三方仪表、变频器二、FINS/TCP以太网通讯基础2.1 网络号、节点号、单元号的含义FINS不用IP地址直接寻址而是用“网络号.节点号.单元号”三元组定位设备网络号区分不同网段本机网络通常为0节点号区分同一网络里的不同设备取值范围1到254十六进制01到FE单元号区分同一节点上的不同单元直接访问CPU时单元号固定为0与以太网模块自身的单元号无关。在以太网FINS中以太网单元负责在IP地址与FINS节点号之间转换转换方式有自动转换、IP地址表和复合地址表三种。最常用的自动转换规则很简单FINS节点号就等于IP地址的最后一段例如IP为192.168.250.3节点号就是3计算机IP为192.168.250.10节点号就是10。2.2 FINS/TCP与FINS/UDP的区别端口9600FINS/UDP是无连接的发送方不建立连接直接发数据报实时性好、开销小但不保证送达适合局域网内点对点FINS/TCP在通讯前要先建立TCP连接并握手数据可靠、可跨路由器适合上位机和数据要求严格的场合。两者默认端口都是9600可在模块设置中修改但同一网络内所有设备端口必须一致否则通讯不上。调试时建议先用网线直连电脑与PLC或经同一交换机连接在电脑命令行用ping确认网络通畅再进行FINS配置。三、FINS/TCP读写DM区完整实例3.1 实例参数与FINS帧结构给一个可完整核对的例子。计算机IP设为192.168.250.10FINS源节点号为10十六进制0APLC的IP设为192.168.250.3FINS目标节点号为3十六进制03双方子网掩码255.255.255.0端口都用默认9600。在未建立路由表的情况下网络号都为0直接对CPU操作单元号为0。FINS帧头部依次为ICF、RSV、GCT、DNA、DA1、DA2、SNA、SA1、SA2、SID共10个字节发送命令时ICF固定为80、RSV为00、GCT为02目标地址DNA00、DA103、DA200源地址SNA00、SA10A、SA200SID服务标识可填00响应中原样返回。FINS命令码由主码和从码组成内存区读为0101、内存区写为0102命令后的内存区代码区分操作哪个区DM区字为82、CIO区字为B0、W区字为B1、W区位为31随后是3字节起始地址通道号两字节加位号一字节和2字节数量。PLC正常完成时返回结束码0000出错时为其他代码。FINS/TCP 握手连接请求计算机先发给PLC 46494E53 0000000C 00000000 00000000 0000000A └ 46494E53ASCII字符FINS └长度12字节 └命令0 └错误0 └客户端节点10 PLC返回命令码00000001的帧连接建立后才能发数据帧。 读取DM区 D100 开始的1个字命令码0101DM代码82 46494E53 0000001A 00000002 00000000 800002 000300 000A00 00 0101 82 006400 0001 说明D100十六进制00640001表示读1个字0000001A数据长度26字节。 若D100中为十六进制1234十进制4660PLC正常返回的数据段为 C00002 000A00 000300 00 0101 0000 1234 ICF变为C00000为正常结束码1234为读到的数据 写入DM区 D100 一个字为十六进制1234命令码0102 46494E53 0000001C 00000002 00000000 800002 000300 000A00 00 0102 82 006400 0001 1234 说明0000001C数据长度28字节正常返回结束码0000。 实际发送时十六进制字符串中不加空格异常结束码可查FINS手册响应代码表。3.2 地址数值的核对把关键数值核对一遍十进制100换算为十六进制是0064所以D100在帧中写作82 006400十进制10为0A、3为03分别填入源节点SA1和目标节点DA1写命令比读命令多2字节数据所以长度从260x1A变为280x1C。再换一个例子写W区的W0.05位为ON命令码0102后用W区位代码31地址写作000005数量0001数据01表示置位。访问其他网段时要在路由表中配置目标网络号。四、Host Link串口通讯配置4.1 单元号、波特率与帧格式使用Host Link时在CX-Programmer中双击“设置”打开“串口1”或“串口2”选项卡按选件板实际插入位置选择把模式设为Host Link单元号设为0通信设置可选标准或定制。标准帧为9600bps、7位数据、2位停止位、偶校验写作9600、7,2,E定制时波特率可设为19200、38400、115200等但PLC侧与上位机、触摸屏侧必须完全一致。修改后要下载到PLC并断电再上电才生效。CP1H/CP1L的DIP开关第4脚对应串口1、第5脚对应串口2使用PLC设置中的Host Link参数时该脚应置OFF按设置区参数运行若想用标准默认参数可按手册置ON。实际多串口接触摸屏的场合六脚全部置OFF、由软件设置参数是更常见的做法具体以型号手册为准。4.2 C模式Host Link命令与接线C模式Host Link采用ASCII字符帧格式为起始符、单元号两位、命令码两位、正文、FCS校验两位、结束符*加回车。例如用RD命令读取0号单元DM区从D256开始的1个字正文为“00RD01000001”对“”到正文末尾逐个字符做异或得到FCS56完整帧为“00RD0100000156*”再加回车。RD命令的正文依次是起始通道号四位和通道数四位D256的十六进制为0100。RS-232C接线时注意交叉通讯对方的发送接PLC的接收、接收接发送信号地直连不使用硬件握手时可在DB9的RS与CS脚之间短接。RS-485组网时A/B极性要对应末端设备接入终端电阻总线按手拉手方式布线。串口两侧波特率、数据位、停止位、校验必须逐项一致标准为9600、7,2,EHost Link单元号要与上位机或触摸屏驱动里填写的站号一致默认0RS-232C收发交叉接线、信号地直连RS-485注意A/B极性和终端电阻改完串口设置要下载并重新上电DIP开关位置与设置来源要对应串口不能被其他软件同时占用否则会提示无法连接五、通讯不上怎么排查5.1 按物理层、参数、防火墙、路由分层查通讯不上最忌讳一上来就怀疑程序。建议按“物理连接→通讯参数→电脑防火墙与网卡→网络路由”逐层判断先看网线、串口线和指示灯再核对IP、端口、节点号和串口参数然后检查防火墙是否拦截、电脑是否有多个网卡选错网段最后再查跨网段路由和FINS节点转换方式。故障现象可能原因处理方向ping不通PLC网线故障、IP不在同一网段、子网掩码不一致查线缆与指示灯核对IP和掩码ping通但FINS连不上端口不是9600、节点号与IP末段不一致统一端口核对节点号与转换方式TCP握手无响应防火墙拦截9600、PLC非Server模式关闭或放行防火墙确认PLC被动响应串口完全无数据收发接反、波特率不一致、串口被占用交叉接线核对参数关闭占用软件串口返回乱码波特率/校验不一致、波特率过高受干扰统一帧格式降波特率并做好屏蔽返回异常结束码内存区代码或地址错误、跨网未配路由核对区代码与地址查响应代码表5.2 常用交叉验证手段用电脑ping PLC可以先把网络层问题和应用层问题分开ping通则说明物理连接和IP配置正常应重点查端口、FINS节点和防火墙ping不通则先回到网线和IP地址。串口可用短接自发自收或USB转串口回环测试区分线缆问题还是PLC问题。有条件时换一根确认完好的通讯线、换一个USB转串口模块对比往往能快速锁定故障点。六、常见问题FAQ6.1 高频疑问解答QFINS节点号是不是随便设必须和IP最后一段一样吗A采用自动转换方式时节点号应等于IP地址最后一段例如IP末段是3节点号就设3范围1到254。如果使用IP地址表或复合地址表方式可以手动指定对应关系但要保证网络内节点号不重复。多数现场用自动转换最省心保持二者一致即可。QFINS/TCP和FINS/UDP该选哪个A需要可靠送达、可能跨路由器或上位机长期采集数据时选FINS/TCP它先握手建连再通讯局域网内PLC之间短数据、追求实时性时可用FINS/UDP。两者默认端口都是9600选型后上位机驱动和PLC侧要对应。QHost Link标准帧格式是什么单元号在哪里改A标准Host Link为9600bps、7位数据、2位停止位、偶校验即9600、7,2,E。在CX-Programmer的PLC设置对应串口选项卡里设模式、单元号和帧格式单元号默认0改完下载并重新上电。DIP开关第4、5脚与串口设置来源有关细节以型号手册为准。Q电脑能ping通PLC但软件就是读写不了数据怎么办Aping通只代表网络层正常。依次检查通讯端口是否为9600且被防火墙放行FINS目标节点是否与PLC的IP末段一致访问CPU时单元号是否填0命令中的内存区代码如DM为82和地址是否正确。若PLC返回了非0000的结束码按FINS手册响应代码表查具体原因。总结欧姆龙PLC通讯的关键是先把物理接口和协议对应起来——以太网走FINS/TCP或FINS/UDP、串口走Host Link、触摸屏可走NT Link。配置时牢记默认端口9600、FINS用网络号.节点号.单元号寻址、自动转换下节点号等于IP末段、访问CPU单元号为0内存区读命令码0101、写0102、DM区代码82、正常结束码0000并按帧长度逐字节核对。串口Host Link标准参数为9600、7,2,E注意收发交叉接线和DIP开关位置。通讯不上时按物理连接、通讯参数、防火墙网卡、路由分层排查配合ping、串口回环和换线交叉验证绝大多数通讯故障都能快速定位。具体型号与固件的细节以对应官方手册为准。