远盛通信技术资料站 📞138 6408 0101

电力通信从零跑通:五步 + 三个常见报错,按顺序查十分钟定位

技术知识库

作者:山东远盛通信科技有限公司 · 发布日期:2026-11-15 ·

TL;DR:104 数据送不上主站,按通道、TCP、链路、点表、总召五步走,十分钟能定位卡在哪一层。链路起不来先看 STARTDT 有没有回 0x0B;总召有帧但遥测全 0,去查点表三样地址和时标,别一上来就换设备。按层排除,比逐个换件省时间。

笔记本 ping 通、telnet 2404 也通,主站一个数没有,人先怀疑终端坏了。IP 通、端口通、数据有是三件事,通一层不代表下一层通。

五步,顺序不能反

五步各有可判定的结果:2404 通不通、STARTDT 回不回 0x0B、总召回来多少帧。跳过哪一步都白对。

第一步:先确认你连的是哪个网段(通道层)

现场就三种网络:光纤专网、无线专网、APN 专网卡。先 ipconfig 看终端拿到的是私网还是公网地址,记下源 IP 再 ping。

这套流程针对 10kV 及以上并网点接调度主站的场景。380V 户用项目走用电信息采集系统,不接 104,别拿这套去套。

APN 专网卡要开到指定 APN,白名单加在主站侧接入表里,不在卡上。卡不拦你,拦你的是主站前置那张表。

按《电力监控系统安全防护规定》(发改委 2014 年第 14 号令,2014-09-01 起施行),生产控制大区走网络专用,跨区过横向隔离,拨号和无线接入要过纵向加密认证装置。这装置不放行,ping 通也白搭。

第二步:端口和监听(TCP 层)

2404 是 104 默认端口。主站侧有没有对你这个源 IP 开放,问一句比猜半天快:

nc -vz 主站IP 2404

Windows 上用 PowerShell:

Test-NetConnection 主站IP -Port 2404

第三步:链路建立(应用层 U 帧)

TCP 建起来只是有了条管子,链路还没起来。子站先发 STARTDT act(0x07),主站回 con(0x0B),链路才算起来。

记住这句话:104 是子站主动连主站,不是主站来找你。所以“公网卡不能上调度”是错的——NAT 后的公网卡一样能跑 104,只要终端能访问到主站地址;真正卡人的是主站侧白名单、APN 策略和点表归属,不是 NAT。

104 那四个时间参数在 DL/T 634.5104(等同 IEC 60870-5-104)里给了默认值:建链等 t0=30 秒,发出去等确认 t1=15 秒,无数据回 S 帧 t2=10 秒,空闲心跳 t3=20 秒;k=12、w=8 管的是未确认帧数。这些参数主站配,改之前先问一句,别自己把 t1 拉长——拉长了断链发现得更晚。

空闲心跳靠 TESTFR act(0x43)/con(0x83),很多掉链断在这里。“白天好夜里掉”先查 t3 和 APN 卡休眠。

第四步:点表对点(ASDU 三个地址)

公共地址(ASDU 地址)、信息体地址(IOA)、类型标识(TI)三样必须和主站点表逐条一致。错一样就是一个坏点,主站不报错,只显示异常。

点表逐行对太慢,先对公共地址和总条目数,再抽几个关键遥测核 IOA 和 TypeID。

TypeID 错得最闷:主站要 13(短浮点遥测)、终端给 11(标度化遥测),值照样显示,量纲和小数点全错。常记:遥信 1/3、遥测 9/11/13、遥控 45/46、总召 100、对时 103,电度累计量 15。

对时也要做:主站发 103,终端回镜像报文。时标差 8 小时,曲线整条错位,值对时间不对,一样算没通。

第五步:总召 + 回滚(验证与收尾)

发总召唤 100,看回来多少帧、遥测对不对得上现场表计。帧数比点表条目少,少的那几条就是没配或配错的,按 IOA 补回。误差按表计等级判,0.5S 级表别拿 1.0 级的标准套(示例,以现场实测为准)。

遥控要走两步:先选择(S/E 位置 1)等主站确认,再执行(S/E 位回 0),类型 45 或 46。只做返校不算完——返校只证明报文到了,不证明开关动了。

回滚也要留痕:改过的参数、下发过的定值留一份前后对照表。改完不记录,下次故障没人能复现。

三个常见报错,对照着查

按现象对,别按顺序猜。

现象卡在哪动作
connect timeout 或连接被拒通道、端口ping 主站;nc -vz 主站IP 2404;问主站侧白名单加没加你这个源 IP
TCP 通了,主站一直“链路未建立”应用层抓包看 0x07 出去没有、0x0B 回来没有;查主站前置给这个公共地址开通了没
总召有帧,遥测全 0 或带 IV/OV点表、时标对公共地址、IOA、类型标识三样;看终端本地显示值是不是本来就 0;查对时

一段能直接跑的诊断脚本

import socket, sys
HOST, PORT, CA = "10.1.1.1", 2404, 1   # 主站IP示例以现场实测为准 104端口 公共地址须与点表一致
s = socket.socket(); s.settimeout(10); s.connect((HOST, PORT))     # 通道层 TCP
s.sendall(bytes([0x68, 0x04, 0x07, 0, 0, 0]))                      # STARTDT act U帧
r = s.recv(64)
print("STARTDT", len(r), r[:8].hex(" "))
if len(r) < 6 or r[2] != 0x0B:            # 0x0B = STARTDT con
    print("链路未建立 查主站前置给本公共地址开通没"); sys.exit(1)
asdu = bytes([0x64, 0x01, 0x06, 0x00, CA & 0xFF, CA >> 8, 0, 0, 0, 0x14])  # 总召TI=100 激活 站总召
s.sendall(bytes([0x68, 4 + len(asdu), 0, 0, 0, 0]) + asdu)
d = b""
try:
    while len(d) <= 60:
        d += s.recv(4096)
except socket.timeout:
    pass
print("总召回帧", len(d), d[:32].hex(" "))

它只验链路和总召通不通,不替代点表核对。

下一步

去现场前先在办公室跑一遍这段脚本,把 2404、公共地址、点表三样填进一张纸。到现场照着上面的顺序自查,先跑脚本再动设备;脚本都跑不通,就别拆柜子。

📞一键拨打138 6408 0101 · 微信同号