资讯动态

三菱Q与FX混合PLC控制系统的CC-Link与RS-485组网实战

发布时间:2026/10/13 17:09:48 来源:尧图企业网站定制
做小型自动化设备的人迟早会撞上这么一套配置主控用三菱Q系列现场却散布着好几台FX系列小型机。最近我负责的某条装配线就是这样——标题里那行字是甲方的原始需求主站Q02UCPU从站FX3U-128M和FX3S-14MFX3U下面再挂一块FX3U-4AD模拟量输入模块。一开始以为就是把PLC接上、程序拷进去就行真正动手才发现光是通信组网和数据映射就够写一篇长文。这篇就是我个人在这个项目里的完整复盘从硬件拓扑到软件设置再到排错一次性说透。1. 这套QFX混合控制系统要解决的核心问题1.1 设备布局决定了控制器的分配这条产线的主控柜在电控室现场却分了三个工位彼此相距几十米。主控柜里放Q02UCPU负责整线逻辑、HMI交互、配方管理和报警汇总远端工位不可能全部拉硬线到主控柜成本高、干扰大、维护也麻烦。所以方案很自然就落到了“主站Q 远程FX”这种分布式结构上。FX3U-128M这个型号的核心价值是I/O点多最大能扩展到128点左右放中间那个工位正合适既能做本地逻辑又能当一个通信中继。FX3S-14M更小主机本体的点数只有8入6出适合管一个动作简单的小工位比如单轴搬运机构或者几个气缸的动作。FX3U-4AD则用来采集现场的模拟量信号张力传感器、压力变送器、温度变送器都走它。标题里那个“FX3128M”我按工程习惯理解为FX3U-128M“FX3S14M”就是FX3S-14M后面的“FX3U-4”基本可以确定是FX3U-4AD模拟量输入模块。这几种硬件组合在一起本质就是三菱官方最经典的“上位Q系列集中管理 下位FX系列分布式控制”架构。1.2 主站与从站之间到底交换什么数据很多人一提到Q和FX通信就发怵其实想清楚交换什么数据方案就出来一半了。我在这个项目里梳理下来的数据大概分四类主站下发给FX3U和FX3S的启停指令、运行模式、工艺参数、配方号。从站上报给主站的运行状态、故障代码、当前步序、计数器/产量值。FX3U侧额外上报的FX3U-4AD采集的张力值、压力值、温度值以及本地I/O状态。主站侧动态修改的张力给定值、报警上限、速度倍率。这些数据量不大但对实时性有要求。启停和急停类信号我做了硬接线互锁不依赖通信链路这是安全层面的基本素养。通过通信传输的只是普通联锁信号和参数即使通信延迟几十毫秒也不会造成设备事故。1.3 为什么不让FX当主站也被人问过FX3U-128M功能也不弱为什么不直接让它当主站把Q02UCPU省掉这个问题的答案有两个层面。第一层是项目约束甲方明确指定了主站就是Q02UCPU原有程序框架也在Q侧不可能推倒重来。第二层是技术合理性Q02UCPU的程序容量有40K步最大I/O点数能达到2048点内置串口还能直连第三方设备上位监控、配方管理、复杂运算的能力都比FX3U强一个档次。而且Q系列在通信扩展上更灵活加一个主站模块就能拉CC-Link总线。更重要的是安全边界。Q主站故障时FX从站因为本地逻辑还在运行能自动完成安全停机动作比如关闭气缸、抱住料盘、停掉伺服使能。这种分布式控制的好处是单点故障被限制在一个小区域内不会全线瘫掉。2. CC-Link与RS-485混合网络的选型逻辑和拓扑2.1 三种可选通信方案做方案时我先把可能的路子都摆出来对比了一遍没有一上来就动手接线的。第一种是全部走CC-Link现场总线。Q02UCPU本体没有CC-Link主站功能必须加一个QJ61BT11N主站模块FX3U-128M这边加一个FX3U-16CCL-M从站模块。这个方案对FX3U来说很完美但对FX3S来说行不通因为FX3S本体没有左侧扩展总线挂不了FX3U-16CCL-M强行设计会给现场增加很多不必要的复杂度。第二种是全部走RS-485串口通信。Q02UCPU侧加串行通信模块通过专用协议或者MC协议逐个轮询FX3U和FX3S。这个路线的问题在于FX3U-128M和FX3S-14M都要带485BD板主站要写轮询逻辑数据刷新周期会明显变长而且通信线路上任何一个节点出问题整个链路都会卡住。第三种就是最终采用的混合组网CC-Link作为主干连接Q02UCPU与FX3U-128MFX3S-14M通过N:N网络挂在FX3U的485BD板下面Q主站不直接认识FX3S由FX3U做数据二次转发。三种方案对比下来混合组网在成本、实时性、稳定性和可维护性之间平衡得最好。2.2 我为什么选“主干CC-Link 支线RS-485”选型的时候身边有人劝我干脆把FX3S也换掉换一台FX3U或者直接用远程I/O站。理由是FX3S在通信上不好伺候。但我算了一笔账FX3S-14M本身已经买好了再加一块几百块的485BD扩展板就能参与N:N网络而如果换成一台FX3U-32M主机价格差好几倍还要重新做柜内接线和端子排。FX3S负责的工位只有十几个点数据刷新要求不高走485完全够用。RS-485支线还有一个工程上的好处它可以从FX3U旁边单独拉一根两芯屏蔽线去FX3S不需要占用CC-Link主干的总线资源。也就是说FX3S的慢速数据和FX3U的高速数据互不干扰哪怕485支线通信偶发异常也不会影响CC-Link主干上的FX3U-4AD模拟量数据。CC-Link主干的好处则不用多说三菱自家的协议从站掉线能自动诊断带CRC校验抗干扰能力比裸RS-485强一个量级。FX3U-128M这边跑的是模拟量采集和主要的工位联锁不能接受频繁断线必须走CC-Link。2.3 通信速率和站号的规划规划通信参数时我吃过亏所以这次一上来就做了个表。三菱CC-Link的通信速率和距离关系大概是156kbps最远1200米625kbps到600米2.5Mbps到200米5Mbps到150米10Mbps只能到100米。我现场从主控柜到FX3U工位大概六十米左右选2.5Mbps余量留得很足。站号规划要强调一下这是新手上电最容易翻车的地方设备角色站号通信方式Q02UCPU QJ61BT11NCC-Link主站0号CC-LinkFX3U-128M FX3U-16CCL-MCC-Link远程设备站1号CC-LinkFX3S-14M FX3S-485-BDN:N网络从站站号1内部RS-485FX3U-4ADFX3U本地模拟量模块无站号本地扩展总线注意区分FX3U在CC-Link里的站号是1FX3S在N:N网络里的站号也是1但两者是不同网络域不冲突。如果搞混了要么CC-Link上找不到节点要么N:N网络起不来。3. Q02UCPU主站与QJ61BT11N的初始化设置3.1 Q02UCPU的边界知识与模块安装位置Q02UCPU是三菱Q系列里的基础型CPU程序容量40K步最大I/O点数2048点。很多人会忽略一个问题CC-Link总线上的远程I/O点数也计在QCPU的总I/O点数里面规划点数时必须把主站模块自身占用的32点、各从站占用的远程I/O点全部算进去。我这个项目只有两个从站点数完全够用但如果以后从站数量多了就要重新核对。QJ61BT11N主站模块插在主基板的哪个槽位会直接影响编程时用到的起始I/O号。比如插在0号槽它的起始I/O号就是0号也就是十六进制的0此时FROM/TO指令里第一个参数写H0插在1号槽就写H1类推。我这次放在0号槽程序里统一用H0后面调试时不用猜。模块安装完以后先检查模块侧面的拨码开关。QJ61BT11N上通常有站号设置、通信速率设置和占用站数设置。做主站时站号固定为0速率必须和所有从站一致。这一步错了后面的通信一定起不来。3.2 GX Works2里的“智能功能模块参数”配置编程软件我用的是GX Works2Q系列的程序开发和参数配置都在里面完成。新建工程时选Q系列、CPU类型选Q02U工程类型用的是简单工程习惯下来比结构化工程直观。进入工程导航后双击“智能功能模块”能看到QJ61BT11N打开它的CC-Link配置界面。这里有两个关键操作第一注册从站信息。在“从站一览”里添加站号1的从站类型选远程设备站型号选择FX3U-16CCL-M。这一步相当于告诉主站“1号站是一个远程设备站它占用RX/RY若干点、RWr/RWw若干字。”如果主站不知道对方是什么类型的站即使链路物理通数据也映射不出来。第二设置自动刷新映射。我习惯把从站的RWr映射到D100开头的区域RWw映射到D200开头的区域RX映射到X100RY映射到Y100。这样设置完以后主站程序里直接读写D100、X100、Y100底层CC-Link通信完全由系统自动处理。自动刷新模式建议选“上电后自动启动通信”这个项目里我一开始选的是由PLC程序启动后来发现现场断电重启时如果从站上电慢主站程序还没执行到通信启动那一步就进入了错误状态。改成自动启动后主站会一直等从站从站起来后通信自己恢复省了很多麻烦。3.3 模块缓冲存储器与FROM/TO指令就算用了自动刷新我也会在程序里主动读一下模块的状态字确认每个从站是否真的在线。这不是不信任参数配置而是因为现场环境里干扰、电源波动都可能导致从站瞬间掉线程序必须能感知这种变化。QJ61BT11N模块内部有一片缓冲存储器里面放着链路状态、从站状态、错误标志等。编程时用FROM指令读出来LD SM400 FROM H0 K0 D200 K1这个示例的意思是从起始I/O号为H0的模块缓冲存储器地址0开始读1点数据到D200。需要强调不同版本模块的缓冲存储器地址定义可能会有差异具体以模块手册的BFM表为准。我在项目里确认K0对应的是状态区后才写进程序这里的建议是先查手册再看例程不要照抄网上代码。读回来以后程序判断D200里从站状态位是不是都为ON。只要1号站掉线对应的状态位就会变成OFF主站立即置位掉站报警M500并切断该工位的自动运行许可。4. FX3U从站侧16CCL-M与4AD两个模块怎么配合4.1 FX3U-16CCL-M的站号设置与接线FX3U-128M做主机的从站首先要在左侧扩展总线上挂一个FX3U-16CCL-M通信模块。这个名字里的“16”指的是它在CC-Link侧占用的站信息是16点单位实际代表了一个远程设备站的标准配置。接线之前看模块外壳上的DIP开关这是最容易出错的地方之一。我把站号拨到1通信速率拨到2.5Mbps占用站数拨到1。然后接CC-Link专用电缆三根线分别对应DA、DB、DG接到上一台设备的“远程下一站”端子同时从这个模块的“远程输出”端子引出下一段线。如果这个模块是总线中间的节点终端电阻拨到OFF如果是总线末端节点拨到ON。我这个项目里FX3U是主干末端所以终端电阻在ON主站那一端同样接了一个110Ω终阻电阻。模块上电后看面板指示灯L RUN灯亮表示链路建立成功L ERR灯闪烁则说明主站和从站之间的通信参数不匹配或者站号有冲突。第一次上电我习惯先看这两个灯再决定要不要上编程软件查细节。4.2 FX3U-4AD的接线和BFM配置FX3U-4AD是四通道模拟量输入模块挂在FX3U主机的左侧扩展总线上。模块排列顺序我建议把4AD放在紧靠主机的位置16CCL-M放在它的外侧。这样做的原因是模拟量转换的的数据在本地总线上传输路径最短而且调试时拆装通信模块不影响模拟量通道的标定参数。接线方面这个项目里现场有两种信号张力传感器输出4-20mA位移传感器输出0-10V。4AD的输入端子分为V、I和COM电流信号和电压信号的接法不一样。用4-20mA时信号线接I和COM并在端子上把V和I短接用0-10V时直接接V和COM不能短接I。这两种信号共用一个公共地要注意传感器的供电隔离否则地环路会让采集值跳得厉害。FX3U-4AD的参数配置通过TO指令写缓冲存储器BFM来实现。每个通道的输入范围由BFM的数值决定我在程序初始化时写入LD M8002 TO K0 K0 H3330 K1这里K0是第一个特殊功能模块的编号K0是BFM地址0也就是通道输入模式设置H3330这个十六进制数是我实际项目里用到的通道组合配置。BFM地址10开始存放的是各通道的平均采样结果程序里这样读FROM K0 K10 D100 K1读出来的D100是CH1的平均值D101对应CH2以此类推。平均次数我设置在8到16次之间实测下来对滤除现场干扰毛刺很有帮助。4.3 把模拟量数据送上CC-LinkFX3U-16CCL-M作为CC-Link从站和主站交换数据靠的是RX/RY位软元件和RWr/RWw字软元件。主站发给从站的数据会出现在RWw里从站上报给主站的数据放在RWr里。FX3U侧的程序要做的事就是把4AD转换结果放进16CCL-M的RWr缓冲区。我的做法是先做工程量转换再上传。比如张力传感器量程是0到500N4AD原始值是0到4000我在FX3U程序里先算LD M8000 MOV D100 D10 CALL P0子程序P0里做浮点运算把原始值换算成带一位小数的张力值比如0.0到500.0然后乘以10存到整数寄存器再用MOV指令送入16CCL-M的RWw区。这样主站Q程序里看到的直接就是张力值乘以10的结果不需要再关心传感器量程和4AD分辨率。直接在从站侧做工程量换算还有一个好处以后换了量程不同的传感器只需要修改FX3U程序里的两个系数主站程序完全不用动。这种“底层整理数据、上层只管用”的思路在分布式控制系统里真的能减少大量调试时间。5. FX3S-14M的接入方式通过N:N网络挂在FX3U下5.1 为什么FX3S不直接上CC-LinkFX3S-14M是非常小巧的机器本体只有8个输入和6个输出控制逻辑也不复杂。但它有一个明显的短板没有左侧扩展总线接口不能像FX3U那样直接挂FX3U-16CCL-M通信模块。市面上倒是有FX3S的扩展板比如485BD、232BD但就是没有它的CC-Link从站板。所以想让Q02UCPU读到FX3S的数据必须绕一条路。我采用的方案是让FX3S通过RS-485的N:N网络挂在FX3U的485BD板下面FX3U既是N:N网络中的主站又是CC-Link网络中的从站相当于一座桥。这个方案实现起来很简单成本几乎可以忽略不计但有一个前提需要接受FX3S的数据经过N:N网络到FX3U再由FX3U通过CC-Link上传到Q链路延迟会比直接用CC-Link多几十毫秒。所以FX3S这边我只放慢速信号气缸动作完成反馈、工位计数、指示灯状态这类都合适绝对不会让它参与任何需要毫秒级响应的联锁。5.2 N:N网络的参数设定步骤N:N网络是三菱小型PLC之间的一种简易数据共享机制最多支持8个站每个站的位软元件和字软元件刷新范围可以配置。FX3S和FX3U要参与这个网络每台PLC都要在程序中设置一组特殊寄存器特殊寄存器功能FX3U设置FX3S设置D8176本站站号01D8177从站总数22D8178刷新范围模式00D8179重试次数33D8180通信超时66这些参数必须在PLC程序初始化时写入写入后需要断电重启或者用指令复位网络才能生效。我的习惯是写个初始化脉冲程序在首次扫描时把这些值写入然后在HMI上做个参数显示页面方便现场确认。刷新范围模式我选的是模式0每个站分配64点位软元件和64点字软元件。例如FX3S站号1它的位刷新区是M64到M127字刷新区是D64到D127。FX3S需要上报的数据放到自己的字刷新区D64开头的地址里FX3U程序直接读对应地址就行。这里有一个在我项目里踩过的细节N:N网络里所有站的D8177、D8178、D8179、D8180必须设置一致D8176是本站站号可以不同。只要有一台PLC的从站总数写错了整条485网络就同步不了现象是每台PLC的M8183到M8191报警标志乱跳。确定参数一致后再看M8183主站通信正常标志是否为ON基本就能定位问题。5.3 数据二次转发逻辑FX3S把数据放到自己的刷新区以后FX3U就可以在N:N网络中读到它。比如FX3S的D64里放着工位计数FX3U程序中就读FX3S站号1的字刷新区也就是D64到D127中对应的地址。FX3U读到的数据不会自动出现在CC-Link的RWr里需要手动搬移。我在FX3U程序里做了一段专用的搬运逻辑把N:N网络收到的FX3S数据复制到16CCL-M的RWw缓冲区。LD M8000 MOV D64 D200这里D64是N:N网络中FX3S站号的字数据D200是16CCL-M的RWw缓冲区的其中一个地址。FX3U在每个扫描周期把D64的内容搬到RWw区Q主站那边的D区自动就会更新。数据搬运有个时序问题需要特别注意。因为N:N网络的刷新周期和CC-Link的刷新周期不是同步的如果数据一直在变化主站读到的可能是半个周期前的值。对于计数器这类累加型数据我建议先在FX3U里把数据做一次锁存检测到变化后再搬运避免主站看到跳变的中间值。6. 主站程序里的通信数据映射与联动逻辑6.1 自动刷新映射后的编程视图设置完GX Works2里的自动刷新以后主站Q02UCPU的编程体验变得很直接。从站1上报的张力值落到D100压力值落到D102温度值落到D104从站的状态位落到X100主站的下发指令写到Y100。程序里再也不用关心CC-Link的帧结构、站号、缓冲区这些底层细节直接当成普通软元件用。Q02UCPU程序里我组织了一个数据区规划表放在工程注释里软元件区域含义方向X100-X11F从站1FX3U的远程输入从站到主站Y100-Y11F主站给从站1的远程输出主站到从站D100-D150FX3U上报的字数据从站到主站D200-D250主站下发的字数据主站到从站这样做的好处是主站程序里的每一段逻辑都能追溯到对应的物理信号排查问题时拿着表直接对。6.2 首扫描启动和掉站保护主站程序启动时我习惯用SM402作为初始化脉冲把所有联动标志位复位一遍。然后专门做一个“网络就绪”判定程序块每一扫描周期都检查从站状态字。简单说程序里必须是1号从站在线、N:N网络转发标志有效、所有掉站报警没有激活主站才允许把自动运行信号M0置位。只要从站掉线M0立即复位对应工位的运行许可切断HMI弹出“从站1通信中断”的报警。不要小看这个掉站保护逻辑。实际运行中我曾遇到过变频器启动瞬间导致24V电源跌落FX3U-16CCL-M瞬间掉线的情况如果没有这个保护主站程序还在按原来的数据往下走很可能会给出错误动作。加上保护之后系统在掉线瞬间自动停机电压恢复后通信自愈再按复位按钮就能继续生产。6.3 程序注释和符号管理Q系列程序跟FX程序相比工程文件更大、软元件更多如果不做符号管理后期维护基本靠猜。我的做法是给所有通信映射软元件起有意义的符号名比如“从1_张力值”“从1_压力值”“主站_运行指令”。GX Works2的软元件注释可以导出成Excel也可以直接打印出来贴到电柜门上。我项目交付时把这张映射表打印成A4纸塑封放进电柜现场的电气人员和维修工都能看懂后来接手维护的人都说这表比程序注释还管用。7. 调试阶段踩过的坑与完整排查链路7.1 通信不上L ERR闪烁的排查顺序第一次给这套系统上电时QJ61BT11N面板上的L ERR灯一直在闪。我没有急着改程序而是按顺序排了一遍。排查顺序建议按这个链路走不要跳步一看电源。CC-Link从站模块的DC24V供电是否到位电压是否低于20V很多通信问题本质是电源问题。二查波特率。主站参数里的通信速率和每个从站模块拨码开关上的速率是不是一致。这个项目出问题的就是这里FX3U-16CCL-M的拨码开关默认在10Mbps主站参数设的是2.5Mbps两边不一致L ERR当然闪。三查站号。主站站号必须是0从站站号不能重复不能为0。现场有两台FX3U时最容易站号冲突我一般会在模块外壳上贴标签。四查终端电阻。总线两端各接一个110Ω终端电阻中间站全部拨OFF。第一次排查时总觉得自己的线很短不用接实际不接电阻高速通信一定会出问题尤其是2.5Mbps以上。五查线缆。CC-Link专用电缆必须是蓝白黄三色的屏蔽双绞线不能拿普通485线代替。DA和DB不能接反DG是接地点不能悬空。按这个顺序排下来十五分钟内基本能定位问题。那次最后就是拨码开关的事改完以后L ERR灭L RUN亮通信一次通过。7.2 模拟量数据漂移和突变通信正常之后第二个冒出来的问题是FX3U-4AD的张力值在零位时乱跳波动范围超过±20个字。这现象在变频器启动瞬间尤其明显。排查过程是这样的先用手持万用表量4AD输入端子的实际电流波动很小说明传感器本身没问题然后把4AD的采样平均次数从1改成16波动变小但仍然存在最后怀疑是现场布线和接地问题。检查发现模拟量信号电缆有一段和变频器动力线走在同一个线槽里而且屏蔽层两头都做了接地形成了地环路。处理方法是把那一段模拟量电缆单独穿管屏蔽层改为只在主控端单点接地信号线与动力线间距拉开到20厘米以上再调整FX3U-4AD的输入模式为4-20mA对应挡位数据稳定下来波动降到±3个字以内。这里有个经验模拟量调试不要一上来就怀疑模块坏或者PLC坏先查接线和布线。尤其是两线制变送器必须确认它是自带24V供电还是需要PLC侧提供馈电。接错线轻则信号不对重则烧掉变送器。7.3 从站掉线的自动报警与自恢复运行一段时间后有一次设备偶尔报“从站1通信中断”出现频率不高但很烦人。排查时发现掉线都发生在某台大功率电机启动的瞬间。原因并不神秘电机启动时的电压跌落导致开关电源输出瞬间降到20V以下FX3U-16CCL-M供电不足自然掉线。CC-Link本身有重试机制电机启动完成后电压恢复通信自己又连上了。我做的处理有两层。硬件层面把给FX3U-16CCL-M供电的24V电源换成了带保持功能的开关电源容量留出50%余量软件层面在主站程序里增加掉站检测掉线后延时确认而不是立即报警并且通信恢复后自动清除报警。这两层做完之后再也没有出现过无故停机的问题。7.4 FX3S桥接数据“乱跳”的时序问题还有一个有意思的坑是FX3S的计数数据在Q主站里显示异常。明明FX3S本地的一个计数值每次都加1但主站HMI上看到的值偶尔会从10跳到12跳过的那个数好像没传过来。原因是N:N网络的刷新周期和CC-Link的刷新周期不完全同步。FX3U在某个扫描周期读到FX3S的数据是10还没等真正搬到CC-Link的RWw区N:N网络又刷新了FX3U读到FX3S的新值是11但两次搬运之间主站只采到了一次变化最终表现为丢数。解决思路是先在FX3U侧做一次“数据锁存搬运”把N:N收到的数据和上一次比较只有变化时才写入CC-Link的RWw缓冲同时在数据稳定后再写入一个“数据有效”标志。主站Q程序看见标志变化才采样一次。改完以后计数不再跳变。这类问题在纯CC-Link网络里不常见但加了RS-485桥接以后就会出现。所以我的建议是桥接链路里只传慢速变化的数据凡是高频计数、实时位置、中断触发类数据不要走这条路径。7.5 最后一句文档比程序更重要项目收尾时我整理了一整套文档包括CC-Link站号表、N:N网络参数设置表、FX3U-4AD通道信息表、主站软元件映射表、模块面板指示灯说明、屏蔽接地位置示意图。这些内容看起来琐碎但三个月后设备做维护时维保人员捧着这张表能很快定位问题不用重新翻手册、不用猜程序。这套由Q02UCPU、FX3U-128M、FX3S-14M和FX3U-4AD组成的混合控制系统原理上说并不难难的是把通信规划清楚、把边界条件想明白。很多项目最后出问题都不是某一个PLC不行而是站号、速率、终端电阻、电源这些“基本功”没做扎实。希望这篇复盘能帮到正在搭类似系统的人少走几步弯路。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