☰
汇川中型PLC通讯实战:从PDF参数到报文跑通全解析
2026/10/14 13:10:11 网站建设 项目流程

简介:这份PDF源于汇川技术中型PLC线上直播课程,面向工业自动化工程师、PLC调试及维护人员,系统讲解中型PLC与外部设备通讯的配置方法。内容覆盖串口通讯(ModbusRTU主/从站)、以太网通讯(ModbusTCP主/从站)、CANopen及EtherCAT四大通讯模式,从硬件接口、主站配置到功能块应用均有图文说明,适合在实际项目中快速查阅与配置。资源为单个PDF文件,压缩包大小3.8MB,轻量便于下载;目前已有1316人浏览学习。文档包含直播课程的完整课件,章节结构清晰,配合汇川技术社区的回放视频使用,可帮助读者掌握485接口、RJ45接口、CAN接口等硬件接线方式,理解ModbusRTU与ModbusTCP功能块调用逻辑,并了解CANopen和EtherCAT在汇川中型PLC中的配置流程。相比零散笔记,这份手册更具系统性,是学习汇川中型PLC通讯的实用参考资料。

1. 汇川中型PLC通讯:拿到PDF不是终点,跑通报文才是开始

做设备集成的人大概率遇到过这种场景:项目资料里躺着一份《汇川中型plc通讯.pdf》,里面有引脚定义、寄存器地址、报文示例,看起来什么都有,可真到现场把PLC和第三方设备对接时,才发现照着文档配完参数,通讯状态依然是红的。原因很简单,中型PLC的通讯不是“抄几个地址”就能跑通的,它涉及协议栈选型、数据区映射、扫描周期、从站站号、超时重试这一整套链路。这篇笔记不打算从头科普PLC是什么,而是直接沿着这份PDF最常见的几个章节——通讯接口、协议配置、地址映射、诊断手段——把我在现场踩过的坑和验证过有效的做法摊开讲。适合刚接触汇川中型PLC的电气工程师,也适合被通讯问题折磨过、想系统排查一遍的熟手。读完你能回答三个问题:这套通讯方案该用哪个协议?参数在哪配、怎么配才能稳定?通讯不成功时,第一步该查什么?

2. 通讯架构与协议选型:Modbus TCP、EtherCAT、CANopen 哪个先学

2.1 中型PLC的通讯接口和常见拓扑

汇川中型PLC(以AM系列为代表)在硬件上一般提供两类通讯接口:一类是串口,常见RS485/RS232,用于连接变频器、仪表、扫码枪;另一类是以太网口,既能跑Modbus TCP,也能作为EtherCAT主站去带伺服驱动器。除此之外,部分机型还板载CANopen接口,用于老设备改造场景。做通讯之前,先把硬件手册里的接口分布图看明白,别把RS485当成RS232去接,电平都不同,轻则通讯不上,重则烧毁从站芯片。

常见拓扑有三种:点对点、总线型、星型。串口一般是点对点或者菊花链,取决于从站是否支持多点;Modbus TCP天然支持星型,用交换机扩展节点数;EtherCAT则是典型的总线型拓扑,主站通过网口串联各从站,最后一端必须接终端电阻或者配置为自动终结。PDF里的通讯章节通常会给出接线示意,但实际做的时候建议自己画一张设备地址表,把每个从站的站号、IP、协议、波特率、奇偶校验全列上,后面排查能省一半时间。

通讯架构上还有一个容易忽视的点:PLC的程序扫描周期和通讯刷新周期是异步的。中型PLC多数采用周期性刷新机制,例如Modbus TCP的保持寄存器区每10ms同步一次,而梯形图程序扫描可能只有2ms,这就导致你读回来的数据实际上是一两个周期前的快照。对同步性要求高的场合,比如视觉定位和伺服轴联动,必须走EtherCAT或专用总线,不能用Modbus TCP做实时控制。

