ACS580变频器通过USB-RS485串口助手进行Modbus RTU通讯测试与参数调整方法
在工业现场维修、二手变频器检测、PLC通讯调试、HMI通讯验证以及远程技术支持过程中,经常需要确认一台ABB ACS580变频器的内置现场总线接口是否正常。ACS580本体自带EFB接口,也就是Embedded Fieldbus,通常可以作为Modbus RTU从站使用。通过一只USB-RS485转换器、一台电脑和串口调试软件,就可以完成最基础的485通讯测试,包括读取寄存器、写入控制字、写入频率给定、远程启动、停止和故障复位。

这种测试方法的价值在于:不需要PLC、不需要触摸屏、不需要专用调试软件,只要485物理层和变频器参数配置正确,就可以直接判断通讯口、通讯参数、控制字逻辑、远程控制链路是否正常。对于维修公司、设备调试人员、外贸技术支持人员来说,这是一个非常实用的ACS580通讯验证流程。
本文结合实际调试过程,系统说明ACS580通过USB-RS485和串口助手进行Modbus RTU通讯测试的完整方法,包括接线、参数设置、串口软件设置、Modbus报文、启动停止逻辑、常见故障6681、AFE1/off2以及运行中COM口掉线等问题的处理方法。
一、ACS580的EFB接口与485接线
ACS580控制板上有一个标注为EFB的三针接口,用于内置现场总线通讯。它可以用于Modbus RTU通讯测试。常见端子定义如下:
测试时,USB-RS485转换器与ACS580的接线可以按以下方式连接:
| ACS580 X5/EFB | USB-RS485转换器 |
|---|
| 29 B+ | RS485 A/B其中一端 |
| 30 A- | RS485 A/B另一端 |
| 31 DGND | GND |
这里需要特别注意一点:不同USB-RS485转换器对A、B、D+、D-、485+、485-的标识并不完全统一。国产便宜转换器尤其容易出现A/B标识和设备端定义相反的情况。因此,如果参数和串口设置都正确,但完全没有返回数据,第一件事不是怀疑ACS580串口损坏,而是直接把29和30两根通讯线对调测试。
单台电脑直连单台ACS580时,建议先把ACS580旁边的TERM终端电阻拨码和BIAS偏置拨码打开。单机短距离测试时,这样更容易获得稳定通讯。如果以后接入PLC多站网络,再根据485总线规范决定哪些设备打开终端电阻和偏置。
推荐接线方式是使用一对双绞屏蔽线作为A/B通讯线,DGND单独接入。屏蔽层建议单端接地,避免屏蔽层两端接地形成地环流。临时测试虽然可以用普通线,但在变频器实际运行、输出频率较高、电机线较长时,普通散线很容易受到高频干扰。
二、ACS580侧需要设置的通讯参数
ACS580要通过Modbus RTU通讯控制,首先必须启用EFB,并设置正确的通讯参数。常用测试参数如下:
| 参数 | 建议值 | 说明 |
|---|
| 58.01 协议允许 | Modbus RTU | 启用内置现场总线 |
| 58.03 节点地址 | 1 | Modbus从站地址 |
| 58.04 波特率 | 9.6 kbps | 对应串口助手9600 |
| 58.05 奇偶校验 | 8 偶 1 | 对应9600, 8, Even, 1 |
| 58.06 通讯控制 | 刷新设置 | 修改58组后执行 |
| 58.25 控制配置文件 | ABB变频器 / ABB Drive | 与047F控制字匹配 |
以上参数设置完成后,必须执行58.06“刷新设置”,或者对变频器断电重新上电。很多调试失败并不是接线错误,而是58组参数修改后没有刷新,导致变频器仍然按照旧参数工作。
除了58组通讯参数,还需要把启停命令源和频率给定源切到EFB:
| 参数 | 建议值 | 说明 |
|---|
| 19.11 外部1/外部2选择 | EXT1 | 固定使用外部1 |
| 20.01 外部1命令 | 内置现场总线 / EFB | 启停命令来自Modbus |
| 28.11 外部1频率给定1选择 | EFB给定值1 | 频率给定来自Modbus |
| 19.01 实际运行模式 | 标量Hz / 频率模式 | 普通通讯测试常用频率控制 |
如果20.01没有设为EFB,即使串口助手写入控制字成功,变频器也不会执行远程启动。如果28.11没有设为EFB给定值1,即使写入400002成功,面板也可能看不到对应的频率给定。
调试阶段还建议临时处理EFB通讯丢失监控,避免用串口助手手动发送时触发6681故障:
| 参数 | 调试建议 |
|---|
| 58.14 通讯丢失动作 | 无动作 / 不动作 |
| 58.15 通讯丢失模式 | 任何消息 |
| 58.16 通讯丢失时间 | 30s或更长 |
正式设备投运后,不建议长期关闭通讯丢失保护。PLC正式控制时,应让PLC周期性写入控制字和给定值,通讯丢失动作可以根据现场安全要求设为故障、停车或其他动作。
三、电脑串口助手的设置
电脑端需要安装USB-RS485转换器驱动。设备管理器中能看到类似COM3、COM4、COM9等串口号后,打开串口助手进行设置。
常用设置如下:
| 项目 | 设置 |
|---|
| 串口号 | 设备管理器显示的COM口 |
| 波特率 | 9600 |
| 数据位 | 8 |
| 校验位 | Even / 偶校验 |
| 停止位 | 1 |
| 流控 | None |
| 发送格式 | HEX |
| 接收格式 | HEX |
如果ACS580参数58.05为“8 偶 1”,串口助手也必须设置为Even校验。如果串口助手设置为None校验,通常不会有正确返回,甚至ACS580的错误计数会增加。
另外,串口助手如果带有“自动CRC”功能,需要特别注意。Modbus RTU报文最后两个字节是CRC校验。如果软件自动追加CRC,发送框中就只能填写不含CRC的部分;如果发送框中已经输入完整报文,就必须关闭自动CRC。否则实际发出去的报文会重复带CRC,ACS580会丢弃该帧。
例如读取400001到400006,完整报文是:
01 03 00 00 00 06 C5 C8
如果串口助手关闭CRC,就直接发送上面完整帧。
如果串口助手打开自动CRC,则只输入:
01 03 00 00 00 06
否则会因为CRC重复而无响应。
四、先读数据,不要一开始就启动
通讯测试第一步不应该直接写启动命令,而应该先读寄存器,确认物理层、站号、波特率、校验、CRC全部正确。
读取400001~400006的完整命令为:
01 03 00 00 00 06 C5 C8
其中:
| 字节 | 含义 |
|---|
| 01 | 从站地址1 |
| 03 | 读保持寄存器 |
| 00 00 | 起始地址,对应400001 |
| 00 06 | 读取6个寄存器 |
| C5 C8 | CRC |
正常返回类似:
01 03 0C 00 00 00 00 00 00 00 00 11 33 00 00 95 E4
返回内容中,0C表示返回12个数据字节,也就是6个寄存器。对应关系通常如下:
| Modbus寄存器 | 默认意义 |
|---|
| 400001 | 控制字 |
| 400002 | 给定值1 |
| 400003 | 给定值2 |
| 400004 | 状态字 |
| 400005 | 实际值1 |
| 400006 | 实际值2 |
只要串口助手有正确返回,说明ACS580的EFB通讯口、USB-RS485、接线、站号、波特率、校验和CRC基本正确。
ACS580面板中也可以通过58组诊断参数辅助判断:
| 参数 | 含义 |
|---|
| 58.08 已接收的数据包 | ACS580收到的有效数据包 |
| 58.09 已发送的数据包 | ACS580发送的有效数据包 |
| 58.11 UART错误 | 波特率、校验等串口层错误 |
| 58.12 CRC错误 | CRC错误或干扰导致帧错误 |
如果串口助手发送后Rx一直为0,同时58.08也不增加,应优先检查A/B线、DGND、站号、波特率、校验、58.06刷新和USB-RS485转换器。如果58.08增加但电脑无返回,则可能是电脑接收方向、转换器、A/B接法或软件接收设置问题。
五、写入频率给定
ACS580在ABB Drive配置文件下,常用频率给定比例为:
50Hz = 20000
因此给定值计算公式为:
写入值 = 目标频率 / 50 × 20000
例如10Hz:
10 / 50 × 20000 = 4000
4000十进制等于0FA0十六进制。因此写入10Hz给定值到400002的命令为:
01 06 00 01 0F A0 DD 82
其中:
| 字节 | 含义 |
|---|
| 01 | 从站地址1 |
| 06 | 写单个保持寄存器 |
| 00 01 | 寄存器偏移1,对应400002 |
| 0F A0 | 写入4000,即10Hz给定 |
| DD 82 | CRC |
正常情况下,ACS580会原样返回:
01 06 00 01 0F A0 DD 82
如果面板右上角能看到10.0Hz给定,说明400002写入成功,28.11也已经正确指向EFB给定值1。
常用频率换算如下:
| 目标频率 | 十进制给定值 | HEX |
|---|
| 5Hz | 2000 | 07D0 |
| 10Hz | 4000 | 0FA0 |
| 20Hz | 8000 | 1F40 |
| 30Hz | 12000 | 2EE0 |
| 50Hz | 20000 | 4E20 |
实际使用PLC时通常不需要人工计算CRC,PLC的Modbus功能块会自动处理CRC。只需要写入400001控制字和400002给定值即可。
六、控制字、复位、启动和停止
ACS580通过Modbus启动时,最关键的是400001控制字。调试中常用三个控制字:
| 控制字 | 作用 |
|---|
| 04F7 | 故障复位 |
| 047F | 运行 |
| 047E | 停止 |
故障复位命令为:
01 06 00 00 04 F7 CA 8C
运行命令为:
01 06 00 00 04 7F CA EA
停止命令为:
01 06 00 00 04 7E 0B 2A
实际调试中发现,单独点发运行命令有时候只能看到给定值,变频器并不稳定进入输出状态。更可靠的方法是用功能码10一次性周期写两个寄存器:
01 10 00 00 00 02 04 04 7F 0F A0 C6 CF
这条命令的含义是:
| 寄存器 | 写入值 | 含义 |
|---|
| 400001 | 047F | 运行控制字 |
| 400002 | 0FA0 | 10Hz给定 |
停止并清零给定可以发送:
01 10 00 00 00 02 04 04 7E 00 00 92 87
含义是:
| 寄存器 | 写入值 | 含义 |
|---|
| 400001 | 047E | 停止控制字 |
| 400002 | 0000 | 0Hz给定 |
最稳定的调试方法是:启动后以200ms~500ms周期连续发送“047F + 频率给定”。在实际测试中,1秒周期有时只能看到10Hz给定但没有输出频率,而改为500ms周期后,面板显示输出频率10.00Hz,冷却风扇也开始运行。这说明ACS580现场总线控制最好由主站周期性刷新,而不是只写一次控制字。
七、为什么会出现6681 EFB通讯丢失
6681是ACS580在EFB通讯监控中检测到通讯丢失后的故障。调试过程中,常见触发原因有三个。
第一,20.01、28.11等参数已经指向EFB,变频器处于远程控制状态,但电脑没有持续发送Modbus报文。ACS580认为主站不存在,就会报6681。
第二,58.14仍然保持为通讯丢失故障动作。串口助手手动点发本身不是一个稳定的PLC主站,发送间隔可能超过58.16设定时间,因此触发通讯丢失。
第三,参数拷贝到另一台ACS580后,虽然通讯参数和控制源已经复制过去,但实时控制字不会被复制。新变频器上电后如果没有软件或PLC持续写入控制字,也可能立即报6681。
调试阶段可以把58.14设为无动作,把58.15设为任何消息,把58.16设为30秒或更长。这样可以避免手动调试时频繁报6681。正式设备运行时,应恢复合理的通讯丢失保护,并由PLC或上位机周期写入控制字和给定值。
八、为什么会出现AFE1“紧急停车off2”
调试中还可能遇到警告AFE1,面板显示“紧急停车off2”或“收到紧急停车命令off2”。很多人第一反应会去找21.05急停源,但实际案例中,AFE1不一定由21.05触发,也可能由现场总线控制字不完整导致。
ACS580内部可以查看06.01主控制字。曾经出现过:
06.01 = 408 hex
展开后可以看到Off1、Off2、Off3控制位不完整,而运行位或远程位又处于某种激活状态,这就容易导致ACS580判断为off2急停状态。
ABB Drive控制字中,Off2控制位为1表示Off2未激活、允许继续运行;为0则表示紧急关闭、自由停车。因此,如果控制字没有正确写入047F,或者刚上电后主控制字还停留在不完整状态,就可能出现off2。
实际解决方法是先发送故障复位:
01 06 00 00 04 F7 CA 8C
再周期发送:
01 10 00 00 00 02 04 04 7F 0F A0 C6 CF
当06.01变为047F或相关运行允许状态后,off2故障消失,变频器可以正常远程运行。
需要注意,21.05是外部急停源参数,不建议随便屏蔽。如果现场真的有急停按钮、安全继电器或STO安全链路,必须恢复硬件安全链路,而不能简单通过参数绕过。本文讨论的情况主要是维修台架或通讯测试环境下,由于控制字状态不完整导致的off2现象。
九、远程模式和本地模式的关系
ACS580通过Modbus RTU控制时,必须处于远程控制状态。本地模式下,面板控制优先,Modbus写入可以有返回,但不一定真正控制启停。
很多人看到一切到远程就报6681或off2,就误以为应该用本地模式测试。实际上恰好相反:这些报警说明控制源已经切到EFB,只是主站通讯、通讯丢失保护或控制字状态还没有处理好。
正确逻辑是:
| 模式 | 说明 |
|---|
| 本地模式 | 面板控制优先,不适合验证Modbus启停 |
| 远程模式 | 外部控制源生效,EFB才能真正控制 |
| 远程 + EFB命令源 | Modbus控制字可以启动停止 |
| 远程 + EFB给定源 | Modbus给定值可以改变频率 |
因此,最终通讯测试必须在远程模式下完成。
十、参数拷贝到另一台变频器后的注意事项
通过操作面板把一台调好的ACS580参数拷贝到另一台ACS580后,可能仍然出现6681或off2。这不是参数拷贝失败,而是因为参数拷贝只复制配置参数,不复制当前运行控制字。
换句话说,参数拷贝可以复制:
58.01、58.03、58.04、58.05、20.01、28.11、58.25等参数
但不会复制:
当前400001实时控制字
当前400002实时给定值
当前06.01主控制字状态
当前软件周期发送状态
所以新变频器断电上电后,仍然需要上位机或串口测试软件重新发送复位和运行控制字。正确流程为:
从已调好变频器上传参数到操作面板。
下载到目标ACS580。
目标ACS580断电重上电。
检查关键参数是否一致。
打开测试软件或串口助手。
发送故障复位04F7。
周期写047F和频率给定。
确认输出频率建立。
如果希望客户操作更简单,可以把“复位故障”动作集成到上位机软件的“启动”按钮中。软件内部先自动发送04F7,延时200ms,再开始周期写047F和频率给定。这样客户只需要点击“启动”,不需要知道6681、off2、04F7、047F这些底层逻辑。
十一、USB-RS485运行中掉线的原因和处理
通讯测试成功后,如果变频器实际输出频率时,Windows设备管理器中的COM口突然消失,或者软件报:
PermissionError(13, '拒绝访问')
GetOverlappedResult failed
WriteFile failed
这时不要只怀疑软件。若设备管理器里COM口都不见了,说明USB-RS485转换器已经被系统断开,常见原因是变频器输出时产生的高频电磁干扰影响了USB侧或485侧。
变频器输出U/V/W到电机的PWM波形含有很强的dv/dt和共模干扰,便宜CH340裸板USB-RS485转换器很容易掉线。尤其当USB线靠近主回路、电机线、制动电阻线,或者电脑使用前置USB口时,更容易出现掉线。
建议采取以下措施:
使用工业隔离型USB-RS485转换器,优先选择带光耦隔离、TVS保护、隔离电源的型号。
不要使用裸板CH340或廉价透明壳USB-RS485做长期运行测试。
USB线远离变频器U/V/W输出线和电机线。
485通讯线使用双绞屏蔽线。
屏蔽层单端接PE地。
USB线靠近电脑端和转换器端各加磁环。
尽量使用电脑主板后置USB口,不要使用台式机前置USB口。
ACS580单台测试时TERM和BIAS保持ON。
如果COM口掉线,必须拔插USB-RS485或重新上电后,再打开软件重连。
软件层面也需要避免多个线程同时读写同一个COM口。运行中修改频率时,不应反复创建新的发送线程,而应让原有周期线程读取新的频率值并自动更新给定。停止、复位、读状态前,应该先暂停周期发送,再执行单次命令,否则容易出现串口资源竞争。
十二、推荐的最终测试流程
现场维修台架测试可以固定采用以下流程。
1. 变频器参数准备
设置:
58.01 = Modbus RTU
58.03 = 1
58.04 = 9.6 kbps
58.05 = 8 偶 1
58.25 = ABB变频器 / ABB Drive
20.01 = 内置现场总线 / EFB
19.11 = EXT1
28.11 = EFB给定值1
58.14 = 无动作 / 不动作
58.15 = 任何消息
58.16 = 30s
58.06 = 刷新设置
然后切换到远程模式。
2. 串口助手基础读测试
发送:
01 03 00 00 00 06 C5 C8
有返回后说明通讯基本正常。
3. 故障复位
发送:
01 06 00 00 04 F7 CA 8C
4. 周期运行10Hz
以200ms~500ms周期发送:
01 10 00 00 00 02 04 04 7F 0F A0 C6 CF
面板应显示10.00Hz输出频率。
5. 停止
发送:
01 10 00 00 00 02 04 04 7E 00 00 92 87
变频器停止,给定清零。
十三、结论
ACS580通过USB-RS485和串口助手进行Modbus RTU通讯测试,并不复杂,但要把“通讯通了”和“能远程运行”区分开。通讯通了只代表485物理层、站号、波特率、校验和CRC正确;能远程运行还需要20.01、28.11、19.11、58.25等控制链参数正确,并且必须由主站周期写入控制字和给定值。
实际调试中最容易踩坑的地方包括:A/B线接反、58.06未刷新、串口助手CRC重复、校验位不一致、本地/远程模式搞错、6681通讯丢失、AFE1/off2控制字不完整、USB-RS485受变频器干扰掉线等。
一套稳定的ACS580通讯测试方法应该是:先读寄存器确认通讯,再复位故障,然后周期写400001控制字047F和400002频率给定,最后用047E加0Hz停止。对于维修和批量检测场景,可以进一步把这些底层报文封装成一个简单测试软件,让操作者只看到串口选择、频率输入、启动、停止、复位几个按钮,而不需要理解Modbus寄存器和控制字细节。
通过这种方法,可以快速判断ACS580的EFB通讯口是否正常、USB-RS485链路是否可靠、远程控制参数是否正确,也可以为后续PLC、HMI或上位机通讯控制提供一个清晰可靠的基准。