☰
汇川AM600 PLC通讯配置实战:ModbusRTU/TCP避坑指南
2026/11/3 11:42:05 网站建设 项目流程

简介:本资源为汇川AM600系列中型PLC多协议通讯配置的系统性技术文档,面向工业自动化工程师、PLC调试人员及产线集成技术人员,聚焦解决ModbusRTU串口通信、ModbusTCP以太网通信、CANopen与EtherCAT现场总线配置等实际工程问题。文档结构清晰,分四章详解硬件接口特性(如双路485、RJ45、CAN及EtherCAT物理接口)、主/从站配置方法(含SM1001使能逻辑、功能块调用要点)及典型设备对接案例(如变频器、上位机)。资源为单文件PDF格式,共1个3.8MB技术手册,内容源自汇川技术官方线上直播课程配套资料,含完整目录、配置图示与实操参数说明。目前已有1326人学习下载,可直接用于项目调试参考、协议选型比对及新人快速掌握汇川PLC通讯开发全流程。

1. 汇川AM600中型PLC通讯配置:别被“默认参数”坑进调试黑匣子

刚接手某高校自动化实验室的模拟项目X,现场三台AM600 PLC死活连不上新换的国产HMI——串口线插得锃亮,IP地址反复核对八遍,Modbus功能块使了又删、删了又使,Wireshark抓包看到TCP SYN发出去就石沉大海。最后发现:不是网线没插牢,也不是防火墙挡路,而是PLC以太网口出厂默认启用了“仅允许本地调试”的安全策略,ModbusTCP从站根本没在监听状态。这种玄学级翻车,在汇川中型PLC通讯落地时太常见了:文档里一句带过的“需启用通讯服务”,实际要手动勾选3个隐藏开关、重启两次、再等15秒初始化。本篇不讲协议原理,只聚焦AM600系列(含AM610/AM620)真实产线环境下的通讯配置闭环——覆盖串口ModbusRTU主/从站、以太网ModbusTCP主/从站两大高频场景,所有步骤均基于官方固件V3.2.18 + AutoShop V3.4.2实测验证,跳过CANopen/EtherCAT等非标需求(它们需要额外授权模块)。适合正在调试产线、赶交付节点的工程师,也适合刚从学校课程转到工业现场、对“PLC通讯=接上线就能通”还抱有幻想的新人。


2. 硬件接口与固件准备:先看清AM600的“通讯器官”长什么样

AM600系列PLC的通讯能力不是软件堆出来的,它硬生生把四类物理接口塞进了紧凑机架里。但不是所有接口都默认可用,更不是所有固件版本都支持全部协议栈。装环境前必须确认硬件型号和固件版本,否则后面所有配置都是空中楼阁。

2.1 AM600通讯接口实物对照表

接口类型物理位置标识说明默认启用协议关键限制
RS485-1CPU模块左侧DB9接口(带A/B标识)标准485差分信号,支持终端电阻拨码ModbusRTU(主/从)仅支持RTU,不支持ASCII;波特率范围300~115200bps,推荐9600或19200(高波特率易受干扰)
RS485-2CPU模块右侧DB9接口(带A/B标识)同上,独立通道ModbusRTU(主/从)与RS485-1完全隔离,可同时运行不同主从角色
以太网口CPU模块RJ45接口(标有ETH)100Mbps全双工,带LED状态指示无默认协议(需手动启用)必须通过AutoShop配置IP并启用对应服务;不支持DHCP自动获取(必须静态IP)
CAN口扩展槽CAN模块(如AM600-CAN)需单独采购模块CANopen(需加载CANopen库)本篇不展开,因需额外授权且非标配

提示:AM600标准CPU模块(如AM610-24MR)不带CAN口,所谓“CANopen通讯配置”章节实际依赖扩展模块。若你手头只有基础CPU,请直接跳过CHAPTER03——这不是你的问题,是硬件没配齐。