所以拿到PDF后我一般先翻通讯架构图,确认PLC是作为主站还是从站。工程里常见的是PLC做主站去采集第三方设备,偶尔也有上位机做Modbus主站、PLC做从站被读写的情况。两种角色的参数配置思路完全不同:做主站要配从站列表、轮询周期、超时时间;做从站则要映射寄存器区,还要注意数据字节序。

2.2 三种协议的实用对比与选型

中型PLC支持多协议不是让你随便挑,每种协议都有它的脾气。我习惯用一张表做选型,直接贴在项目笔记里。

协议实时性接线/拓扑适用场景需要关注的参数
Modbus RTU (RS485)较差,毫秒级,受轮询周期影响两线/四线,菊花链,波特率常见9600/19200仪表、变频器、老设备波特率、数据位、校验位、从站站号
Modbus TCP较差,受网络和PLC扫描影响网线+交换机,星型上位机通讯、远程IO、网关设备IP地址、端口号、单元ID、超时时间
EtherCAT微秒级,硬实时网线串联,闭环拓扑伺服轴、高速IO、视觉触发拓扑顺序、从站地址、DC同步时钟
CANopen中等,PDO周期可到1msCAN_H/CAN_L双绞线,终端电阻120Ω运动控制、传感器网络波特率、节点ID、PDO映射、心跳时间

选型时先说结论:带伺服就选EtherCAT,采集第三方仪表就选Modbus RTU或TCP,设备数量多且分散就选Modbus TCP走交换机。CANopen现在用得越来越少,除非现场已经有大量CANopen从站,否则新项目不建议再拉CANopen总线,维护成本不低。

PDF里的通讯章节一般会说明PLC支持哪些协议,但不会告诉你怎么选。我的经验是:先问从站设备支持什么协议,再问控制周期要求,最后才问距离。很多工程师一上来就选Modbus TCP,因为网线方便,结果发现伺服从站根本不支持,或者通讯周期抖动到几十毫秒,只能返工改EtherCAT。非实时场景下Modbus TCP确实省事,但要注意它的“单元ID”这个参数——很多资料里叫Unit ID或Slave ID,它本质是TCP报文里嵌的RTU地址。如果你用PLC去连一个网关下的串口设备,单元ID必须和网关下面挂的从站号一致,否则网关会丢报文。

2.3 从PDF资料里读通讯参数的技巧

这一节是给“拿到PDF不知道看什么”的人准备的。一份常见的汇川中型PLC通讯PDF,结构通常是:通讯概述、接口定义、协议规格、寄存器地址、示例程序、故障代码。你不需要通读,按这个顺序去提取关键信息:

先看接口定义,确认PLC端子的针脚号和信号名,搞清楚该接哪几根线。以RS485为例,很多PDF会用“A”和“B”表示差分线,但有的厂家标“D+”和“D-”,还有的标“485+”和“485-”,极性接反不会烧设备,但通讯帧会全是错码。再看协议规格,这里注意两个地方:一是支持的从站数量,二是数据格式。Modbus RTU就有RTU和ASCII两种帧格式,PDF里如果没写明,默认按RTU处理,但是最好在PLC软件里确认一下。

寄存器地址表是最花时间的一页。中型PLC的寄存器地址一般分几个区:输入寄存器(只读)、保持寄存器(可读写)、离散输入、线圈。第三方设备提供的PDF里,地址经常会写成“40001”这种PLC风格,或者“0x1000”这种原始地址。换算时一定注意:40001对应的是PLC的保持寄存器起点,去掉4后才是Modbus数据地址0。我见过不少人直接把40001填进PLC的地址栏,结果读到的数据对不上,就是因为没做减一或减基准的操作。这种问题在PDF里不会明说,属于行业惯例,只能靠经验。

最后看故障代码表。通讯失败时PLC报的错误码和PDF里列的对不上是很正常的,因为PDF写的是设备侧的故障码,而PLC侧报的是网关或主站的错误码。建议把两套错误码都抄到一张纸上,现场对照着查。别依赖PDF自带的示例程序,那些程序一般只演示一个从站一次读写,真实项目里多个从站轮询、超时处理、数据异常判断都得自己补。

