1. 为什么Q64AD至今仍是车间里的常青树搞工控的兄弟大概率都碰过三菱Q系列这套平台尤其是Q64AD这块四通道模拟量输入模块在产线改造、设备维保、非标自动化里出现的频率高得离谱。我手上最近一个水处理加药项目现场就是Q02UCPU带一块Q64AD采四路4-20mA压力变送器信号客户原来的电气柜里还躺着三块同型号模块当备件。这玩意的生命力就是这么顽强——结构简单、通道独立、BFM映射清晰只要你会用GX Works2基本半小时就能把一路信号跑通。但跑通和跑稳是两码事。我见过太多现场有人把模块往底板上一插参数全默认结果读回来的数值跳得像心电图有人量程卡没拨对4-20mA信号硬是采成了0-5V的曲线还有人死活找不到BFM地址对着手册翻了一下午。Q64AD这东西门槛不高但坑都藏在细节里尤其是参数设置和数据采集这两个环节差一个位就是天壤之别。这篇东西我打算把Q64AD从硬件拨码、GX Works2参数配置、BFM地址映射到梯形图采集程序、数值换算、现场排查整条链路掰开揉碎讲一遍。适合刚接触Q系列模拟量的新手也适合做了几年但一直靠抄别人程序过日子的老哥——毕竟把原理吃透下次换Q68ADV或者Q64DA你也能自己推出来。全文基于我实际项目里的操作记录整理参数和地址以官方手册为准经验部分是我自己踩出来的。2. Q64AD到底是个什么角色先把它看透2.1 模块定位与通道结构Q64AD是三菱Q系列PLC的模拟量输入模块四个通道每个通道独立配置可以单独设量程、单独使能、单独读值。它插在Q系列主基板或扩展基板上通过背板总线和CPU交换数据CPU侧不需要写任何通讯代码直接读写BFMBuffer Memory缓冲存储器就行。这一点和后面Q系列的智能功能模块思路一致理解了Q64ADQ64DA、Q68ADV这些基本一通百通。模块正面有几个关键部件你得认清顶部的量程切换开关Range Switch每个通道一组用来选电压还是电流、选什么范围前面的LED指示灯RUN灯亮说明模块在跑每个通道还有对应的状态灯再就是模块侧面的型号标签Q64AD和Q64AD-GD2这些后缀不同量程能力有差异别拿错。四个通道的编号是CH1到CH4对应BFM里的地址是错开的不是连续的。这是新手最容易懵的地方——CH1的当前值在BFM 11CH2在12CH3在13CH4在14而设置类参数又是另一套地址。手册上有一张完整的BFM分配表我建议你打印出来贴在工位上比翻PDF快得多。2.2 量程开关与信号类型的对应关系Q64AD支持电压和电流两大类信号具体范围靠模块上的拨码开关选。常见的有信号类型范围拨码设置参考电压0~5V对应通道开关拨到指定位置电压1~5V同上不同档位电压0~10V同上电压-10~10V同上电流0~20mA同上电流4~20mA同上具体拨码组合每个通道独立模块侧面或手册里有图示。我一般习惯在拨之前先用万用表确认现场信号类型别信图纸——图纸上写4-20mA实际变送器可能是0-10V输出这种事我遇到过不止一次。注意量程开关是硬件拨码模块上电状态下不要去拨先断电再操作。带电拨码轻则参数不生效重则模块报错。2.3 BFM机制Q64AD和CPU对话的唯一通道BFM是理解Q64AD的核心。你可以把它想象成模块内部的一块小黑板CPU通过背板总线往这块黑板上写参数、读数据。每个BFM地址对应一个16位或32位的存储单元有的只读有的只写有的可读可写。Q64AD常用的BFM地址我整理了一张表这个必须记牢BFM地址含义读写属性0通道1~4量程设置读写1通道1~4平均处理设置读写2通道1~4平均次数/时间设置读写9通道1~4转换使能读写10通道1~4转换速度设置读写11~14通道1~4当前值数字量只读19通道1~4报警输出只读20~23通道1~4报警上限读写24~27通道1~4报警下限读写地址11到14就是你要采集的实时数据单位是数字量0~4000对应0~20mA或0~5V这类标准范围具体换算后面细讲。BFM 0是量程设置但如果你硬件拨码已经设好了这个BFM可以不写模块会按拨码来。不过我在项目里习惯两边都设一致防止有人误拨开关导致参数打架。3. GX Works2里的参数配置一步都不能省3.1 新建工程与模块添加打开GX Works2新建工程选Q系列CPU型号按实际选比如Q02UCPU。然后在左侧导航栏找到PLC参数→I/O分配点详细设置把Q64AD按实际插槽位置添加进去。这一步很多人跳过觉得模块插上就能用结果智能功能模块的刷新设置没做BFM读出来全是0。添加模块时会让你选起始I/O地址这个地址是CPU分配给模块的比如0000、0010、0020这样每块智能模块占16点或32点。Q64AD占32点所以第一块通常从0000开始第二块从0020开始。这个地址后面写梯形图要用到记下来。3.2 开关设置与量程配置在模块属性里有几个关键设置A/D转换使能每个通道单独勾选不用的通道别使能省扫描时间。量程设置和硬件拨码对应选4-20mA就选4-20mA别选错。平均处理可选不平均、时间平均、次数平均。现场信号有波动时我一般用次数平均设8次或16次数值会稳很多。转换速度Q64AD有高速和低速可选高速采样快但精度略低低速反之。一般压力、温度这类慢变量用低速足够。这里有个细节GX Works2里设置的参数下载后会写到CPU的参数区上电时CPU自动把参数刷到模块的BFM里。所以如果你在程序里又手动写BFM 0可能会和参数设置冲突。我的做法是要么全用GX Works2参数要么全用程序写BFM别混着来。3.3 自动刷新设置省掉手动读BFM的麻烦GX Works2的模块属性里有个自动刷新设置可以把BFM 11~14自动映射到CPU的D寄存器或M继电器。比如设成D100~D103那CH1的当前值就实时出现在D100里程序里直接用D100就行不用写FROM指令。这个功能我强烈推荐新手用省事且不容易出错。但要注意刷新周期——自动刷新是在CPU的END处理时进行的如果你的扫描周期很长刷新会滞后。对大多数慢过程控制够用高速采集场景还是老老实实用FROM指令在程序里读。提示自动刷新设置好后下载参数并重启CPU用监控看D100是否有值。如果一直是0先检查模块RUN灯是否亮再检查量程和使能设置。4. 梯形图采集程序FROM和TO怎么用4.1 FROM指令读取当前值如果你没用自动刷新就得在程序里用FROM指令读BFM。FROM指令的格式是FROM 起始I/O地址 BFM地址 目标寄存器 点数。假设Q64AD起始I/O是0000要读CH1当前值BFM 11到D100FROM 0000 11 D100 1这一句就把BFM 11的值读到了D100。读CH2就改成BFM 12以此类推。如果一次读四个通道可以写FROM 0000 11 D100 4这样D100~D103分别对应CH1~CH4的当前值。点数写4一次读四个字效率高。FROM指令一般放在程序开头每个扫描周期执行一次。如果你放在条件跳转里注意别漏扫否则数据不更新。4.2 TO指令写参数TO指令用来往BFM写参数格式和FROM类似TO 起始I/O地址 BFM地址 源寄存器 点数。比如要在程序里设CH1~CH4使能BFM 9可以先把值写到D200再TO 0000 9 D200 1BFM 9的四个低位分别对应CH1~CH4使能写1使能写0禁止。比如H000F就是四通道全使能。量程设置BFM 0也是类似每个通道占4个位具体编码查手册。我一般不在程序里写量程硬件拨码加GX Works2参数就够了程序里写容易和参数设置打架。4.3 数值换算数字量到工程量的转换Q64AD读回来的是数字量标准范围下0~20mA对应0~40004~20mA对应0~4000但4mA对应020mA对应40000~5V对应0~40001~5V对应0~40000~10V对应0~4000-10~10V对应-4000~4000注意4-20mA和1-5V这类活零点信号数字量0对应的是4mA或1V不是0。换算公式工程量 量程下限 (数字量 / 4000) × (量程上限 - 量程下限)举个例子4-20mA压力变送器量程0~1.6MPa当前数字量D1002000。工程量 0 (2000/4000) × (1.6 - 0) 0.8MPa在梯形图里可以用整数运算或浮点运算。整数运算精度有限我一般用浮点D100 / 4000.0 × 1.6 D200三菱Q系列的浮点指令是E开头比如EDIV、EMUL。先把D100转成浮点再除4000再乘量程差最后加下限。这套换算我封装成一个子程序每个通道调用一次改量程只改参数不用动逻辑。注意数字量超过4000或低于0说明信号超量程或模块故障程序里要做上下限报警别直接拿去算。5. 现场调试与常见问题排查5.1 数值跳动大怎么办这是问得最多的问题。原因通常有三个一是没开平均处理原始信号噪声大二是信号线屏蔽没做好变频器干扰串进来三是变送器供电不稳。我的处理顺序先开平均处理次数设8~16再看屏蔽线是否单端接地接地电阻是否合格最后用万用表量变送器供电电压24V供电低于22V就会飘。如果还跳考虑加信号隔离器。5.2 读回来一直是0或满量程先看模块RUN灯。不亮说明模块没启动检查基板供电和模块插接。灯亮但值为0检查通道使能位是否写了量程拨码是否和信号匹配。值为满量程多半是量程选错比如4-20mA信号选成了0-20mA或者电压电流选反了。还有一种情况BFM地址读错了。CH1是11不是1010是转换速度设置。这个我见过有人读BFM 10当数据结果读回来的是设置值当然不对。5.3 常见问题速查表现象可能原因排查方法数值跳动大无平均、干扰、供电不稳开平均、查屏蔽、量供电值恒为0通道未使能、量程错、BFM读错查BFM 9、拨码、地址值恒满量程量程选错、信号类型反核对拨码与信号模块RUN灯不亮基板供电、插接不良查供电、重插模块自动刷新无值参数未下载、刷新设置错重新下载、查刷新映射数值偏差大未做工程量换算、量程差算错检查换算公式与量程5.4 几个我踩过的坑第一个坑模块插在扩展基板上起始I/O地址不是0000而是按扩展基板的分配来。我一开始按0000写FROM读不到值后来查I/O分配才发现是0040。所以上电前一定在GX Works2里确认每块模块的实际I/O地址。第二个坑GX Works2参数里改了量程但没重新下载模块还是按旧参数跑。改完参数一定要下载并重启CPU别只点监视。第三个坑用自动刷新时D寄存器的值更新有延迟做高速报警判断会漏。后来我改成FROM直接读报警响应快很多。第四个坑4-20mA信号断线时数字量会掉到0以下或某个负值程序里如果没做断线检测会误判为0MPa。我的做法是数字量低于-100就报断线这个阈值根据现场调。6. 从Q64AD延伸出去的一些经验Q64AD玩熟了Q68ADV、Q64DA这些基本就是换个BFM地址的事。Q68ADV是八通道地址分布不同但逻辑一样Q64DA是输出模块TO和FROM反过来用。核心还是那套硬件拨码定信号类型GX Works2配参数BFM读写数据程序里做换算和报警。我现在做项目习惯在程序里给每个模拟量通道建一个结构化的数据区原始值、工程量、报警状态、断线标志各占一个D寄存器。这样后期维护时看监控就能定位问题不用翻程序。这个习惯是从Q64AD项目里养成的后来换任何品牌的模拟量模块都这么干。最后说一句Q64AD的手册一定要看原版网上很多二手资料地址写错、量程编码写错照着抄会出大事。我一般把手册里的BFM表和量程编码表打印出来调试时对着看比在电脑上翻PDF快十倍。现场调试本来就是跟时间赛跑能省一分钟是一分钟。