做自动化集成这些年,多品牌设备之间的“对话”是最容易让人头疼的部分。前段时间刚完成一个产线改造项目,控制层用的是三菱PLC,机器人却是发那科和川崎两个品牌混着用:发那科机器人负责机床上下料,川崎机器人负责搬运码垛,项目需求里明确要求所有机器人必须接入同一套CCLINK总线网络,由三菱PLC统一调度和监控状态。
这个项目让我把三菱PLC、发那科机器人、川崎机器人走CCLINK总线通信的整套流程摸了个透。从硬件选型、总线接线、拨码开关设定,到地址映射、PLC组态、机器人示教器参数配置,再到通信测试和报警排查,每一步都有不少坑。这篇文章就把整个过程做个完整梳理,重点讲清楚CCLINK通信的原理细节、IO地址映射的计算方法,以及实际操作中容易忽略的地方,给正在做类似多品牌设备联动的朋友一个可参考的落地方案。
1. 项目背景与通信方案的整体选型思路
1.1 设备现状:三菱PLC、发那科机器人、川崎机器人为什么要“联网”
这个项目的现场设备情况其实很典型:产线主控用的是三菱Q系列PLC,负责整条线的逻辑调度和联锁控制。机器人这边有两类,一类是发那科机器人,应用在数控机床的上下料工位,需要根据PLC的指令切换加工程序、执行取放动作,也要把机器人当前状态、报警信息、节拍数据回传给PLC;另一类是川崎机器人,负责后道的搬运码垛,需要接收来自PLC的托盘号和垛型选择指令,同时反馈码垛完成信号。
在没有总线通信的情况下,这类多品牌设备联动通常靠I/O硬接线,一个点位一根线,启停、复位、报警、准备完成,再加上程序号选择,少说也要二十根线。而且硬接线只能传开关量,像产品计数、坐标偏置、报警代码这些数据,根本传不过来。所以项目初期做方案评审的时候,我们就确定了要走总线通信,把点位和数据都在总线上跑。
1.2 为什么选CCLINK:三种方案对比后的结论
当时我们重点比对了三种方案:IO硬接线、CCLINK总线、以及通过Ethernet/IP或Profinet加网关转换的方案。
| 方案 | 布线成本 | 传输内容 | 实时性 | 多品牌兼容性 | 维护难度 |
|---|---|---|---|---|---|
| IO硬接线 | 高,线缆多 | 仅开关量 | 高 | 好 | 查线麻烦 |
| CCLINK总线 | 低,一根电缆串联 | 位+字数据 | 高(扫描周期毫秒级) | 三菱主站+各厂商从站 | 清晰 |
| 工业以太网 | 低 | 数据量大 | 高 | 需要网关/协议转换 | 配置复杂 |
选择CCLINK有几个决定性因素。首先,PLC是三菱的,CCLINK是三菱主导的开放式现场总线,主站模块和编程组态都是原生支持,不用做任何协议转换。其次,发那科和川崎这两家机器人都提供CCLINK从站接口选配,机器人控制器里直接插入对应的总线板卡,示教器上有专门的参数界面配置站号,属于标准成熟方案。第三,CCLINK属于工业现场总线,扫描周期在毫秒级,完全满足机器人上下料这种对实时性有要求的场景。
这里要特别说明一下:标题里提到的川崎机器人和发那科机器人,其实接入CCLINK网络的原理和步骤是基本一致的,都是作为从站挂在三菱PLC主站下面。后面章节我会以发那科机器人为主做详细配置讲解,川崎机器人的差异点单独列出来说明。
2. 硬件准备与CCLINK总线接线规范
2.1 三菱PLC主站模块与机器人从站接口的选型搭配
硬件选型是整个通信方案的基础。三菱PLC做主站,不同系列要配不同的CCLINK主站模块:
| PLC系列 | 主站模块型号 | 说明 |
|---|---|---|
| FX3U/FX5U | FX3U-16CCL-M | FX3U用,最大带4个从站 |
| Q系列 | QJ61BT11N | 经典款,最多带64个从站 |
| L系列 | LJ61BT11 | L系列专用 |
| iQ-R系列 | RJ61BT11 | 新型号,性能更强 |
我们现场用的是Q系列,所以主站模块选的是QJ61BT11N。要注意这个模块是安装在主基板或扩展基板上的,组态时需要在GX Works里单独做网络参数配置,不是插上去就能用的。
机器人侧需要的硬件是CCLINK从站接口板卡。发那科机器人R-30iB控制器可以选配CCLINK从站板卡,插入主板的扩展槽位里;川崎机器人同样有对应的CCLINK接口选配件。这里有一个非常关键的细节:机器人订货的时候就要和生产厂家确认好是否有这个硬件接口,因为多数情况下总线板卡是需要出厂预装的,后期现场改造加装也可以,但涉及拆装控制器、更新系统软件,比较麻烦。我们项目里发那科机器人是出厂预装好的,川崎机器人则是在到货后由厂家技术人员现场加装的。
2.2 CCLINK专用电缆的接线细节与终端电阻处理
CCLINK总线使用的是专用电缆,外形和普通的屏蔽双绞线不同,内部有5根线:DA、DB、DG、SLD、FG。接线端子通常是5孔的插拔式端子排,剪线剥线后按顺序压接,这点和接普通电缆很不一样,不熟悉的人容易接错。
| 引脚 | 信号名 | 作用 | 线色参考 |
|---|---|---|---|
| 1 | DA | 数据线A | 白 |
| 2 | DB | 数据线B | 蓝 |
| 3 | DG | 数据公共地 | 黑 |
| 4 | SLD | 屏蔽层接地 | 屏蔽层 |
| 5 | FG | 框架接地 | 黄绿 |
DA和DB是一对差动信号线,传输数据靠它们;DG是信号地,必须和数据线一起接好,否则通信会不稳定;SLD用于接电缆的屏蔽层,防止工业现场的电磁干扰;FG接机壳地。
接线过程中最容易犯的错有三个。第一个是DA和DB接反,这个会导致完全通信不上;第二个是SLD和FG同时乱接,造成接地环路;第三个是终端电阻的问题。CCLINK网络的物理层是RS-485,标准规范要求在总线的最两端各接一个110欧姆终端电阻,接在DA和DB之间。这个电阻的作用是消除信号在电缆末端反射,没有终端电阻或者只在一边接,总线通信都会出现偶发断线的情况。判断线路两端在哪里很简单:主站模块算一端,最远的那个从站算另一端,两个位置各接一个终端电阻就对了。
2.3 从站拨码开关:站号、波特率、占用站数缺一不可
硬件接线完成后,每个从站模块上都有拨码开关需要设定。机器人控制器里的CCLINK从站板卡上一般有3组设定:站号、波特率、占用站数(也叫扩展站数)。这三项看着简单,但设定错了通信必然失败。
站号设定通常由两位拨码开关组成,分别代表十位数和个位数,编号范围是1到64。波特率要和主站模块完全一致,CCLINK支持156kbps、625kbps、2.5Mbps、5Mbps、10Mbps五档,通信距离和波特率有关系:速率越低传输距离越远,10Mbps时最远100米,156kbps时可以做到1200米。现场要根据实际布线距离和通信要求选一个统一速率,然后主站和所有从站都拨到同一档。占用站数决定了这个从站占用的地址资源大小,后面第三章详细讲地址计算时会说明,一般IO点数要求不多的情况下选默认的“占用1站”就可以。
这里有一个实践经验上的重要提醒:拨码开关的设定必须在断电状态下进行,拨完之后再上电,模块才能正确读取站号和波特率参数。我见过太多次因为带电拨码导致通信参数没生效,甚至损坏模块的情况,这个务必要写进项目的操作规范里。
3. 地址映射与IO点位规划:把“谁控制谁”落实到具体地址
3.1 CC-LINK的通信数据模型:RX/RY/RWr/RWw怎么理解
讲到CCLINK总线通信,就绕不开RX、RY、RWr、RWw这四个概念。很多第一次接触总线通信的朋友一看到这几个名词就懵了,其实理解起来并没有那么复杂。
如果把CCLINK比作一条“邮路”,主站是邮局,从站是收件人,那么数据交换就可以分成四种信:
- RY(Remote Output):主站发给从站的位数据,相当于主站写给从站的信,内容是“启动”“停止”“复位”这类开关信号。
- RX(Remote Input):从站回给主站的位数据,相当于从站寄回给主站的信,内容是“运行中”“已到位”“报警”这类状态信号。
- RWw(Remote Write Word):主站写给从站的字数据,相当于主站寄给从站的大信封,里面装的是“程序号”“速度倍率”“坐标偏置”这类数值型数据。
- RWr(Remote Read Word):从站回传给主站的字数据,相当于从站寄回给主站的大信封,里面装“当前坐标”“节拍时间”“报警代码”这类数值反馈。
对于从站设备来说,RY和RWw是主站对它的输出,RX和RWr是它对主站的输入。搞清楚这个方向,后面做地址映射表的时候才不会把信号方向搞反。
3.2 从站占用站数与IO地址区间计算示例
CCLINK总线里每个从站可以占用1到4个站,每个站对应的地址资源是固定的:32点位RX、32点位RY、4个字RWr、4个字RWw。占用站数越多,分到的地址范围就越大。实际选几站,取决于机器人需要和主站交换多少信号。大多数场景下,机器人需要十几个DI、十几个DO,占用1站完全够用,字数据通常还能余下不少。
地址从哪里开始算,和主站模块在网络参数里设置的起始地址有关系。以QJ61BT11N为例,假设我们在GX Works里设定的起始XY地址是0000H,那么:
| 从站站号 | 占用站数 | RX地址范围 | RY地址范围 | RWr字地址 | RWw字地址 |
|---|---|---|---|---|---|
| 站号1 | 1站 | 0~1FH | 0~1FH | W0~W3 | W10~W13 |
| 站号2 | 1站 | 20H~3FH | 20H~3FH | W4~W7 | W14~W17 |
| 站号3 | 1站 | 40H~5FH | 40H~5FH | W8~WB | W18~W1B |
计算公式并不复杂:起始地址加上(站号减1)乘以每个站的地址偏移量。比如站号3的RX起始地址 = 0 + (3-1) × 20H = 40H。多做两个例子就能掌握规律。不过实操中我基本不手算,直接在GX Works的网络参数画面里看它自动分配的地址列表,那个界面会把每一个从站的RX、RY、RWr、RWw地址清清楚楚列出来,以软件显示为准最靠谱。
有一点要特别注意:软件里显示的地址是主站侧的地址。主站用这些地址去读写从站,而从站侧(比如机器人控制器里)也有自己对应的地址编号,两者之间的对应关系是通过从站的参数配置和映射来建立的。所以做地址表的时候,一定要同时记录“主站地址”和“机器人侧地址”两个维度。
3.3 信号映射表:把机器人的控制逻辑落到具体点位
地址区间计算出来之后,下一步就是做信号映射表。我的习惯是在项目配置前先把这张表做出来,而不是一边配置一边想,这样可以避免点位遗漏和冲突。
以发那科机器人上下料工位为例,假设我为它分配的PLC侧RY地址是Y0到Y1F(32位),RX地址是X0到X1F(32位),信号规划如下:
| 方向 | PLC地址 | 信号名称 | 说明 |
|---|---|---|---|
| PLC→机器人 | Y0 | 启动 | 上升沿有效,启动当前程序 |
| PLC→机器人 | Y1 | 停止 | 上升沿有效,暂停运行 |
| PLC→机器人 | Y2 | 复位 | 复位机器人报警 |
| PLC→机器人 | Y3~Y7 | 程序号选择 | 5位二进制,最多32个程序 |
| PLC→机器人 | Y8 | 允许运行 | 安全联锁权限 |
| 机器人→PLC | X0 | 准备完成 | 机器人上电且无报警 |
| 机器人→PLC | X1 | 运行中 | 正在执行程序 |
| 机器人→PLC | X2 | 报警 | 有活动报警 |
| 机器人→PLC | X3 | 原点到位 | 已回到原点位置 |
| 机器人→PLC | X4~X7 | 状态代码 | 预留扩展状态 |
| PLC→机器人 | W10 | 目标坐标X | 字数据,16位数值 |
| PLC→机器人 | W11 | 目标坐标Y | 字数据,16位数值 |
| 机器人→PLC | W0 | 当前坐标X | 字数据,16位数值 |
| 机器人→PLC | W1 | 当前坐标Y | 字数据,16位数值 |
这样一张表做完,整个通信内容就完全清晰了。后面无论是配置机器人示教器,还是在PLC里写程序,所有编程都围绕这张表展开。特别强调一点:程序号用二进制编码的位组合来传,可以大大节约IO点位。如果不走总线而是用硬接线,传一个程序号至少需要7根线(128个程序),总线方式下5个点位就能搞定32个程序,这就是字数据处理能力带来的优势。
4. 三菱PLC主站参数配置与机器人从站设置实操
4.1 GX Works中的主站网络参数配置
硬件连接到位后,第一个要做的是在三菱PLC这边完成主站的网络参数配置。我用的软件是GX Works2(Q系列对应的版本),操作流程如下:
第一步,在工程导航栏的“PLC参数”里确认CCLINK主站模块所在的基板槽位已经被识别。如果模块安装正确,刷新后槽位上会显示QJ61BT11N的型号信息。
第二步,双击模块图标,进入“网络参数”设置界面,把运行模式设为“在线”,通信速度(波特率)选为和从站拨码开关一致的档位,比如2.5Mbps。这里要注意,主站的波特率设定实际上是从上位机写入的,但具体操作要在网络参数的“通信速度”下拉框里选好,而且要和所有从站保持一致,一处不一致就可能导致整个网络掉线。
第三步,在“从站信息”列表中添加每个从站。填入站号、占用站数,保存后软件会自动分配RX、RY、RWr、RWw地址。这个画面里会显示每一站的占用范围,方便我对照之前做的信号映射表核对。
第四步,把网络参数写入PLC并复位。配置完成后必须对PLC进行断电复位或者在线复位操作,网络参数才会真正生效。复位后观察QJ61BT11N模块面板上的指示灯:L RUN灯亮表示主站正常,SD/RD灯闪烁表示正在收发数据。
4.2 发那科机器人示教器上的CCLINK从站设定
发那科机器人这边的操作是通过示教器完成的。进入方式是在MENU菜单下找到“I/O”或“总线”相关界面,具体路径可能因软件版本略有差异,但核心要设置的就几项:从站站号、波特率、以及把总线数据映射到机器人内部DI/DO信号。
站号和波特率必须和PLC主站设置的完全一致。比如PLC主站速率设为2.5Mbps,机器人这边也要选2.5Mbps;PLC分配站号1给发那科机器人,机器人这里也要把从站号设为1。
接下来是最关键的IO映射。发那科机器人UI(Universal Interface)里有一张映射表,可以把CCLINK的RX/RY位数据映射成机器人内部的DI/DO。举个例子:PLC侧的Y0是“启动”信号,对应到CCLINK总线从站侧,机器人收到的是主站发送的RY0,那就在示教器映射界面把RY0对应的位映射成机器人内部的DI[1],这样PLC写Y0,机器人看到的DI[1]就会导通。同理,把机器人的DO[1]“准备完成”映射到RX0,PLC从X0就能读到这个状态。
这部分配置做完了,一定要记得在示教器上做一次“冷启动”或者控制器重启,让映射生效。实际操作中,很多时候参数改完了画面也显示了,但通信就是不通,最后发现是没重启控制器,这种低级错误很常见。
4.3 川崎机器人接入时需要注意的差异
川崎机器人和发那科在CCLINK从站配置上原理是一致的,但操作路径不一样,而且有几个需要注意的差异点。
川崎机器人需要在控制器里安装CCLINK从站板卡,上电后通过示教器的“I/O 管理”或者“现场总线”设定界面来配置。设置项基本也是站号、波特率、占用站数这三样。川崎的IO地址概念和发那科略有不同,它用信号编号来区分输入输出,比如“输入信号”对应总线从站收到的主站输出数据,“输出信号”对应机器人回传给主站的输入数据。
在实际对接川崎机器人时,我遇到的一个问题是:川崎的从站板卡默认的站号范围是从0开始还是从1开始,不同版本可能有区别。解决方法是先把波特率设为和主站一致,站号先设1,然后用主站的“CC-Link诊断功能”扫描一下网络上的从站,软件会显示检测到的从站站号和模块类型。如果扫描结果显示多个站,逐个核对,找到对应机器人那一路。
4.4 通信测试三板斧:强制、监视、握手
参数全部设置完成后,不要急着跑完整流程,先用最基础的三个手段把链路打通。
第一步是使用GX Works的“软元件测试”功能,强制置位发那科机器人对应映射的RY点位。比如在软元件测试画面输入Y0,点强制ON,然后到机器人示教器上看DI[1]是否变成1。如果能看到,说明PLC往机器人方向的链路已经通了。
第二步是反过来,在机器人示教器上手动置位一个DO信号,比如把DO[1](准备完成)强制为ON,然后到PLC这边用软元件监视看X0是否为1。这个方向通常更容易出问题,因为涉及机器人侧的映射表配置,如果X0读不到状态,先查机器人侧映射是否做对,再查从站地址区间是否对应。
第三步是做“握手测试”:PLC输出一个信号给机器人,机器人程序里检测到这个信号后,延时2秒,再给PLC回一个信号;PLC收到回信后,把输出信号复位。这样一个回合下来,双向通路都验证了,而且通过回信延时也能看出总线的扫描周期和稳定性。我在QJ61BT11N上实测过,2.5Mbps速率下,CCLINK的扫描周期大概在几毫秒到十几毫秒之间,完全满足工业控制需求。
5. 常见故障排查与现场避坑经验
5.1 通信类报警的快速判断与处理
这个项目前后调试了两周,遇到的报警和问题不少,整理出来基本可以分为物理层、参数层、映射层、程序层四类。下面这张表是现场排查问题的速查表:
| 故障现象 | 可能原因 | 排查步骤 |
|---|---|---|
| 主站模块L RUN不亮 | 主站参数没生效 | 重新复位PLC,确认网络参数已写入 |
| 主站ERR灯常亮 | 通信速率先不匹配、从站不存在 | 核对主站和从站的波特率设置;确认从站拨码站号正确且已上电 |
| 从站ERR灯闪烁 | 从站参数错误、占用站数设置不符 | 断电重拨码,核对占用站数是否和主站配置一致 |
| 主站能扫描到从站但IO状态不对 | 地址映射错误 | 检查QX地址区间配置和机器人侧映射表 |
| 通信时通时断 | 总线接线松动、终端电阻缺失 | 检查DA/DB接线端子紧固;确认两端终端电阻;排查屏蔽层接地 |
| 机器人侧一直收不到启动信号 | 示教器映射未生效 | 重启控制器,冷启动后再测试 |
5.2 总线不通时的从物理层到应用层排查顺序
总线和普通的IO硬接线不完全一样,查起来要有一个清晰的顺序。我的经验是严格按照“物理层→参数层→地址层→程序层”这个顺序排查,不要一上来就怀疑程序逻辑。
物理层最先看:检查QJ61BT11N模块面板上的L RUN灯和ERR灯状态。ERR灯亮或者闪烁,大概率是物理层有问题。这时候拿万用表量终端电阻两端(DA和DB之间)的阻值,正常应该显示110欧姆。如果显示几百欧姆或者无穷大,说明总线电缆有断路、接错、终端电阻缺失等问题。这个方法非常有效,可以快速定位断点大概在哪个区段。
物理层确认没问题后,再检查参数层:主站的波特率设置是否和从站一致、从站站号是否冲突、是否存在两个设备设置了同一个站号。站号冲突的表现是主站能扫描到设备,但数据时好时坏。用GX Works的CCLINK诊断功能可以查出来,如果诊断画面显示“站号重复”这类提示,排查那个站号对应的所有从站。
映射层的问题通常出现在机器人侧:主站PLC这边地址是软件自动分配的,一般不会出错,但机器人侧的手工映射容易搞错方向。检查映射表的时候,先确认主站侧的RY对应从站侧的哪一位,再确认从站侧映射到机器人的哪个DI,三步链路一步一步核对。
5.3 现场最容易踩的五个坑
第一个坑是接完线没有用终端电阻就长时间跑程序。CCLINK网络在短距离、少从站的情况下,不接终端电阻可能也能工作,但抗干扰能力会显著下降,电焊机一开,通信就闪断。这种情况最坑人,因为它不是完全不通,而是“时好时坏”,非常难查。
第二个坑是带电拨码。发那科机器人的从站板卡上,拨码开关拨的位置没有变,但实际上电时是另一个状态——这些数字逻辑芯片读取参数是在启动瞬间完成的。反复确认了站号和波特率都没问题,最后才发现是上电后去动了拨码开关,模块根本没重新读取。正确做法是:拨码前断电,拨码后确认,再上电,然后观察模块启动自检过程是否正常。
第三个坑是接地问题。DG(信号地)和SLD(屏蔽地)的作用不一样,DG必须跟着DA/DB一起拧到端子排上,SLD通常接在电缆屏蔽层的引出线上。现场如果发现某一段通信特别差,检查这一段的地线是不是接到了不干净的接地点上,比如和变频器的地共用了,干扰会沿着地线串进来。
第四个坑是地址映射表签名写反。我在最开始做信号规划的时候,就把RX和RY的方向理解了,后面对应到机器人侧也必须一致。主站写Y,从站收RY,机器人看到的是DI;从站发RX,主站读X,机器人要输出的信号要从DO映射过去。方向一搞反,启动信号发出去永远没有反应。
第五个坑是程序号用二进制传送时的位序问题。发那科机器人中,DI信号的编号和CCLINK从站的位号不一定完全对齐,做映射的时候要逐个确认是从哪一位开始的,不要默认位0就一定对应控制器内部地址的位0。最好的办法就是用软元件测试功能逐一强制置位,通过机器人示教器观察实际通断,确认每一个信号的实际对应关系。
5.4 独家小技巧:用PLC监视功能反查机器人IO状态
最后分享一个现场调试时特别好用的小技巧。当机器人报警停止,PLC和机器人之间通信正常,但PLC程序里状态信号一直不对的时候,不要急着在机器人侧去翻状态,直接在GX Works里打开软元件监视画面,输入RX对应的地址区间,比如X0到X1F,观察每一位的ON/OFF状态。
比如机器人报了一个安全门报警,PLC程序里应该显示X3(报警信号)为ON,但监视画面上X3始终是OFF。这时候先确认机器人侧的实际报警状态,如果机器人确实有报警而X3没导通,问题就出在机器人内部“报警”这个DO没有正确反映到CCLINK从站的RX位上,去示教器检查对应DO的映射和逻辑就好。
反过来,如果PLC程序里看到X3为ON,但触摸屏上机器人运行状态显示不对,那就是PLC程序里对X3这个状态的后续处理逻辑出了问题,跟总线通信本身已经没有关系了。用这个方法,可以把“通信链路问题”和“控制逻辑问题”快速分开,调试效率能提升不少。
以我个人实际做这个项目的感受来说,多品牌设备通过CCLINK总线通信这件事,原理并不复杂,只要把硬件接线、拨码参数、地址映射这三块吃透,后面的工作基本都是按部就班。最容易出问题的往往是细节:接线端子压接不牢、拨码没断电、映射方向搞反、终端电阻缺失。希望这篇文章里总结的这些实操经验和排查方法,能帮正在做类似项目的你少走一些弯路。