3. 在编程软件里配置通讯:从新建工程到跑通一条Modbus TCP报文

3.1 新建工程与硬件组态的最小步骤

汇川中型PLC的编程软件以InoProShop为主,界面和其他主流PLC软件差异不大,核心逻辑是“组态硬件→配置协议→编写程序→下载监控”。打开软件后第一步是新建工程,选择PLC型号。这里要注意,PDF里给你的通讯参数是基于某个固件版本的,如果PLC的实际固件版本和PDF不一致,有些寄存器地址和协议选项会变化。我一般会在建立工程后先查看PLC属性里的固件版本,并记录下来。

硬件组态时,双击PLC的以太网口,设置IP地址。一个经典坑是:PLC有两个网口时,一个用于EtherCAT,一个用于Modbus TCP,两个网口的IP必须设置在不同网段。比如EtherCAT口设192.168.1.1,Modbus TCP口设192.168.2.1,否则路由混乱,数据走错口。PDF里的网络配置章节通常只有一个示意图,你要做的实际配置是给每个网口分配独立IP,并确保和从站设备在同一个网段。

组态完成后,建议先别急着写程序,而是用软件自带的“设备扫描”或“通讯测试”功能,手动Ping一下从站地址。Ping通只能说明链路通,不能说明协议通,但至少能排除网线、IP段这类物理问题。这一步很有价值,很多通讯“玄学”问题最后都出在网线水晶头没压好或IP看错了。

3.2 配置Modbus TCP主站并读写保持寄存器

下面给出一个最小可用的Modbus TCP主站配置流程,以读写一台温控器的保持寄存器为例。

  1. 在设备树中右键点击“以太网”,选择“添加Modbus TCP主站”。
  2. 主站参数里设置“通讯周期”为10ms,“超时时间”为500ms,“重试次数”为3。
  3. 在主站节点下添加从站设备,填写从站IP为192.168.2.10,端口默认为502,单元ID根据温控器拨码设为1。
  4. 在从站配置里映射一条读写请求:功能码03(读保持寄存器),起始地址16,数据长度2,映射到PLC的全局变量区。
  5. 下载工程,进入在线监控,查看通讯状态字。

这里的关键参数说明:通讯周期不是越短越好,10ms对于温控器这类设备已经够用,如果设备响应慢,会触发超时重试,反而占用主站资源。超时时间一般设为通讯周期的10倍以上,因为从站设备的内部处理时间可能比PLC请求周期长。重试次数默认3次即可,太多会让故障持续时间变长,PLC误以为从站掉线。

ST程序里通常需要读取“主站状态”和“从站状态”两个系统变量,示例代码如下:

// 读取Modbus TCP主站通讯状态 IF ModbusTCP_Master_Status = 1 THEN // 1表示通讯正常 Comm_Ok := TRUE; ELSE Comm_Ok := FALSE; END_IF // 读取从站返回的数据,注意字节序 Temperature_Value := INT_TO_REAL(Modbus_Read_Data[0]) / 10.0;

逻辑说明:ModbusTCP_Master_Status是主站自动维护的状态字,程序里只做监测,不需要手动干预。Modbus_Read_Data是映射过来的数组,PLC默认按大端字节序解释数据,但很多国产设备内部是小端存储,所以读出来数值经常要交换高低字节。比如温控器返回0x1002,按大端读是4098,按小端读是513,差很多。遇到数据对不上时,第一步就交换高低字节试试。

3.3 EtherCAT主站配置与从站顺序绑定

EtherCAT配置比Modbus TCP步骤多,但逻辑更清晰。核心思维是“扫描→映射→绑定”。在InoProShop里,右键EtherCAT主站,点击“扫描从站”,软件会自动识别网段里所有从站设备并分配从站地址。扫描完,你会看到一串伺服驱动器或远程IO模块,它们的顺序就是物理链路的连接顺序,一定不能乱。

