- 威纶通 EasyBuilder Pro 的穿透传输(Pass-Through)功能死穴: 威纶通 cMT 系列 HMI,网口接外网/局域网,串口(RS485)接三菱 FX3U PLC。 在 EBPr
- 松下 A6 伺服脉冲控制调到怀疑人生: A6 伺服驱动器(带 20 位高精编码器),接 PLC 发送差分脉冲(PULSE/DIR)控制定位。 电机低速(100 rpm)运转时,声音极度安静,定位也准
- 求助施耐德 Modicon M241 走 Ethernet/IP 控 ATV340 的抗干扰死坑: 软件使用 EcoStruxure Machine Expert。PLC 通过网线直接连接 3 台
- 台达 AS300 走 CANopen 控制自家 C2000 变频器求助: AS300 主机自带 CANopen 总线,通过台达官方软件(ISPSoft / CANopen Builder)配置了 DS
- 被欧姆龙 PLC 和第三方/自家 HMI 的 Modbus TCP 数据格式折腾炸了: OMRON NX1P2 PLC 作为 Modbus TCP Server,给触摸屏提供温度和压力数据(32 位
台达 AS300 走 CANopen 控制自家 C2000 变频器求助: AS300 主机自带 CANopen 总线,通过台达官方软件(ISPSoft / CANopen Builder)配置了 DS
联系人:15634617248655
电话/手机:联系客服
发布时间:2026-09-23 11:30
浏览:63次
AS300 主机自带 CANopen 总线,通过台达官方软件(ISPSoft / CANopen Builder)配置了 DS301/DS402 协议控制 C2000 变频器。
PDO 通讯建立成功,节点灯绿灯常亮。
我在 PLC 里给变频器写目标频率(比如 50.00 Hz),变频器面板上能实时看到频率给定变掉了。
致命死穴: 当我按照 DS402 状态机给控制字(Controlword)依次写 0x0006 -> 0x0007 -> 0x000F 触发启动时,变频器面板的 RUN 灯只是闪烁两下,电机动都不动!变频器状态字始终停在 Switch On Disabled!
频率都能写进去,说明 PDO 通讯完全没问题,为什么 C2000 的控制字就是切不进运行状态?



















































C2000 自己的 CANopen DS402 手册给的启动顺序并不是这套,而是:
先确认 C2000 进入 DS402 控制
↓
6040h = 16#000E
↓
确认状态
↓
6040h = 16#000F
↓
Operation Enable
台达 C2000 手册明确写着:切到 Operation Enable 时,先写 6040 = 0x0E,再写 6040 = 0x0F。ManualsLib
所以你现在:
0006
↓
0007
↓
000F
虽然是很多标准 CiA402 伺服非常常见的状态机写法,但对 C2000 这套实现,不能想当然认为完全等价。
更关键的是,你现在可能混用了“两套 CANopen 控制模式”
C2000 CANopen 不是只有一种对象体系。
它有:
DS402 Standard Mode
和:
Delta Standard Mode
C2000 手册明确说明,Pr.09-40 用来选择 CANopen 控制模式;不同版本手册/固件对默认值描述有差异,因此你现场必须直接看这台 C2000 实际的 Pr.09-40 和对应版本手册,不能只照 AS300 的 DS402 模板配置。ManualsLib
而你描述:
频率能写进去,但 6040 状态机完全不走
这个现象特别像:
频率对象
→ 已经被 C2000 接受
但是
6040 Controlword
→ 并不是当前真正的 RUN 控制来源
也就是说:
数据通了,不代表控制权交给 DS402 了。
第一项马上查 Pr.00-21
这是我认为现场最可能漏掉的参数之一。
C2000 官方规定,如果使用 CANopen DS402 控制运行命令:
Pr.00-21 = 3
即:
Operation Command Source = CANopen communication card
否则即使:
6040h
在 PDO 里不停变化,
C2000 也可能没有把“运行权”交给 CANopen。
台达手册对 Pr.00-21=3 的定义非常明确。ManualsLib
所以你现在看到:
频率设定 = 50Hz
并不能证明:
RUN source = CANopen
因为 C2000 的:
Frequency Source
和:
Operation Command Source
是两个独立参数。
第二项查 Pr.00-20
如果你要从 CANopen 给速度/频率指令,C2000 对应通常要求:
Pr.00-20 = 6
CANopen communication card 作为 frequency source。ManualsLib
所以完整关系应该是:
Pr.00-20 = 6
↓
CANopen管“跑多快”
Pr.00-21 = 3
↓
CANopen管“允不允许跑”
这就是为什么经常会出现:
50.00Hz能正常写入
但:
RUN永远不起
前一个设置正确,后一个没设置。
第三项:如果走 DS402 Speed Mode,必须确认 6060h = 2
这一点也特别重要。
C2000 官方 DS402 Speed Mode 的步骤明确是:
1. 6060h = 2
Speed Mode
2. 6040h = 000Eh
3. 6040h = 000Fh
4. 再给目标速度
``` :chatgpt-content-reference{index="4"}
如果:
```text
6060h
还处在:
0
1
4
6
别的模式,
你虽然能更新某个 frequency object,
但整个 DS402 状态/命令解释可能并不是你以为的“速度模式”。
所以我会同时监视:
6060h Modes of operation
6061h Modes of operation display
要求:
6060 = 2
6061 = 2
再去发控制字。
还有一个非常容易混淆的地方:C2000 的 DS402 目标速度不是简单“50.00Hz”
官方 DS402 Speed Mode 使用:
6042h
Target Velocity
单位按 C2000 手册是:
rpm
而不是:
0.01 Hz
例如 4 极电机:
50 Hz
=
1500 rpm
所以 C2000 官方示例直接写:
6042h = 1500
对应4极电机 50Hz。ManualsLib
所以这里我尤其怀疑你现在可能做成了:
频率:
用 Delta proprietary object
比如 XX.XX Hz
运行:
却用 6040h DS402
这就属于:
半套 Delta Standard + 半套 DS402。
通信当然完全正常,
但状态机就是跑不通。
我建议不要一口气写 0006→0007→000F
直接按 C2000 手册逐步验证
先在无危险机械负载条件下:
6040 = 16#0000
读取:
6041
然后设置好:
Pr.00-21 = 3
Pr.00-20 = 6
DS402 control mode
6060 = 2
再测试:
6040 = 16#000E
此时不要马上下一步。
先看:
6041
是否发生状态变化。
然后再:
6040 = 16#000F
看是不是进入:
Operation Enabled
C2000 的状态字确实包含:
Switch On Disabled
Ready to Switch On
Switch On
Operation Enable
Quick Stop Active
Fault
这些状态。ManualsLib
你的“Switch On Disabled”本身就是一个非常好的诊断点
如果你现在一直看到:
6041 = Switch On Disabled
说明:
CANopen 节点活着,状态字也能返回,但是驱动内部没有接受“Power Enable”的状态转换。
这时我不会去查:
波特率
PDO COB-ID
120Ω终端
因为这些大概率已经好了。
我会直接查:
Pr.00-21
Pr.09-40
6060/6061
6040实际收到值
再看是否存在:
External Base Block
Emergency Stop
MI外部禁止
STO
之类的硬件禁止条件。
RUN灯闪两下也非常像“命令到了,但运行权没成立”
这个现象可以理解成:
6040命令到达
↓
C2000短暂识别运行请求
↓
检查运行源 / enable condition
↓
条件不成立
↓
拒绝进入 Operation Enable
所以它不是:
“CANopen没收到。”
恰恰更像:
收到了,但内部许可条件没满足。
还有一个很容易忽略的外部条件:MI / External Base Block
即便:
Pr.00-21 = 3
正确,
如果外部数字输入被配置成:
Base Block
External Fault
Quick Stop
Enable
其中之一,
那么 DS402 仍然不能越过 Power Disable。
所以现场最好同时看 C2000 的:
Digital input status
External BB
EF
Quick Stop
STO / safety status
尤其如果变频器:
面板RUN闪
但没有PWM
外部禁止信号也值得查。
我现在会按这个顺序排查
1. 看:
Pr.00-21 = 3 ?
不是3,先改这个。
2. 看:
Pr.00-20 = 6 ?
确保目标速度来源也是 CANopen。ManualsLib
3. 确认:
Pr.09-40
当前到底是:
DS402 Standard
还是
Delta Standard
不要混用两套对象字典。 C2000 手册明确存在这两种 CANopen 控制模式。ManualsLib
4. 如果用 DS402:
6060 = 2
6061 = 2
5. 不再发:
0006 → 0007 → 000F
先严格按照 C2000 官方示例测试:
000E
↓
000F
``` :chatgpt-content-reference{index="9"}
6. 每一步都读:
```text
6041
不要用固定延时100ms就直接跳下一步。
7. 速度模式用:
6042
并按 rpm 处理;例如4极电机50Hz约对应1500rpm。ManualsLib
我非常建议 PLC 状态机写成“读状态再走下一步”
不要:
写 0006
等20ms
写 0007
等20ms
写 000F
而应该:
确认 CANopen Operational
↓
确认 6061 = 2
↓
写 6040 = 000E
↓
等待 6041进入对应允许状态
↓
写 6040 = 000F
↓
等待 6041 = Operation Enabled
↓
才允许下发目标速度
一旦超时:
停下来
记录 6041
不要继续覆盖控制字
这样马上能知道卡在哪一步。
所以这个问题一句话讲透:
“目标频率能写入”只能证明 CANopen 数据通道正常,并不能证明 C2000 已经把运行控制权交给 6040h。C2000 必须同时把 Pr.00-21 设为 CANopen 运行源,并确保当前选择的是 DS402 控制模式、6060=2 速度模式;更关键的是,C2000 官方 DS402 启动示例使用的是 6040=0x000E → 0x000F,而不是很多伺服常见的 0x0006 → 0x0007 → 0x000F。
我这个案例的第一刀就是看这四个值:
Pr.00-21
Pr.09-40
6060
6041
如果 Pr.00-21 不是3,或者 Pr.09-40 实际还在 Delta Standard,而 PLC 却在发 6040 DS402 状态机,那基本就破案了。