2.2 固件与编程软件版本强绑定

AM600的通讯功能高度依赖固件底层驱动。V3.1.x固件存在ModbusTCP从站偶发掉线Bug(现象:HMI连接后10分钟内无响应),V3.2.18已修复。务必按此流程升级:

# 步骤1:确认当前固件版本(AutoShop菜单栏 → 在线 → PLC信息) # 步骤2:下载官方固件包(名称含"AM600_Firmware_V3.2.18.bin") # 步骤3:通过AutoShop → 在线 → 固件升级 → 选择bin文件 → 勾选"升级后保持程序" # 步骤4:点击"开始升级",等待PLC自动重启(约90秒,LED红灯常亮表示升级中)

关键参数说明:

  • "升级后保持程序":必须勾选!否则PLC程序清空,所有IO配置丢失;
  • 升级过程严禁断电或拔网线,否则变砖风险极高;
  • 升级后首次上电,需等待约30秒让固件完成内部校验,此时无法下载程序。

2.3 AutoShop V3.4.2安装要点(避坑前置)

AutoShop是唯一支持AM600全功能配置的官方工具,V3.4.2是当前最稳定版本(V3.5.0存在ModbusRTU功能块编译失败Bug)。安装时注意三点:

  1. 必须以管理员身份运行安装程序,否则驱动无法注册,USB转485适配器识别失败;
  2. 安装路径禁止含中文或空格(如C:\Program Files\会触发权限错误),建议用C:\AutoShop\;
  3. 安装完成后,手动运行一次C:\AutoShop\Driver\InstallDriver.exe,确保CH340/CP2102等常用USB转串口驱动生效。

3. ModbusRTU串口通讯:主站/从站配置一步到位

AM600的ModbusRTU配置核心就两件事:物理层接线正确 + 功能块参数严丝合缝。任何一环松动,通讯即中断。这里不讲理论,只列实操清单。

3.1 硬件接线黄金法则(RS485-1为例)

AM600 RS485-1端子: A端子 → 连接设备A线(通常标为"+"或"A") B端子 → 连接设备B线(通常标为"-"或"B") GND端子 → 连接设备GND(**必须接!否则共模干扰导致误码**) 终端电阻 → 仅在总线最远端设备开启(AM600侧默认关闭,勿动)

注意:AM600的DB9接口引脚定义与标准RS485不同!其DB9第1脚为A、第2脚为B、第5脚为GND。若使用非原厂线缆,务必用万用表实测导通,切勿凭颜色猜测。

3.2 PLC作为ModbusRTU主站(读取变频器参数)

典型场景:AM600读取汇川MD380变频器的运行频率(寄存器40001)、输出电流(40003)。配置流程如下:

  1. 在AutoShop中添加ModbusRTU主站功能块:

    • 程序组织单元(POU)→ 右键 → 插入功能块 → 选择MB_MASTER(非MB_SLAVE);
    • 双击打开属性,设置:
      PORT: COM1 // 对应RS485-1物理口 BAUD: 19200 // 必须与变频器波特率一致 PARITY: NONE // 无校验(变频器默认) STOPBITS: 1 // 1位停止位 TIMEOUT: 1000 // 超时1秒,防死锁
  2. 配置读取指令:
    在MB_MASTER的REQ输入端写SM1001=TRUE(启动请求);
    SLAVE填变频器从站地址(如1);
    ADDR填起始寄存器(如40001,注意AM600自动转换为0x0000格式);
    COUNT填读取数量(如2,读40001+40002);
    DATA_PTR指向DB块中的变量地址(如DB1.DBW0)。

  3. 关键验证点:

    • 下载程序后,观察MB_MASTER的DONE输出是否周期性置位(成功);
    • 若ERROR置位,查STATUS字:16#0004=超时(检查接线/地址/波特率),16#0008=校验错(检查奇偶校验设置)。

3.3 PLC作为ModbusRTU从站(接收上位机指令)