扫描成功后,为每个从站分配站地址,默认是从站连接顺序,比如第一个从站地址是1,第二个是2。这里有个坑:如果你更换了某个从站的物理位置,必须重新扫描,否则程序里映射的轴号会对应错误的设备。EtherCAT的站地址不是拨码开关设的,是主站根据拓扑动态分配的,这点和CANopen完全不同。

配置DC同步时钟时,选择“启用DC”并把同步周期设为1ms。伺服控制在多轴联动时,每个从站必须使用同一个时钟基准,否则各轴触发时间差会到几百微秒,高速跟随就会出错。同步源的参数一般在主站配置里选择“第一个从站”或“自动”,我习惯选自动,让软件自己找参考时钟。

EtherCAT程序里读从站状态用PDO映射。以伺服驱动器为例,控制字、状态字、目标位置、实际位置都是通过PDO自动周期交换的,不需要写Modbus那样的请求代码。你只需要在主站配置的PDO列表里勾选需要的对象,然后和PLC变量关联。下面是一个简单的使能伺服输出:

// EtherCAT从站使能操作 IF Start_Button THEN Servo_ControlWord := 16#0006; // 上电 ELSIF Stop_Button THEN Servo_ControlWord := 16#0007; // 快速停止 END_IF // 读取实际位置,反馈值为脉冲单位 Actual_Position := Servo_Drive_ActualPosition;

参数说明:控制字0x0006是“上电+清除故障”,0x0007是“快速停止+上电保持”。如果直接写0x000F,有些驱动器会直接报“无效控制字”。反馈位置是32位有符号整数,用0.001mm单位的话,直接乘以0.001就是实际位置。EtherCAT调通以后,通讯基本是透明的,更多时间花在驱动器参数整定上,而不是通讯本身。

4. 汇川中型PLC通讯调试中与PDF文档不符的坑:5次真实翻车记录

4.1 坑一:寄存器地址反复横跳,PDF给的地址是十进制还是十六进制

现象:照着PDF把保持寄存器地址填进PLC程序,读出来的数值完全没意义,有时能读到,但值明显是别的参数。

原因:PDF里地址表如果写“40001”,这是PLC风格地址,实际Modbus请求地址是0;如果写“0x0000”,那才是真正的协议地址。很多工程师没做换算,直接把40001当成协议地址填进去,实际访问了40100甚至更远的地方。

解决:一律先把所有地址统一换算成十六进制“实际地址”,再填到PLC的映射表。换算规则:40001换算为0x0000,40001+N换算为0x0000+N。我自己的习惯是拿到别人的PDF,先画一张“地址映射卡”,左边写PDF原文,右边写换算后的协议地址,贴在调试记录本上。

4.2 坑二:串口极性接反,报文全是乱码但通讯状态却显示正常

现象:RS485接上后,PLC和从站都能“通讯”,但读回的数据偶尔正确偶尔乱码,错误率有20%左右。

原因:A、B线接反,导致差分信号相位翻转。有些从站设备对反相不敏感,能强行识别出一部分正确帧,但噪声容限大幅下降,现场稍微有点干扰就开始乱码。

解决:把RS485的A、B线对调,或者用万用表测通讯时的A/B线电压,正常空闲时A和B之间的电压差在2V到6V之间。如果测出来是负的,说明极性接反了。记住,不要迷信网线颜色,有的厂家把A做成绿线,有的做成橙白线,现场必须用表量。

4.3 坑三:EtherCAT从站顺序变了,轴号跟着乱

现象:设备运行几个月后,突然某个轴报警或跟随机架号对应不上。重新上电后,轴1变成了轴3的位置。

原因:EtherCAT主站按物理链路顺序自动分配站地址。如果有人把中间的一个从站拔下来换位置,或者在线缆链路中额外接了一个调试设备,所有后续从站的站号都会顺延,而PLC程序里的轴号映射还是旧顺序。

解决:每次改动从站物理位置后,必须重新执行“扫描从站”,并在程序里核对PDO映射关系。更保险的做法是在从站配置里开启“固定站地址”功能,把站地址和具体的驱动器序列号绑定。这个选项不是所有固件都有,但AM系列的新固件支持。

