永宏(FATEK)C-LINK|MD2模式“只RX亮、收不到数据”一页式排查(HTML版)
你的现场描述
用永宏 C-LINK 的 MD2 模式一直收不到数据,只有 RX 指示灯亮,感觉 PLC 那边程序没写好。通讯参数看起来没问题,怀疑是 通讯命令表没写对。
结论(先看这3条):
-
MD2=主站轮询模式:只有当你的设备“发出命令帧”时,对端才会回。只亮RX多半说明你没发帧,或你实际上处在从站状态。
-
“通讯参数一致”不等于“协议一致”。请先确认 对端到底是 C-LINK 还是 Modbus RTU。两者帧格式完全不同。
-
90% 的问题出在 命令表未启用/未下载、站号错、设备码与地址写法不符。按本文“黄金示例”写一条最小命令先通,再扩展。
一、开始前的三个判断(非常关键)
-
谁是主站? MD2 供主站使用。如果对端才是主站,你这端就不该用 MD2;应换从站/自由口/Modbus从站模式。
-
协议是什么? C-LINK ≠ Modbus RTU。请与对端确认协议与站号。若对端只支持 Modbus,请改用“Modbus 主站”。
-
指示灯含义
-
只亮 RX:你在“听”,几乎没在“发”。主站应先发,正常应先看到 TX。
-
RX乱闪无数据:485无偏置/极性反/串扰,属于物理层问题。
二、硬件层 & 串口层快速自检(3分钟)
硬件(RS-485/232)
-
A/B 极性对、两端120Ω终端,母线仅一侧上偏置。
-
屏蔽层单端接地,分支尽量短;长线先降波特率。
-
用 USB-RS485 回环自测:TX↔RX 能否自收自发。
串口参数
-
波特率/数据位/奇偶/停止位 完全一致(如 9600-8-E-1)。
-
站号一致(主站命令表里的站号=对端站号)。
-
超时先设 300–500ms,重试 2–3 次。
三、先判协议:C-LINK 还是 Modbus?
-
临时用串口工具发一帧 Modbus RTU 03(读保持寄存器)到对端:
请求:01 03 00 00 00 01 CRClo CRChi
期望响应:01 03 02 xx xx CRClo CRChi
-
若有响应 → 对端是 Modbus:改用 Modbus 主站,别再折腾 MD2。
-
若无响应 → 对端可能是 C-LINK 或站号/参数不对,继续看下文。
四、C-LINK(MD2)最小可行“黄金命令表”
下列字段名称因机型/软件略有差异,请按你的编程软件对应项填写;思路一致即可。
|
字段
|
示例值
|
说明
|
|
功能启用
|
√
|
命令表项必须勾选启用并已下载到PLC/模块
|
|
站号
|
1
|
与对端站号一致
|
|
命令类型
|
读数据(C-LINK 读指令)
|
选择“读”以便先看回包
|
|
设备码
|
D
|
示例读数据寄存器(按对端开放的区)
|
|
起始地址
|
0000
|
从地址 0 开始
|
|
长度
|
0010
|
读16字(按“字”或“字节”单位,依软件而定)
|
|
周期
|
100 ms
|
先短周期便于观察
|
|
超时/重试
|
300 ms / 2
|
连通性阶段先放宽
|
|
本机缓冲
|
R1000~
|
回包落地到本PLC寄存器,在线监看
|
下载后,在线监看R1000~是否刷新:刷新=收到了回包;无刷新则看下一节排错。
五、命令表最常见 8 个错误
-
未启用/未下载:表格写了但没勾启用或没写入模块。
-
站号错:对端站号=2,你写了1。
-
设备码/地址格式错:如写了D0000,但对端开放的是R区;或地址以十六进制/十进制搞混。
-
长度单位错:软件按“字节”,你以为是“字”。
-
帧校验/BCC/CRC模式不符(旧固件易见)。
-
TX线断/DE控制不当:半双工485需正确驱动收发方向。
-
周期太快:对端忙/缓冲满导致不回;先调慢周期。
-
混协议:你发 C-LINK,对端在等 Modbus(或相反)。
六、“只有 RX 亮”的三种典型含义
|
场景
|
含义
|
处理
|
|
你是从站,只有RX
|
主站在发你在听,但你不回(站号/帧/程序应答出错)
|
核对站号与协议;先做最小应答(哪怕回异常)验证链路
|
|
你是主站,只有RX
|
你其实没发帧;看到的是对端广播或总线噪声
|
抓包/示波确认TX是否真正发送;检查命令表启用与下载
|
|
RX乱闪无有效数据
|
485悬空/无偏置/串扰
|
加偏置与终端、缩短分支、先降波特率
|
七、若对端其实是 Modbus:改用 Modbus 主站更快
-
口模式改 Modbus Master (RTU),参数一致(例:9600-8-E-1、站号1)。
-
加一条读命令:功能码 03,地址 0x0000,长度按需。
-
抓包应看到:01 03 00 00 00 0A CRC→01 03 14 … CRC。
八、最小化连通流程(10–20分钟定位)
-
USB-RS485 + 串口工具,单机自发自收,确认本端硬件OK。
-
对端用 Modbus 试探一帧(第 3 节)。有回应=Modbus;无回应再走 C-LINK。
-
在 PLC 端:命令表只保留一条“读16字”,周期100ms,超时300ms。
-
在线看R1000~是否刷新;不刷新就抓包看 TX 是否真的发,再按“第5节八条”逐项核对。
愿意的话现在就发我这些信息,我直接回你“能复制的命令表/帧”:
-
你这端设备型号 & 口(RS-232/485),主站还是从站;
-
对端设备/协议(C-LINK or Modbus)及站号;
-
波特率/数据位/奇偶/停止位;
-
你想读/写的寄存器类型与地址范围;
-
一张抓包或示波截图(若有)。