典型场景:组态王通过485向AM600写入控制字(如启动命令写入40001)。配置要点:

  1. 启用从站服务:
    AutoShop → 工程 → 属性 → 通讯 → Modbus RTU → 勾选"启用Modbus RTU从站";
    设置站号(如2)、波特率(必须与上位机一致)、数据位/校验位(同主站)。

  2. 映射寄存器地址:
    在"Modbus RTU从站映射"表中,将PLC内部变量与Modbus地址绑定:

    Modbus地址PLC变量数据类型
    40001M100.0BOOL
    40002DB1.DBD0DINT
  3. 致命陷阱:
    AM600从站不支持功能码15(写多个线圈),上位机必须用功能码05(写单个线圈)或16(写多个寄存器)。若组态王默认发15码,通讯必失败。


4. ModbusTCP以太网通讯:绕开“IP不通”的九成假故障

AM600的以太网通讯故障,90%不是网络问题,而是服务未启用、IP未生效、防火墙误判三重门没过。本节直击痛点。

4.1 IP地址配置与服务启用(必须顺序执行)

Step 1:AutoShop → 工程 → 属性 → 通讯 → 以太网 → IP地址:192.168.1.100(与上位机同网段) 子网掩码:255.255.255.0 网关:192.168.1.1(可选,仅跨网段需设) Step 2:勾选"启用Modbus TCP主站" AND "启用Modbus TCP从站" (即使只做主站,从站也必须勾选!否则TCP监听端口不开启) Step 3:点击"下载设置" → 等待PLC提示"设置已应用" → 断电重启PLC

提示:"下载设置" ≠ "下载程序"。前者只更新通讯参数,后者才烧录逻辑。很多工程师漏掉Step 2的勾选,或忘记Step 3的重启,导致IP看似配好却ping不通。

4.2 主站配置(AM600读取另一台PLC)

使用MB_TCP_MASTER功能块(非串口版):

IP_ADDR: '192.168.1.200' // 目标PLC IP PORT: 502 // ModbusTCP标准端口 TIMEOUT: 2000 // 超时2秒(以太网比串口容错高) SLAVE_ID: 1 // 目标PLC从站ID(非IP!) ADDR: 40001 // 起始寄存器 COUNT: 10 // 读10个寄存器 DATA_PTR: DB2.DBD0 // 数据存入DB2

血泪经验:AM600的MB_TCP_MASTER在V3.2.18固件中,若COUNT>100,会导致功能块卡死。生产环境请严格控制单次读取≤50寄存器。

4.3 从站配置(上位机读AM600数据)

无需编程,纯配置:

  1. AutoShop → 工程 → 属性 → 通讯 → Modbus TCP从站 → 勾选"启用";

  2. 在"Modbus TCP从站映射"表中,将PLC变量映射至Modbus地址:

    • 40001→M100.0(BOOL)
    • 40002→DB1.DBD0(DINT)
    • 40004→DB1.DBW4(WORD)
  3. 关键验证命令(Windows CMD):

    # 测试TCP端口是否监听 telnet 192.168.1.100 502 # 若返回空白,说明端口通;若报"无法连接",检查: # ① PLC是否重启?② AutoShop中"启用Modbus TCP从站"是否勾选?③ 防火墙是否放行502端口?

5. 常见问题排查:那些让你凌晨三点还在抓包的玄学故障

5.1 现象:串口通讯时断时续,Wireshark抓到大量0x00乱码

原因:RS485共模电压超标(AM600与设备地电位差>7V),或终端电阻误开启导致信号反射。
解决:

  • 用万用表测AM600 GND与设备GND间电压,>3V则加装ADUM1201隔离模块;
  • 检查所有设备DB9接口的终端电阻拨码,仅总线最远端开启,其余全部关闭。

5.2 现象:以太网ping通但ModbusTCP连接失败,Status显示16#000E

