
简介手册围绕无锡北辰BCNet-QnA以太网通信处理器展开面向需要实现三菱QnA系列PLC设备信息化改造的电气与自动化工程师详细说明如何通过该模块将PLC编程口接入以太网以低成本满足生产监控、数据采集及远程维护需求。资源共1个PDF文件压缩包大小2.55MB内容按章节组织涵盖产品概述、功能应用、硬件接口、指示灯说明、快速起步等模块便于对照查阅。已有692人下载学习是现场常用的参考资料。读者可借此掌握BCNet-QnA的安装接线、Web参数配置以及MELSOFT、MC3E帧、ModbusTCP和OPC等多种通信方式的启用方法手册还介绍了与组态王、KepWare OPC等上位机软件集成、实现程序上下载与运行监视的典型应用对构建SCADA系统和远程设备维护均有直接参考价值。1. 把 QnA 老 PLC 拉进以太网BCNet-QnA 到底是个什么角色如果你是干设备数据采集或者产线改造的工程师大概率遇到过这种局面现场用的还是三菱 QnA 系列的 PLCCPU 本体不带以太网口上位机要读数据只能走串口要不加一块昂贵的以太网模块要不就用 USB-RS422 线在现场蹲着。BCNet-QnA 就是针对这个场景做的一只“外置网卡”它插在 PLC 的编程口上把串行协议翻译成以太网报文让上位机可以用 Modbus TCP 或 MC 协议直接读写软元件。你不需要改 PLC 程序不需要动原有控制逻辑模块相当于在编程口和交换机之间加了一个透明的协议转换层。这篇文章要讲的就是拿到这块模块之后怎么选型、接线、配置、调通上位机通信以及那些手册里不会明写、但现场迟早会撞上的坑。2. 认识 BCNet-QnA 的硬件接口、指示灯和拨码开关是先决条件2.1 模块侧面那几个口分别接什么BCNet-QnA 的外观通常是一个带导轨卡扣的塑壳小盒子体积和一个巴掌差不多大。它最核心的接口有三个靠近 PLC 一侧的串口连接 QnA CPU 的编程口常见是圆头或 DB25具体随型号配线不同而有差异、另一侧的 RJ45 网口、以及一组供电端子。供电一般支持 DC 9 到 24V现场最常见的就是拿一个 24V 开关电源引两条线过来。模块上还有指示灯至少能看到电源灯和通信状态灯有的型号还带以太网链接状态灯。我第一次用这模块的时候没看灯的说明结果把调试口接成了网口指示灯一脸迷惑地全亮折腾半天才发现是自己线插错了位置。2.2 拨码开关决定 IP 地址IP 查找器不是万能的拿到的模块默认 IP 一般是 192.168.1.x 之类的固定网段具体值要看标签或手册。如果你要改 IP常见的做法有两种一种是模块侧面有一组拨码开关低位拨码直接决定 IP 地址的末段另一种是通过专用的 IP 查找工具在电脑端扫描并修改。拨码开关这种设计在工业模块里很常见好处是不用装软件就能改地址坏处是容易拨错位。现场最容易出现的情况是模块插上电电脑用 IP 查找器扫了半天扫不到查来查去最后发现是拨码开关把网段拨到了别的段电脑和模块不在一个网段当然扫不到。我自己的习惯是收到模块后第一件事断电把拨码状态拨到和电脑同一个网段对应的位置上电后再用查找器确认一次记录下出厂 IP 和当前 IP贴条写在外壳上。2.3 恢复出厂和固件升级换模块时的后悔药模块侧面一般会有复位孔或恢复出厂设置按钮说明书里会写怎么操作。恢复出厂设置会把 IP、站号、波特率这些全部回到默认值。如果是固件升级一般是通过网口进 Web 配置页面或者专用工具来刷固件。需要特别注意固件升级过程中绝对不能断电否则模块可能变成砖。现场换模块的时候如果你之前保存过配置文件新模块直接导入设置就行比从头配置省很多事。配置文件建议维护工程师在调试通过后第一时间导出备份这比贴纸条管用得多。3. 把 BCNet-QnA 接进 QnA 系统布线、串口参数和与 PLC 的首次握手3.1 接线阶段的几个硬要求电源、编程口转接线和地线给模块供电之前先确认电压极性电源端子上面有标 24V 和 GND接反了轻则不工作重则烧内部保护元件这个真不是吓唬人。常见做法是用 PLC 旁边的 24V 开关电源取电但要注意这路输出有没有被其他负载占满模块的工作电流不大但如果现场电源纹波很大还是建议单独拿一路出来供电。串口侧要用模块自带的编程口转接线一头插 PLC 编程口一头插模块串口。转接线不是普通的串口延长线里面是做过针脚定义的用错了针脚定义会出现通信超时。接好线后如果 PLC 是已经跑着的模块插上就能从编程口取到信号但有些老款 CPU 的编程口协议是要在 PLC 侧做使能的这点可以看 CPU 的手册确认但大部分 QnA 系列默认是开放的。3.2 串口参数波特率、协议模式和站号要对齐BCNet-QnA 作为协议转换模块串口侧要和 PLC 的编程口通信PLC 编程口波特率一般是由 PLC 参数决定的。模块侧也有对应的波特率设置。常见做法是模块出厂默认和 QnA 编程口默认一致但如果你不知道当前 PLC 编程口被改过什么参数最稳妥的办法是用编程线连一次 PLC读一下 PLC 参数里的通信设置。另外协议模式要选对QnA 系列和 A 系列的编程口协议有一些区别手册里会提示你选 QnA 模式还是兼容模式选错了模块能看到数据但解析会出问题。站号也一样单机直连时站号通常设置成 0 或 1 问题不大但如果你打算并联多台 PLC每台模块的站号必须唯一。表BCNet-QnA 串口侧参数与 PLC 侧参数对照参数项PLC 侧QnA 编程口默认模块侧推荐设置说明波特率9600/19200 等与 PLC 侧一致不一致会大量通信超时协议模式QnA 协议QnA 模式选错会出现帧错误数据位/停止位8/1 等与 PLC 侧一致一般跟随默认即可站号CPU 站号与 PLC 站号一致多站并联时必须唯一3.3 用编程软件走一遍在线直读验证模块对 PLC 是透明的配置完参数、连好网线之后下一步要先做一次“模块透明性检验”把电脑接到交换机上用 GX Developer 或 GX Works2 新建一个工程通信设置里选择以太网连接填上模块的 IP 地址然后尝试上载 PLC 程序。如果能把程序读上来说明模块的串口侧和 PLC 的编程口已经打通了相当于模块已经在透明转发编程协议这是最直接的验证方法。读上来的过程中你可以观察模块的通信指示灯是不是在闪烁。如果闪烁频率很密集说明数据在走如果灯根本不亮大概率是串口没通回到 3.1 和 3.2 去排查接线和参数。编程软件直读成功之后上位机的采集就好办了。4. 上位机通信实操Modbus TCP 映射和用 Python 验证读写4.1 学会看软元件映射表D 寄存器、M 继电器怎么对应 Modbus 地址BCNet-QnA 上电以后它自己相当于一个 Modbus TCP 从站设备。上位机发 Modbus 请求模块把请求翻译成 QnA 协议去读写 PLC 的软元件。这是这个模块最实用的地方因为上位机组态软件一般自带 Modbus TCP 驱动你不需要专门去写 MC 协议底层。但问题是每个软元件要映射到 Modbus 地址的哪个区间必须查模块手册里的映射表。常见做法是 D 寄存器映射到保持寄存器区也就是 4xxxx 区间M 继电器映射到线圈区X 输入和 Y 输出映射到离散输入和线圈区。偏移地址的起点是多少、是按字还是按位编址不同厂商模块的约定有差异这一点上偷懒不看手册纯靠猜十有八九要翻车。我见过有人把 D100 当成 Modbus 地址 100 来读结果数据全是乱的后来对着手册才发现地址要加偏移。表BCNet-QnA 常见的软元件映射参考具体偏移以手册为准PLC 软元件Modbus 功能码Modbus 地址区间说明D 寄存器03 读保持寄存器 / 06 写单个寄存器04xxxx 区域按具体偏移规则掉电保持型寄存器要注意写入影响M 继电器01 读线圈 / 05 写单个线圈0xxxx 区域写线圈注意置位/复位语义X 输入02 读离散输入1xxxx 区域只读Y 输出01 读线圈 / 05 写线圈0xxxx 区域可写但会影响控制逻辑4.2 用 Python 快速验证脚本、报文和超时参数设置拿到模块并连上 PLC 之后我建议先用一个十几行的 Python 脚本验证通信比直接在组态软件里配半天更快暴露问题。下面是我常用的测试方法基于 pyModbus 库。from pymodbus.client import ModbusTcpClient PLC_IP 192.168.1.10 # BCNet-QnA 模块的 IP 地址 PLC_PORT 502 # Modbus TCP 默认端口 UNIT_ID 0 # 模块设置的站号通常填 0 或 1 client ModbusTcpClient(PLC_IP, portPLC_PORT, timeout1) client.close() # 先断开便于逐条测试 client ModbusTcpClient(PLC_IP, portPLC_PORT, timeout1) if not client.connect(): print(连接失败检查 IP 和网线) else: # 读 D100 开始的 10 个保持寄存器 resp client.read_holding_registers(100, 10, unitUNIT_ID) if not resp.isError(): print(D100~D109 的值:, resp.registers) else: print(读取出错,, resp) # 写 D200 为 1234 wr client.write_register(200, 1234, unitUNIT_ID) print(写入指令已发送,, wr) client.close()这段脚本的逻辑是先创建一个 Modbus TCP 客户端指定模块的 IP 和端口然后发起保持寄存器读取请求。读的功能码是 03对应上面的映射表地址 100 是映射关系中的偏移地址具体对应 PLC 是 D 多少要查模块手册。timeout 参数建议不要设得太短模块内部要做协议转换响应时间比直接连 PLC 的网口模块要慢一些设为 1 秒比较稳。写寄存器用 06 功能码注意这里只能写单个寄存器批量写要用写多个寄存器功能码。另外 unit ID 必须和模块上设置的站号一致如果模块站号是 0 而这里填 1很多从站会直接忽略请求表现出来就是超时无响应。4.3 如果不用 ModbusQnA MC 协议的报文头结构也可以自己拼有些上位机不走 Modbus而是要直接走三菱 MC 协议尤其是对接某些老系统的时候。这种情况下你需要知道 MC 协议的报文结构帧头、网络号、PC 号、站号、命令、子命令、起始软元件地址和软元件点数。这些字段在模块的手册里有详细说明模块只负责透传这些帧到 PLC 侧并返回响应。如果你要自己拼报文建议先用抓包软件看一次模块和上位机的完整对话搞清楚响应帧的每个字节含义再在自己的程序里按帧格式组包。这个方案比 Modbus 更底层一些调试起来也更费劲但很多时候老系统只认这种协议你只能顺着它来。5. BCNet-QnA 避坑指南五个真实踩坑记录5.1 IP 查找器扫不到设备PING 也 PING 不通现象模块上电网线插好电脑和模块直连IP 查找器界面是空的PING 模块 IP 提示超时。原因有三个排查方向一是电脑网卡没找到网段手动设一个同段地址即可二是拨码开关把模块 IP 地址设到了别的网段三是网线本身故障有些现场网线水晶头压得不好插上去灯亮但链路不稳。解决先用一根已知完好的网线直连把电脑网卡 IP 手动设为模块同网段如 192.168.1.100确认物理链路后再试 IP 查找器。如果还不行看模块供电指示灯是否正常不正常就量电源电压。做过这四步还扫不到再考虑恢复出厂设置。这个流程基本能覆盖九成找不到设备的情况。5.2 Modbus 能读但写入没反应现象上位机正常读取 D 寄存器数据显示和 PLC 实际值一致但一旦写入某个寄存器PLC 里的值完全不变也不报错。原因一般有三种一是写入的地址虽然没报错但不在映射表对应的可写区间模块把这次写入解析到了保留地址上二是 PLC 里对应软元件是只读的比如某些特殊功能寄存器三是使用的是 06 功能码写单个寄存器但目标寄存器在映射表里需要按 16 功能码才能正常写入。解决对照手册查地址映射表确认目标地址的对应关系把写单个改成写多个功能码再试一次同时用编程软件打开实时监控看一眼 PLC 侧的软元件值是否变化。如果还是不行用抓包软件看模块返回的响应帧里有没有异常码这是判断问题出在模块还是出在 PLC 侧的最直接手段。5.3 通信时通时断丢包到让人怀疑人生现象上位机轮询一段时间后会间歇性无响应重连之后又恢复抓包发现有的请求帧根本没被模块响应。排查下来的高概率原因有四个供电电压不稳定、网线质量差或水晶头接触不良、交换机端口协商问题、模块串口侧和 PLC 通信偶发超时导致状态机卡住。解决电源单独拉一路有万用表就实测模块供电端子电压换屏蔽网线并重新压水晶头交换机端口强制百兆全双工把上位机的请求间隔调大比如从 50ms 改到 200ms。工业以太网上宁可慢一点也要稳轮询间隔太激进很容易把模块的状态机推到异常状态这跟上位机往 PLC 里塞太多请求导致通信拥堵是一个道理。5.4 接上模块之后PLC 的编程下载变慢或干脆连不上现象模块已经正常接入了上位机也能采集数据了但工程师再用编程软件连 PLC 在线时程序上载偶尔中断下载程序时多次超时。原因在于模块是插在编程口上的PLC 的编程口同时服务模块透传和真正的编程器访问两者在抢通信资源。如果上位机的轮询周期非常短编程口就一直被占用编程软件自然挤不进去。解决调试程序的时候暂时关掉上位机的轮询或者把采集服务停掉如果是两班倒产线不能停把轮询周期拉长到 500ms 以上给编程通信留窗口。这个现象不是模块坏了是资源争用理解了这一点就不会白折腾半天找网络原因。5.5 多台并联时站号设重数据互相串现象产线上并联了几台 BCNet-QnA上位机按不同 IP 分别轮询结果 A 站读上来的数据偶尔是 B 站的而且偶尔还全部超时。原因两台模块的站号被设成了同一个值上位机请求 A 时两个模块都认为自己该响应结果是冲突的报文回复把通信搅乱了。解决给每台模块做一个编号表在模块配置里写入唯一的站号同时把 PLC 的实际站号核对一遍确保模块站号、上位机请求的 unit ID、PLC 站号三者一致。多台并联的时候建议在标注标签上写明 IP、站号、对应 PLC 设备名这个习惯能省下大量排查时间。6. 把 BCNet-QnA 用得更稳轮询节奏、抓包验证和固件备份6.1 轮询周期与超时参数怎么搭配更合理模块做协议转换是有内部处理时间的不是 PLC 直接响应以太网报文。所以上位机轮询周期低于 100ms 时很容易把模块的通信缓冲占满。我一般建议在项目里把这些参数作为一个模板固定下来轮询周期不低于 200ms超时时间设在 500ms 到 1 秒之间连续失败 3 次才判定通信中断。这样设置的逻辑是QnA 老 PLC 本身扫描周期就在几十毫秒量级网络采集并不需要微妙级响应速度稳定比速度重要得多。表Modbus TCP 轮询参数推荐模板参数项推荐值说明轮询周期≥200ms给模块留足协议转换时间请求超时500ms~1s避免偶发慢响应导致误判连续失败判定阈值3 次过滤瞬时抖动单包读取寄存器数≤60 个字减少大包被交换机丢弃的概率6.2 用抓包验证模块的真实响应时间如果你对现场通信质量有疑虑抓包是最直接的验证手段。在电脑上装 Wireshark过滤器写tcp.port 502然后触发一次上位机读操作。看客户端发出请求到收到响应之间的时间差这个时间差就是模块的实际响应时间。如果平均在 20ms 到 50ms说明模块和 PLC 之间通信很健康如果经常跑到 200ms 以上就要检查串口侧通信是否偶发重传。抓包还能看出来是否有多台设备在同时响应同一个 unit ID这能帮你快速确认站号冲突的问题。6.3 固件与配置备份换模块不焦虑模块调试通过之后一定先把配置导出到本地文件。不同型号的导出方式不同有的是 Web 页面下载有的是专用工具备份。换模块的时候把备份文件导入新模块再核对一遍 IP 和站号基本就能直接上线。我自己吃过亏一台模块运行两年后坏了换备件时才发现当时的 IP 和站号没有记录翻遍手机的现场照片才找到一张带标签的模糊截图。后来凡是经手这类协议转换模块我都要求现场必须做配置备份并把设备标签贴在模块侧面。这是最土但最管用的习惯。希望帮到你。本文还有配套的精品资源点击获取