定义
DNP3(Distributed Network Protocol 3)是电力行业广泛使用的 SCADA 通信协议,支持遥测、遥信、遥控、遥调及带时间戳的事件。适用于变电站、配电自动化、RTU 与主站通信。中国电力行业常用 IEC 104,北美及部分地区多采用 DNP3。达希 RTU 支持 DNP3 协议接入电力调度系统。
协议特性
DNP3 采用分层协议栈,支持串口(RS232/RS485)和 TCP/IP 传输。数据对象包括:二进制输入(遥信)、二进制输出(遥控)、模拟输入(遥测)、模拟输出(遥调)、计数器、带时间戳事件等。支持多主站、多从站,具备数据完整性校验、时间同步、事件缓冲、主动上报等能力。适用于电力 SCADA、配电自动化、水处理、油气管道等对可靠性要求高的行业。
与 IEC 104 对比
IEC 104 基于 IEC 60870-5-104,是 IEC 61850 之前的电力调度主流协议,在中国、欧洲广泛采用;DNP3 在北美及部分亚太地区占主导。两者功能类似,均支持四遥,但帧格式、对象模型不同。选型时需根据主站系统、区域习惯而定。部分 RTU 同时支持 DNP3 与 IEC 104,满足不同项目需求。
应用场景
DNP3 用于变电站 RTU 与调度主站通信;配电自动化中 FTU、DTU 与主站通信;新能源场站监控;水处理、油气管道 SCADA。工业网关、协议转换器可将 DNP3 数据转换为 Modbus、OPC UA 等,接入第三方监控平台或云平台。
事件缓冲与非请求上报
DNP3 把静态量和事件量分开。静态量是当前断面,事件量是带时标的变化。主站只轮询静态量时,两次轮询之间的开关变位会丢失;只靠非请求上报而不做完整性召唤时,主站重启后没有初始断面。事件分等级,不同等级可以有不同的确认和缓冲深度。缓冲满了以后的行为必须事先约定,是覆盖最旧事件还是拒绝新事件,两种做法都会在事故后留下缺口,只是缺口的位置不同。时间同步要在事件开始大量产生之前完成,否则时标是从站本地的自由时钟,顺序记录无法与其他站对齐。
使用条件包括:主站与从站的点号、对象组和变体一致,链路层确认和传输层分片长度匹配。串口和网络都可以承载,但超时和重发次数不能照搬。非请求上报要打开主站的接收窗口,并限制突发流量,避免多台从站同时把事件推向同一主站。控制命令应带选择后执行的两步,直接操作只适合已经评估过误动后果的点。双主站同时控制同一个输出时,要规定哪个主站拥有控制权。
点表类别和时标
点表错一位时,通信仍然成功,遥信会显示成相邻间隔的状态。对象变体选错,模拟量的比例和编码方式变了,数值放大或变成负数,品质位却是好的。把事件计数当成工程值、把静态量的相对时间当成绝对时标,都会让历史曲线在整点处跳变。从站重启后事件缓冲清空,主站若没有收到重启指示,会以为这段时间没有变位。
未请求响应在链路上丢了而应用层未确认时,从站会重发,主站必须按事件序号去重,否则一条告警变成多条。冻结计数器没有按结算周期读取,电度量会在从站回绕后出现缺口。安全认证开启后,旧主站不带认证信息会被拒绝,现象是链路能连通、应用层无数据,不要误判成点表为空。与其他协议转换时,应保留品质位和时标,只转数值会把无效测量写成正常值。新增间隔后要同时改主站点表和从站映射,只改一侧会出现“有报文无点”或“有点无报文”。
重启指示与去重
从站重启后事件缓冲清空,若主站没有收到重启指示,就会以为中间没有变位。完整性召唤应在重启和通信恢复之后立刻做,用新的断面覆盖内存里的旧状态。事件重发靠序号去重,同一序号重复到达只能更新一次告警,不能变成多条工单。序号回绕要按宽度处理,简单的“新序号必须更大”会在回绕时把新事件丢掉。
控制权在双主站之间要互斥。检修主站忘记释放控制时,调度主站的选择会失败,现场却看到两个主站都显示已连接。冻结计数器按结算周期读,读得太稀会在回绕处出现缺口。品质位随数值一起转发,无效测量不能写成正常值。点表变更同时改主站和从站,并保留旧点号一段时间只读,避免切换当班时指错间隔。
静态量轮询的间隔再短,也代替不了事件缓冲里已经溢出的变位。溢出之后应在主站上留下“事件可能丢失”的标记,而不是显示一条平静的曲线。时标的时间基准要写明是本地时间还是协调世界时,混用会使顺序记录在换日时错位。控制的选择超时后,从站应拒绝随后迟到的执行,主站却可能仍在等待。模拟量死区设得过大,缓慢越限不会生成事件,画面靠静态轮询才偶尔跳一下。死区设得过小,噪声会把事件缓冲打满,真正的开关变位被挤掉。点表版本和从站程序版本一起归档,只保存点号不保存变体,更换装置后比例就会悄悄改变。