首页 > 全部分类 > 技术问答 > 帖子内容

台达 AS300 走 CANopen 控制自家 C2000 变频器求助: AS300 主机自带 CANopen 总线,通过台达官方软件(ISPSoft / CANopen Builder)配置了 DS

联系人:15634617248655

电话/手机:联系客服

发布时间:2026-09-23 11:30

浏览:63次

台达 AS300 走 CANopen 控制自家 C2000 变频器求助:
AS300 主机自带 CANopen 总线,通过台达官方软件(ISPSoft / CANopen Builder)配置了 DS301/DS402 协议控制 C2000 变频器。

PDO 通讯建立成功,节点灯绿灯常亮。

我在 PLC 里给变频器写目标频率(比如 50.00 Hz),变频器面板上能实时看到频率给定变掉了。

致命死穴: 当我按照 DS402 状态机给控制字(Controlword)依次写 0x0006 -> 0x0007 -> 0x000F 触发启动时,变频器面板的 RUN 灯只是闪烁两下,电机动都不动!变频器状态字始终停在 Switch On Disabled!
频率都能写进去,说明 PDO 通讯完全没问题,为什么 C2000 的控制字就是切不进运行状态?
明扬工控技术客服2026-09-23 11:34:55
答复内容:亲,这个故障我认为已经很接近破案了。你这里最大的坑,很可能是把“通用 CiA402 伺服的 0x0006 → 0x0007 → 0x000F”直接套到了 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 状态机,那基本就破案了。
对不起,请登录后再发表评论!

触屏端
扫一扫手机也能发信息
明扬工控商城-工控网-工控自动化真品,一站式专业服务!