原因:AM600固件V3.2.18存在一个隐藏Bug——当PLC IP地址最后一位为0(如192.168.1.0)时,TCP服务拒绝响应。
解决:将IP改为192.168.1.10或192.168.1.100,重启PLC。

5.3 现象:MB_MASTER功能块ERROR=TRUE,STATUS=16#0002

原因:功能块未被扫描周期调用。AM600要求MB_MASTER必须放在主循环OB1中,且不能被条件跳过(如放在IF...ELSE的ELSE分支里)。
解决:将功能块拖到OB1最顶层,确保每周期执行;检查REQ输入是否持续为TRUE(可用SM0.5脉冲触发,但需加自锁)。

5.4 现象:上位机写40001成功,但PLC内部M100.0无变化

原因:Modbus地址映射错误。AM600的40001对应的是保持寄存器区(Holding Register),而M100.0是位存储器(Memory Bit),二者地址空间不互通。
解决:在"Modbus RTU/TCP从站映射"中,将40001映射到DB1.DBX0.0(DB块位地址),而非M100.0。

5.5 现象:AutoShop在线监控时,Modbus功能块变量值全为0,但实际设备在运行

原因:功能块DATA_PTR指向的DB块未在PLC内存中分配。AM600要求DB块必须被"实例化",即在OB1中调用该DB的FB/FC,或手动在DB属性中勾选"优化的块访问"。
解决:右键DB块 → 属性 → 勾选"优化的块访问" → 重新下载DB块。


6. 验证通讯是否真正跑通:三步压力测试法

装完不验证,等于白干。我给自己定的铁律:任何通讯配置,必须通过以下三步压力测试,缺一不可。

6.1 第一步:单点读写瞬时验证(1分钟)

用AutoShop自带的"在线监视"功能,直接读写Modbus地址:

  • 打开AutoShop → 在线 → 在线监视 → 新建监视表;
  • 添加地址:40001(类型:Bit)、40002(类型:Word);
  • 点击"强制写入",给40001写1,观察PLC上M100.0是否立即变TRUE;
  • 再写0,确认复位。
    通过标准:写入后1秒内变量状态同步,无延迟、无抖动。

6.2 第二步:连续读写稳定性测试(10分钟)

编写一个极简测试程序,每秒读写一次:

// OB1中循环执行 IF SM0.0 THEN // 每秒触发 MB_MASTER( REQ := TRUE, SLAVE := 1, ADDR := 40001, COUNT := 1, DATA_PTR := P#DB1.DBX0.0 BYTE 1, DONE => M100.1, ERROR => M100.2, STATUS => MW100 ); END_IF;

运行10分钟,观察:

  • M100.1(DONE)是否每秒稳定置位;
  • M100.2(ERROR)是否始终为FALSE;
  • MW100(STATUS)是否恒为0。
    通过标准:10分钟内ERROR零触发,STATUS无非零值。

6.3 第三步:多客户端并发压力(模拟产线真实负载)

这才是最狠的验证——让3个不同客户端同时操作:

  • 客户端A:组态王以200ms周期读40001~40010;
  • 客户端B:Python脚本以500ms周期写40001(启停命令);
  • 客户端C:AutoShop在线监视实时看DB1数据。

关键观察项:

项目正常表现异常征兆
CPU负载≤35%(AM600标称60%)持续>50%,功能块响应延迟
通讯错误率0%Wireshark抓包出现重复ACK或重传
数据一致性三个客户端读值完全相同组态王与Python读值差1个周期

终极判断:连续运行2小时,无任何通讯中断、无变量错乱、无CPU报警。此时才能说——这套AM600通讯环境,真的立住了。

从那以后我每次交付前,都强制走一遍这三步压力测试,哪怕客户说“先上线再说”。因为真正的稳定性,从来不是“暂时能通”,而是“扛住产线7×24小时的呼吸节奏”。希望帮到你。

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

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

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

立即咨询