4.4 坑四:Modbus TCP超时时间设置太短,导致频繁掉线

现象:PLC一个小时里断通讯两三次,每次持续几秒后自动恢复,看门狗没报故障,但上位机报表里能看到数据毛刺。

原因:主站通讯周期设成5ms,超时时间设成50ms。从站设备是PLC,本身响应也要10ms,偶尔主站CPU忙一下,处理请求慢了,就触发超时重试。重试过程中主站会暂停该从站的轮询,误以为掉线。

解决:把通讯周期放宽到10ms,超时时间设成200ms。Modbus TCP是请求响应模式,不是实时总线,没必要把周期压得太低。如果必须快,建议换EtherCAT,而不是在Modbus上死磕。

4.5 坑五:PDF里的字符串字节序和PLC默认不一致

现象:读字符串类型的数据(比如设备序列号),读出来的字符顺序颠倒,例如“ABCD”变成“BADF”或“DCBA”。

原因:Modbus协议规定寄存器是大端序,但很多字符串设备按照“两个字节为一个字”的方式存储,低字节在前高字节在后,也就是单词内部字节交换,不是整个字符串逆序。

解决:在PLC侧写一个字节交换函数,按字为单位交换高低字节。例如读取到字数组String_Data[0]和String_Data[1],实际字符顺序是String_Data[0]的低字节、高字节,String_Data[1]的低字节、高字节。写程序时把这个处理逻辑封装成功能块,以后读任何字符串设备都能复用。

5. 把通讯程序做成不黑匣子的验证技巧:轮询、状态字与异常码

通讯调通之后,最怕的是设备偶尔异常,但程序里看不出问题。我的习惯是花半小时做一个“通讯健康监测”功能块,别看它简单,后面省了无数个深夜去现场看报文。

第一步,为主站和每个从站建立状态寄存器。Modbus TCP主站一般有状态字,EtherCAT从站也有AL状态。把这些状态自动拷贝到一个全局数组里,并用一个整型变量表示通讯故障次数。程序里每隔100ms检查一次状态,如果从OK变成FAIL,就计数器加一,并记录当前时间戳。这样出问题时,你至少知道是哪一秒钟、哪一个从站开始不正常的。

第二步,做一个手动轮询的调试页面。不要只依赖PLC的在线监控,因为监控窗口中断电或CPU重启后数据就没了。我一般会把关键通讯变量映射到一个HMI触摸屏页面,包括主站状态、每个从站的扫描周期实际值、最近一次错误码、通讯失败计数器。现场调试时发现异常,直接看屏就能定位。

第三步,把通讯数据按“有效值”和“原始值”分开保存。原始值是直接从报文里读出来的数据,有效值是经过量程转换、字节交换、坏值判断之后的数据。程序里保留原始值一个数组,方便对比。这个习惯救过我一次,某个传感器偶尔输出全0,如果直接采信原始值,系统就会按0算实际温度,导致保温误动作。加了坏值判断后,0被识别为无效,改用上一次有效值,系统就没再误报。

进阶用法里,还可以利用PDF自带的诊断接口。汇川中型PLC的通讯模块通常提供“总线诊断字”,里面包含总线错误帧数、重启次数等信息。把这些诊断字在程序里周期性读取,当错误帧数持续增长时,提前告警,而不是等通讯完全断了再处理。这相当于给通讯链路装了一个压力表,比“能通就行”的调试思路强很多。

最后说一个我的个人习惯:每次通讯调完,我都会把PLC的通讯参数截图保存,连同从站设备的拨码开关拍照、网线走向记录,一起压缩成一份现场通讯档案。这个档案不需要多正式,但必须包含“实际能通的参数”和“PDF上写的参数”的差异。因为很多PDF是多个固件版本共用的,里面有不少废弃参数,不留档的话,三个月后设备故障,你再对着PDF查,又会掉进同样的坑。

希望这篇笔记能帮你少走一段弯路,把汇川中型PLC的通讯从“照着PDF配完还通不了”变成“半小时定位问题”的确定性工作。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询