简介:本资源为汇川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-1 | CPU模块左侧DB9接口(带A/B标识) | 标准485差分信号,支持终端电阻拨码 | ModbusRTU(主/从) | 仅支持RTU,不支持ASCII;波特率范围300~115200bps,推荐9600或19200(高波特率易受干扰) |
| RS485-2 | CPU模块右侧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)。安装时注意三点:
- 必须以管理员身份运行安装程序,否则驱动无法注册,USB转485适配器识别失败;
- 安装路径禁止含中文或空格(如
C:\Program Files\会触发权限错误),建议用C:\AutoShop\; - 安装完成后,手动运行一次
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)。配置流程如下:
在AutoShop中添加ModbusRTU主站功能块:
- 程序组织单元(POU)→ 右键 → 插入功能块 → 选择
MB_MASTER(非MB_SLAVE); - 双击打开属性,设置:
PORT: COM1 // 对应RS485-1物理口 BAUD: 19200 // 必须与变频器波特率一致 PARITY: NONE // 无校验(变频器默认) STOPBITS: 1 // 1位停止位 TIMEOUT: 1000 // 超时1秒,防死锁
- 程序组织单元(POU)→ 右键 → 插入功能块 → 选择
配置读取指令:
在MB_MASTER的REQ输入端写SM1001=TRUE(启动请求);SLAVE填变频器从站地址(如1);ADDR填起始寄存器(如40001,注意AM600自动转换为0x0000格式);COUNT填读取数量(如2,读40001+40002);DATA_PTR指向DB块中的变量地址(如DB1.DBW0)。关键验证点:
- 下载程序后,观察
MB_MASTER的DONE输出是否周期性置位(成功); - 若
ERROR置位,查STATUS字:16#0004=超时(检查接线/地址/波特率),16#0008=校验错(检查奇偶校验设置)。
- 下载程序后,观察
3.3 PLC作为ModbusRTU从站(接收上位机指令)
典型场景:组态王通过485向AM600写入控制字(如启动命令写入40001)。配置要点:
启用从站服务:
AutoShop → 工程 → 属性 → 通讯 → Modbus RTU → 勾选"启用Modbus RTU从站";
设置站号(如2)、波特率(必须与上位机一致)、数据位/校验位(同主站)。映射寄存器地址:
在"Modbus RTU从站映射"表中,将PLC内部变量与Modbus地址绑定:Modbus地址 PLC变量 数据类型 40001 M100.0 BOOL 40002 DB1.DBD0 DINT 致命陷阱:
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数据)
无需编程,纯配置:
AutoShop → 工程 → 属性 → 通讯 → Modbus TCP从站 → 勾选"启用";
在"Modbus TCP从站映射"表中,将PLC变量映射至Modbus地址:
40001→M100.0(BOOL)40002→DB1.DBD0(DINT)40004→DB1.DBW4(WORD)
关键验证命令(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小时的呼吸节奏”。希望帮到你。
本文还有配套的精品资源,点击获取